From 532af66bbdb2a63178c7c5fe391beef424d2d130 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Thu, 20 Mar 2025 20:19:52 -0700 Subject: [PATCH] feat(pass_through_endpoints.py): return api base on pass-through exception enables easy debugging on backend api errors --- .../pass_through_endpoints.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/litellm/proxy/pass_through_endpoints/pass_through_endpoints.py b/litellm/proxy/pass_through_endpoints/pass_through_endpoints.py index 63398e553b..a13b0dc216 100644 --- a/litellm/proxy/pass_through_endpoints/pass_through_endpoints.py +++ b/litellm/proxy/pass_through_endpoints/pass_through_endpoints.py @@ -1,6 +1,7 @@ import ast import asyncio import json +import uuid from base64 import b64encode from datetime import datetime from typing import Dict, List, Optional, Union @@ -369,8 +370,9 @@ async def pass_through_request( # noqa: PLR0915 query_params: Optional[dict] = None, stream: Optional[bool] = None, ): + litellm_call_id = str(uuid.uuid4()) + url: Optional[httpx.URL] = None try: - import uuid from litellm.litellm_core_utils.litellm_logging import Logging from litellm.proxy.proxy_server import proxy_logging_obj @@ -420,8 +422,6 @@ async def pass_through_request( # noqa: PLR0915 ) async_client = async_client_obj.client - litellm_call_id = str(uuid.uuid4()) - # create logging object start_time = datetime.now() logging_obj = Logging( @@ -600,6 +600,7 @@ async def pass_through_request( # noqa: PLR0915 ) ) + ## CUSTOM HEADERS - `x-litellm-*` custom_headers = ProxyBaseLLMRequestProcessing.get_custom_headers( user_api_key_dict=user_api_key_dict, call_id=litellm_call_id, @@ -617,6 +618,13 @@ async def pass_through_request( # noqa: PLR0915 ), ) except Exception as e: + custom_headers = ProxyBaseLLMRequestProcessing.get_custom_headers( + user_api_key_dict=user_api_key_dict, + call_id=litellm_call_id, + model_id=None, + cache_key=None, + api_base=str(url._uri_reference) if url else None, + ) verbose_proxy_logger.exception( "litellm.proxy.proxy_server.pass_through_endpoint(): Exception occured - {}".format( str(e) @@ -628,6 +636,7 @@ async def pass_through_request( # noqa: PLR0915 type=getattr(e, "type", "None"), param=getattr(e, "param", "None"), code=getattr(e, "status_code", status.HTTP_400_BAD_REQUEST), + headers=custom_headers, ) else: error_msg = f"{str(e)}" @@ -636,6 +645,7 @@ async def pass_through_request( # noqa: PLR0915 type=getattr(e, "type", "None"), param=getattr(e, "param", "None"), code=getattr(e, "status_code", 500), + headers=custom_headers, )