From e8b6d7caa29063b06f29808c9bfa4d47b9cafda3 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Fri, 28 Feb 2025 09:26:08 -0800 Subject: [PATCH] show status on ui --- litellm/proxy/_types.py | 2 ++ .../proxy/hooks/proxy_track_cost_callback.py | 24 ++++++++++++++++++- .../spend_tracking/spend_tracking_utils.py | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/litellm/proxy/_types.py b/litellm/proxy/_types.py index d2f20e56cff..b66019ace10 100644 --- a/litellm/proxy/_types.py +++ b/litellm/proxy/_types.py @@ -26,6 +26,7 @@ from litellm.types.utils import ( ModelResponse, ProviderField, StandardCallbackDynamicParams, + StandardLoggingPayloadStatus, StandardPassThroughResponseObject, TextCompletionResponse, ) @@ -1854,6 +1855,7 @@ class SpendLogsMetadata(TypedDict): ] # special param to log k,v pairs to spendlogs for a call requester_ip_address: Optional[str] applied_guardrails: Optional[List[str]] + status: StandardLoggingPayloadStatus class SpendLogsPayload(TypedDict): diff --git a/litellm/proxy/hooks/proxy_track_cost_callback.py b/litellm/proxy/hooks/proxy_track_cost_callback.py index 88ceef1d06b..3ed36cce29b 100644 --- a/litellm/proxy/hooks/proxy_track_cost_callback.py +++ b/litellm/proxy/hooks/proxy_track_cost_callback.py @@ -1,4 +1,5 @@ import asyncio +import json import traceback from datetime import datetime from typing import Any, Optional, Union, cast @@ -12,7 +13,10 @@ from litellm.litellm_core_utils.core_helpers import ( ) from litellm.proxy._types import UserAPIKeyAuth from litellm.proxy.auth.auth_checks import log_db_metrics -from litellm.types.utils import StandardLoggingPayload +from litellm.types.utils import ( + StandardLoggingPayload, + StandardLoggingUserAPIKeyMetadata, +) from litellm.utils import get_end_user_id_for_cost_tracking @@ -30,6 +34,24 @@ class _ProxyDBLogger(CustomLogger): ): from litellm.proxy.proxy_server import update_database + _metadata = dict( + StandardLoggingUserAPIKeyMetadata( + user_api_key_hash=user_api_key_dict.api_key, + user_api_key_alias=user_api_key_dict.key_alias, + user_api_key_user_email=user_api_key_dict.user_email, + user_api_key_user_id=user_api_key_dict.user_id, + user_api_key_team_id=user_api_key_dict.team_id, + user_api_key_org_id=user_api_key_dict.org_id, + user_api_key_team_alias=user_api_key_dict.team_alias, + user_api_key_end_user_id=user_api_key_dict.end_user_id, + ) + ) + _metadata["user_api_key"] = user_api_key_dict.api_key + _metadata["status"] = "failure" + request_data["litellm_params"] = {} + request_data["litellm_params"]["metadata"] = _metadata + # print("failure kwargs=", json.dumps(request_data, indent=4, default=str)) + await update_database( token=user_api_key_dict.api_key, response_cost=0.0, diff --git a/litellm/proxy/spend_tracking/spend_tracking_utils.py b/litellm/proxy/spend_tracking/spend_tracking_utils.py index fad310e763d..eba7b3a4f63 100644 --- a/litellm/proxy/spend_tracking/spend_tracking_utils.py +++ b/litellm/proxy/spend_tracking/spend_tracking_utils.py @@ -47,6 +47,7 @@ def _get_spend_logs_metadata( requester_ip_address=None, additional_usage_values=None, applied_guardrails=None, + status=None or "success", ) verbose_proxy_logger.debug( "getting payload for SpendLogs, available keys in metadata: "