feat(pass_through_endpoints.py): return api base on pass-through exception

enables easy debugging on backend api errors
This commit is contained in:
Krrish Dholakia 2025-03-20 20:19:52 -07:00
parent 943e036851
commit 532af66bbd

View file

@ -1,6 +1,7 @@
import ast import ast
import asyncio import asyncio
import json import json
import uuid
from base64 import b64encode from base64 import b64encode
from datetime import datetime from datetime import datetime
from typing import Dict, List, Optional, Union from typing import Dict, List, Optional, Union
@ -369,8 +370,9 @@ async def pass_through_request( # noqa: PLR0915
query_params: Optional[dict] = None, query_params: Optional[dict] = None,
stream: Optional[bool] = None, stream: Optional[bool] = None,
): ):
litellm_call_id = str(uuid.uuid4())
url: Optional[httpx.URL] = None
try: try:
import uuid
from litellm.litellm_core_utils.litellm_logging import Logging from litellm.litellm_core_utils.litellm_logging import Logging
from litellm.proxy.proxy_server import proxy_logging_obj 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 async_client = async_client_obj.client
litellm_call_id = str(uuid.uuid4())
# create logging object # create logging object
start_time = datetime.now() start_time = datetime.now()
logging_obj = Logging( logging_obj = Logging(
@ -600,6 +600,7 @@ async def pass_through_request( # noqa: PLR0915
) )
) )
## CUSTOM HEADERS - `x-litellm-*`
custom_headers = ProxyBaseLLMRequestProcessing.get_custom_headers( custom_headers = ProxyBaseLLMRequestProcessing.get_custom_headers(
user_api_key_dict=user_api_key_dict, user_api_key_dict=user_api_key_dict,
call_id=litellm_call_id, call_id=litellm_call_id,
@ -617,6 +618,13 @@ async def pass_through_request( # noqa: PLR0915
), ),
) )
except Exception as e: 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( verbose_proxy_logger.exception(
"litellm.proxy.proxy_server.pass_through_endpoint(): Exception occured - {}".format( "litellm.proxy.proxy_server.pass_through_endpoint(): Exception occured - {}".format(
str(e) str(e)
@ -628,6 +636,7 @@ async def pass_through_request( # noqa: PLR0915
type=getattr(e, "type", "None"), type=getattr(e, "type", "None"),
param=getattr(e, "param", "None"), param=getattr(e, "param", "None"),
code=getattr(e, "status_code", status.HTTP_400_BAD_REQUEST), code=getattr(e, "status_code", status.HTTP_400_BAD_REQUEST),
headers=custom_headers,
) )
else: else:
error_msg = f"{str(e)}" error_msg = f"{str(e)}"
@ -636,6 +645,7 @@ async def pass_through_request( # noqa: PLR0915
type=getattr(e, "type", "None"), type=getattr(e, "type", "None"),
param=getattr(e, "param", "None"), param=getattr(e, "param", "None"),
code=getattr(e, "status_code", 500), code=getattr(e, "status_code", 500),
headers=custom_headers,
) )