From 979575a2a6d9d4338ad46da81360c687cd23c1d0 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Fri, 22 Dec 2023 12:30:36 +0530 Subject: [PATCH] fix(proxy_server.py): handle misformatted json body in chat completion request --- litellm/proxy/proxy_server.py | 7 ++++++- litellm/router.py | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index e6ec64823..51e3fa104 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -962,7 +962,12 @@ async def chat_completion(request: Request, model: Optional[str] = None, user_ap global general_settings, user_debug, proxy_logging_obj try: data = {} - data = await request.json() # type: ignore + body = await request.body() + body_str = body.decode() + try: + data = ast.literal_eval(body_str) + except: + data = json.loads(body_str) # Include original request and headers in the data data["proxy_server_request"] = { diff --git a/litellm/router.py b/litellm/router.py index 4ee067e2f..3e2155ab2 100644 --- a/litellm/router.py +++ b/litellm/router.py @@ -740,7 +740,7 @@ class Router: model_name = kwargs.get('model', None) # i.e. gpt35turbo custom_llm_provider = kwargs.get("litellm_params", {}).get('custom_llm_provider', None) # i.e. azure metadata = kwargs.get("litellm_params", {}).get('metadata', None) - deployment_id = kwargs.get("litellm_params", {}).get("model_info").get("id") + deployment_id = kwargs.get("litellm_params", {}).get("model_info", {}).get("id", None) self._set_cooldown_deployments(deployment_id) # setting deployment_id in cooldown deployments if metadata: deployment = metadata.get("deployment", None) @@ -779,10 +779,12 @@ class Router: raise e def _set_cooldown_deployments(self, - deployment: str): + deployment: Optional[str]=None): """ Add a model to the list of models being cooled down for that minute, if it exceeds the allowed fails / minute """ + if deployment is None: + return current_minute = datetime.now().strftime("%H-%M") # get current fails for deployment