forked from phoenix/litellm-mirror
(fix) show global spend on UI
This commit is contained in:
parent
be6fb579df
commit
87dd3f1235
1 changed files with 45 additions and 0 deletions
|
@ -863,6 +863,7 @@ async def user_api_key_auth(
|
||||||
"/v2/key/info",
|
"/v2/key/info",
|
||||||
"/models",
|
"/models",
|
||||||
"/v1/models",
|
"/v1/models",
|
||||||
|
"/global/spend",
|
||||||
"/global/spend/logs",
|
"/global/spend/logs",
|
||||||
"/global/spend/keys",
|
"/global/spend/keys",
|
||||||
"/global/spend/models",
|
"/global/spend/models",
|
||||||
|
@ -4567,6 +4568,50 @@ async def global_spend_logs(
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
@router.get(
|
||||||
|
"/global/spend",
|
||||||
|
tags=["Budget & Spend Tracking"],
|
||||||
|
dependencies=[Depends(user_api_key_auth)],
|
||||||
|
)
|
||||||
|
async def global_spend():
|
||||||
|
"""
|
||||||
|
[BETA] This is a beta endpoint. It will change.
|
||||||
|
|
||||||
|
View total spend across all proxy keys
|
||||||
|
"""
|
||||||
|
global prisma_client
|
||||||
|
total_spend = 0.0
|
||||||
|
total_proxy_budget = 0.0
|
||||||
|
|
||||||
|
if prisma_client is None:
|
||||||
|
raise HTTPException(status_code=500, detail={"error": "No db connected"})
|
||||||
|
sql_query = f"""
|
||||||
|
SELECT SUM(spend) AS total_spend
|
||||||
|
FROM "LiteLLM_VerificationToken";
|
||||||
|
;
|
||||||
|
"""
|
||||||
|
response = await prisma_client.db.query_raw(query=sql_query)
|
||||||
|
if response is not None:
|
||||||
|
if isinstance(response, list) and len(response) > 0:
|
||||||
|
total_spend = response[0].get("total_spend", 0.0)
|
||||||
|
|
||||||
|
sql_query = f"""
|
||||||
|
SELECT
|
||||||
|
*
|
||||||
|
FROM
|
||||||
|
"LiteLLM_UserTable"
|
||||||
|
WHERE
|
||||||
|
user_id = 'litellm-proxy-budget';
|
||||||
|
"""
|
||||||
|
user_response = await prisma_client.db.query_raw(query=sql_query)
|
||||||
|
|
||||||
|
if user_response is not None:
|
||||||
|
if isinstance(user_response, list) and len(user_response) > 0:
|
||||||
|
total_proxy_budget = user_response[0].get("max_budget", 0.0)
|
||||||
|
|
||||||
|
return {"spend": total_spend, "max_budget": total_proxy_budget}
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
@router.get(
|
||||||
"/global/spend/keys",
|
"/global/spend/keys",
|
||||||
tags=["Budget & Spend Tracking"],
|
tags=["Budget & Spend Tracking"],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue