From aaa008ecde8399245d1a785485911e1478dbb340 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Wed, 13 Mar 2024 08:00:56 -0700 Subject: [PATCH 1/3] (fix) raising No healthy deployment --- litellm/router.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/litellm/router.py b/litellm/router.py index c6a2bc8fe..45d34f2cd 100644 --- a/litellm/router.py +++ b/litellm/router.py @@ -2204,7 +2204,7 @@ class Router: f"healthy deployments: length {len(healthy_deployments)} {healthy_deployments}" ) if len(healthy_deployments) == 0: - raise ValueError("No models available") + raise ValueError(f"No healthy deployment available, passed model={model}") if litellm.model_alias_map and model in litellm.model_alias_map: model = litellm.model_alias_map[ model @@ -2275,7 +2275,9 @@ class Router: verbose_router_logger.info( f"get_available_deployment for model: {model}, No deployment available" ) - raise ValueError("No models available.") + raise ValueError( + f"No deployments available for selected model, passed model={model}" + ) verbose_router_logger.info( f"get_available_deployment for model: {model}, Selected deployment: {self.print_deployment(deployment)} for model: {model}" ) From 3aeada232e4278f7ea431a78acbc914a069dab54 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Wed, 13 Mar 2024 08:03:28 -0700 Subject: [PATCH 2/3] (fix) return 429 error --- litellm/proxy/proxy_server.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index b5b68df0c..aa1ce76fe 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -171,6 +171,15 @@ class ProxyException(Exception): self.param = param self.code = code + # rules for proxyExceptions + # Litellm router.py returns "No healthy deployment available" when there are no deployments available + # Should map to 429 errors https://github.com/BerriAI/litellm/issues/2487 + if ( + "No healthy deployment available" in self.message + or "No deployments available" in self.message + ): + self.code = 429 + def to_dict(self) -> dict: """Converts the ProxyException instance to a dictionary.""" return { @@ -2907,10 +2916,7 @@ async def chat_completion( param=getattr(e, "param", "None"), code=getattr(e, "status_code", status.HTTP_400_BAD_REQUEST), ) - else: - error_traceback = traceback.format_exc() - error_msg = f"{str(e)}\n\n{error_traceback}" - + error_msg = f"{str(e)}" raise ProxyException( message=getattr(e, "message", error_msg), type=getattr(e, "type", "None"), From 4c526ade27ec6404257b5cbe28a0cd9c8d36b76d Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Wed, 13 Mar 2024 08:05:32 -0700 Subject: [PATCH 3/3] (fix) errors fro litellm proxy --- litellm/proxy/proxy_server.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index aa1ce76fe..4ce29e7ee 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -3099,8 +3099,7 @@ async def embeddings( code=getattr(e, "status_code", status.HTTP_400_BAD_REQUEST), ) else: - error_traceback = traceback.format_exc() - error_msg = f"{str(e)}\n\n{error_traceback}" + error_msg = f"{str(e)}" raise ProxyException( message=getattr(e, "message", error_msg), type=getattr(e, "type", "None"), @@ -3250,8 +3249,7 @@ async def image_generation( code=getattr(e, "status_code", status.HTTP_400_BAD_REQUEST), ) else: - error_traceback = traceback.format_exc() - error_msg = f"{str(e)}\n\n{error_traceback}" + error_msg = f"{str(e)}" raise ProxyException( message=getattr(e, "message", error_msg), type=getattr(e, "type", "None"), @@ -3414,7 +3412,7 @@ async def audio_transcriptions( ) else: error_traceback = traceback.format_exc() - error_msg = f"{str(e)}\n\n{error_traceback}" + error_msg = f"{str(e)}" raise ProxyException( message=getattr(e, "message", error_msg), type=getattr(e, "type", "None"), @@ -3567,7 +3565,7 @@ async def moderations( ) else: error_traceback = traceback.format_exc() - error_msg = f"{str(e)}\n\n{error_traceback}" + error_msg = f"{str(e)}" raise ProxyException( message=getattr(e, "message", error_msg), type=getattr(e, "type", "None"),