From 218ba0f4704ddc5ff15ecb6f32e5bae0e50d9969 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 7 Aug 2024 14:20:22 -0700 Subject: [PATCH] support provider wildcard routing --- litellm/proxy/proxy_server.py | 40 ++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 29dc3813c..299b390b9 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -3007,7 +3007,10 @@ async def chat_completion( elif ( llm_router is not None and data["model"] not in router_model_names - and llm_router.default_deployment is not None + and ( + llm_router.default_deployment is not None + or len(llm_router.provider_default_deployments) > 0 + ) ): # model in router deployments, calling a specific deployment on the router tasks.append(llm_router.acompletion(**data)) elif user_model is not None: # `litellm --model ` @@ -3275,7 +3278,10 @@ async def completion( elif ( llm_router is not None and data["model"] not in router_model_names - and llm_router.default_deployment is not None + and ( + llm_router.default_deployment is not None + or len(llm_router.provider_default_deployments) > 0 + ) ): # model in router deployments, calling a specific deployment on the router llm_response = asyncio.create_task(llm_router.atext_completion(**data)) elif user_model is not None: # `litellm --model ` @@ -3541,7 +3547,10 @@ async def embeddings( elif ( llm_router is not None and data["model"] not in router_model_names - and llm_router.default_deployment is not None + and ( + llm_router.default_deployment is not None + or len(llm_router.provider_default_deployments) > 0 + ) ): # model in router deployments, calling a specific deployment on the router tasks.append(llm_router.aembedding(**data)) elif user_model is not None: # `litellm --model ` @@ -3708,7 +3717,10 @@ async def image_generation( elif ( llm_router is not None and data["model"] not in router_model_names - and llm_router.default_deployment is not None + and ( + llm_router.default_deployment is not None + or len(llm_router.provider_default_deployments) > 0 + ) ): # model in router deployments, calling a specific deployment on the router response = await llm_router.aimage_generation(**data) elif user_model is not None: # `litellm --model ` @@ -3850,7 +3862,10 @@ async def audio_speech( elif ( llm_router is not None and data["model"] not in router_model_names - and llm_router.default_deployment is not None + and ( + llm_router.default_deployment is not None + or len(llm_router.provider_default_deployments) > 0 + ) ): # model in router deployments, calling a specific deployment on the router response = await llm_router.aspeech(**data) elif user_model is not None: # `litellm --model ` @@ -4020,7 +4035,10 @@ async def audio_transcriptions( elif ( llm_router is not None and data["model"] not in router_model_names - and llm_router.default_deployment is not None + and ( + llm_router.default_deployment is not None + or len(llm_router.provider_default_deployments) > 0 + ) ): # model in router deployments, calling a specific deployment on the router response = await llm_router.atranscription(**data) elif user_model is not None: # `litellm --model ` @@ -5270,7 +5288,10 @@ async def moderations( elif ( llm_router is not None and data.get("model") not in router_model_names - and llm_router.default_deployment is not None + and ( + llm_router.default_deployment is not None + or len(llm_router.provider_default_deployments) > 0 + ) ): # model in router deployments, calling a specific deployment on the router response = await llm_router.amoderation(**data) elif user_model is not None: # `litellm --model ` @@ -5421,7 +5442,10 @@ async def anthropic_response( elif ( llm_router is not None and data["model"] not in router_model_names - and llm_router.default_deployment is not None + and ( + llm_router.default_deployment is not None + or len(llm_router.provider_default_deployments) > 0 + ) ): # model in router deployments, calling a specific deployment on the router llm_response = asyncio.create_task(llm_router.aadapter_completion(**data)) elif user_model is not None: # `litellm --model `