feat(proxy/utils.py): enable end_user + team id tracking in spend logs

allows separating proxy owner vs. end user in the spen
d logs
This commit is contained in:
Krrish Dholakia 2024-02-29 16:04:52 -08:00
parent d9e272942b
commit c60fa9c84d
5 changed files with 18 additions and 6 deletions

View file

@ -1152,9 +1152,9 @@ async def update_database(
payload["spend"] = response_cost
if prisma_client is not None:
await prisma_client.insert_data(data=payload, table_name="spend")
elif custom_db_client is not None:
await custom_db_client.insert_data(payload, table_name="spend")
except Exception as e:
verbose_proxy_logger.info(f"Update Spend Logs DB failed to execute")

View file

@ -97,8 +97,9 @@ model LiteLLM_SpendLogs {
cache_hit String @default("")
cache_key String @default("")
request_tags Json @default("[]")
team_id String?
end_user String?
}
// Beta - allow team members to request access to a model
model LiteLLM_UserNotifications {
request_id String @unique

View file

@ -1528,7 +1528,12 @@ def get_logging_payload(kwargs, response_obj, start_time, end_time):
"startTime": start_time,
"endTime": end_time,
"model": kwargs.get("model", ""),
"user": kwargs.get("user", ""),
"user": kwargs.get("litellm_params", {})
.get("metadata", {})
.get("user_api_key_user_id", ""),
"team_id": kwargs.get("litellm_params", {})
.get("metadata", {})
.get("user_api_key_team_id", ""),
"metadata": metadata,
"cache_key": cache_key,
"spend": kwargs.get("response_cost", 0),
@ -1536,6 +1541,7 @@ def get_logging_payload(kwargs, response_obj, start_time, end_time):
"prompt_tokens": usage.get("prompt_tokens", 0),
"completion_tokens": usage.get("completion_tokens", 0),
"request_tags": metadata.get("tags", []),
"end_user": kwargs.get("user", ""),
}
verbose_proxy_logger.debug(f"SpendTable: created payload - payload: {payload}\n\n")

View file

@ -97,6 +97,8 @@ model LiteLLM_SpendLogs {
cache_hit String @default("")
cache_key String @default("")
request_tags Json @default("[]")
team_id String?
end_user String?
}
// Beta - allow team members to request access to a model

View file

@ -138,10 +138,13 @@ const AdminPanel: React.FC<AdminPanelProps> = ({
console.log(`admins: ${admins?.length}`);
return (
<div className="w-full m-2">
<Title level={4}>Proxy Admins</Title>
<Title level={4}>Restricted Access</Title>
<Paragraph>
Add other people to just view global spend. They cannot create teams or
grant users access to new models.
Add other people to just view spend. They cannot create keys, teams or
grant users access to new models.{" "}
<a href="https://docs.litellm.ai/docs/proxy/ui#restrict-ui-access">
Requires SSO Setup
</a>
</Paragraph>
<Grid numItems={1} className="gap-2 p-0 w-full">
<Col numColSpan={1}>