(feat) proxy key/generate pass metadata in requests

This commit is contained in:
ishaan-jaff 2023-12-20 09:57:34 +05:30
parent 7ad21de441
commit 683a1ee979

View file

@ -616,7 +616,7 @@ def load_router_config(router: Optional[litellm.Router], config_file_path: str):
router = litellm.Router(**router_params) # type:ignore
return router, model_list, general_settings
async def generate_key_helper_fn(duration: Optional[str], models: list, aliases: dict, config: dict, spend: float, token: Optional[str]=None, user_id: Optional[str]=None, max_parallel_requests: Optional[int]=None):
async def generate_key_helper_fn(duration: Optional[str], models: list, aliases: dict, config: dict, spend: float, token: Optional[str]=None, user_id: Optional[str]=None, max_parallel_requests: Optional[int]=None, metadata: Optional[dict] = {}):
global prisma_client
if prisma_client is None:
@ -653,6 +653,7 @@ async def generate_key_helper_fn(duration: Optional[str], models: list, aliases:
aliases_json = json.dumps(aliases)
config_json = json.dumps(config)
metadata_json = json.dumps(metadata)
user_id = user_id or str(uuid.uuid4())
try:
# Create a new verification token (you may want to enhance this logic based on your needs)
@ -664,7 +665,8 @@ async def generate_key_helper_fn(duration: Optional[str], models: list, aliases:
"config": config_json,
"spend": spend,
"user_id": user_id,
"max_parallel_requests": max_parallel_requests
"max_parallel_requests": max_parallel_requests,
"metadata": metadata_json
}
new_verification_token = await prisma_client.insert_data(data=verification_token_data)
except Exception as e:
@ -1141,6 +1143,7 @@ async def generate_key_fn(request: Request, data: GenerateKeyRequest, Authorizat
- config: Optional[dict] - any key-specific configs, overrides config in config.yaml
- spend: Optional[int] - Amount spent by key. Default is 0. Will be updated by proxy whenever key is used. https://docs.litellm.ai/docs/proxy/virtual_keys#managing-auth---tracking-spend
- max_parallel_requests: Optional[int] - Rate limit a user based on the number of parallel requests. Raises 429 error, if user's parallel requests > x.
- metadata: Optional[dict] - Metadata for key, store information for key. Example metadata = {"team": "core-infra", "app": "app2", "email": "ishaan@berri.ai" }
Returns:
- key: (str) The generated api key