mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-08 22:21:35 +00:00
fix: handle None values in spend logging transaction keys to prevent TypeError
Sanitize model and custom_llm_provider values in daily spend transaction key construction across all entity types (user, team, org, tag, end_user, agent). When these fields are None (e.g. from embedding requests with null bytes), f-string interpolation produces the literal string "None" which causes inconsistent transaction key grouping. Use .get() with or "" fallback to coerce None to empty string, consistent with the existing sorted() key handling. Fixes #17792
This commit is contained in:
parent
9cd7ad2634
commit
aad1355668
1 changed files with 18 additions and 6 deletions
|
|
@ -1970,7 +1970,9 @@ class DBSpendUpdateWriter:
|
|||
return
|
||||
|
||||
endpoint_str = base_daily_transaction.get("endpoint") or ""
|
||||
daily_transaction_key = f"{payload['user']}_{base_daily_transaction['date']}_{payload['api_key']}_{payload['model']}_{payload['custom_llm_provider']}_{endpoint_str}"
|
||||
model_str = payload.get("model") or ""
|
||||
provider_str = payload.get("custom_llm_provider") or ""
|
||||
daily_transaction_key = f"{payload['user']}_{base_daily_transaction['date']}_{payload['api_key']}_{model_str}_{provider_str}_{endpoint_str}"
|
||||
daily_transaction = DailyUserSpendTransaction(
|
||||
user_id=payload["user"], **base_daily_transaction
|
||||
)
|
||||
|
|
@ -2003,7 +2005,9 @@ class DBSpendUpdateWriter:
|
|||
return
|
||||
|
||||
endpoint_str = base_daily_transaction.get("endpoint") or ""
|
||||
daily_transaction_key = f"{payload['team_id']}_{base_daily_transaction['date']}_{payload['api_key']}_{payload['model']}_{payload['custom_llm_provider']}_{endpoint_str}"
|
||||
model_str = payload.get("model") or ""
|
||||
provider_str = payload.get("custom_llm_provider") or ""
|
||||
daily_transaction_key = f"{payload['team_id']}_{base_daily_transaction['date']}_{payload['api_key']}_{model_str}_{provider_str}_{endpoint_str}"
|
||||
daily_transaction = DailyTeamSpendTransaction(
|
||||
team_id=payload["team_id"], **base_daily_transaction
|
||||
)
|
||||
|
|
@ -2046,7 +2050,9 @@ class DBSpendUpdateWriter:
|
|||
return
|
||||
|
||||
endpoint_str = base_daily_transaction.get("endpoint") or ""
|
||||
daily_transaction_key = f"{org_id}_{base_daily_transaction['date']}_{payload_with_org['api_key']}_{payload_with_org['model']}_{payload_with_org['custom_llm_provider']}_{endpoint_str}"
|
||||
model_str = payload_with_org.get("model") or ""
|
||||
provider_str = payload_with_org.get("custom_llm_provider") or ""
|
||||
daily_transaction_key = f"{org_id}_{base_daily_transaction['date']}_{payload_with_org['api_key']}_{model_str}_{provider_str}_{endpoint_str}"
|
||||
daily_transaction = DailyOrganizationSpendTransaction(
|
||||
organization_id=org_id, **base_daily_transaction
|
||||
)
|
||||
|
|
@ -2089,7 +2095,9 @@ class DBSpendUpdateWriter:
|
|||
return
|
||||
|
||||
endpoint_str = base_daily_transaction.get("endpoint") or ""
|
||||
daily_transaction_key = f"{end_user_id}_{base_daily_transaction['date']}_{payload_with_end_user_id['api_key']}_{payload_with_end_user_id['model']}_{payload_with_end_user_id['custom_llm_provider']}_{endpoint_str}"
|
||||
model_str = payload_with_end_user_id.get("model") or ""
|
||||
provider_str = payload_with_end_user_id.get("custom_llm_provider") or ""
|
||||
daily_transaction_key = f"{end_user_id}_{base_daily_transaction['date']}_{payload_with_end_user_id['api_key']}_{model_str}_{provider_str}_{endpoint_str}"
|
||||
daily_transaction = DailyEndUserSpendTransaction(
|
||||
end_user_id=end_user_id, **base_daily_transaction
|
||||
)
|
||||
|
|
@ -2124,7 +2132,9 @@ class DBSpendUpdateWriter:
|
|||
if base_daily_transaction is None:
|
||||
return
|
||||
endpoint_str = base_daily_transaction.get("endpoint") or ""
|
||||
daily_transaction_key = f"{payload['agent_id']}_{base_daily_transaction['date']}_{payload_with_agent_id['api_key']}_{payload_with_agent_id['model']}_{payload_with_agent_id['custom_llm_provider']}_{endpoint_str}"
|
||||
model_str = payload_with_agent_id.get("model") or ""
|
||||
provider_str = payload_with_agent_id.get("custom_llm_provider") or ""
|
||||
daily_transaction_key = f"{payload['agent_id']}_{base_daily_transaction['date']}_{payload_with_agent_id['api_key']}_{model_str}_{provider_str}_{endpoint_str}"
|
||||
daily_transaction = DailyAgentSpendTransaction(
|
||||
agent_id=payload["agent_id"], **base_daily_transaction
|
||||
)
|
||||
|
|
@ -2165,7 +2175,9 @@ class DBSpendUpdateWriter:
|
|||
raise ValueError(f"Invalid request_tags: {payload['request_tags']}")
|
||||
for tag in request_tags:
|
||||
endpoint_str = base_daily_transaction.get("endpoint") or ""
|
||||
daily_transaction_key = f"{tag}_{base_daily_transaction['date']}_{payload['api_key']}_{payload['model']}_{payload['custom_llm_provider']}_{endpoint_str}"
|
||||
model_str = payload.get("model") or ""
|
||||
provider_str = payload.get("custom_llm_provider") or ""
|
||||
daily_transaction_key = f"{tag}_{base_daily_transaction['date']}_{payload['api_key']}_{model_str}_{provider_str}_{endpoint_str}"
|
||||
daily_transaction = DailyTagSpendTransaction(
|
||||
tag=tag, **base_daily_transaction, request_id=payload["request_id"]
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue