From a09d3e9162ebd7b436a68e92c2b9b6c070fa72d8 Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Sat, 7 Feb 2026 12:30:58 -0800 Subject: [PATCH] _route_user_config_request fix --- litellm/proxy/route_llm_request.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/litellm/proxy/route_llm_request.py b/litellm/proxy/route_llm_request.py index 8884c9595e..ba3d19ef45 100644 --- a/litellm/proxy/route_llm_request.py +++ b/litellm/proxy/route_llm_request.py @@ -12,6 +12,21 @@ else: LitellmRouter = Any +def _route_user_config_request(data: dict, route_type: str): + """Route a request using the user-provided router config.""" + router_config = data.pop("user_config") + + # Filter router_config to only include valid Router.__init__ arguments + # This prevents TypeError when invalid parameters are stored in the database + valid_args = litellm.Router.get_valid_args() + filtered_config = {k: v for k, v in router_config.items() if k in valid_args} + + user_router = litellm.Router(**filtered_config) + ret_val = getattr(user_router, f"{route_type}")(**data) + user_router.discard() + return ret_val + + def _is_a2a_agent_model(model_name: Any) -> bool: """Check if the model name is for an A2A agent (a2a/ prefix).""" return isinstance(model_name, str) and model_name.startswith("a2a/") @@ -211,17 +226,7 @@ async def route_request( return llm_router.abatch_completion(models=models, **data) elif "user_config" in data: - router_config = data.pop("user_config") - - # Filter router_config to only include valid Router.__init__ arguments - # This prevents TypeError when invalid parameters are stored in the database - valid_args = litellm.Router.get_valid_args() - filtered_config = {k: v for k, v in router_config.items() if k in valid_args} - - user_router = litellm.Router(**filtered_config) - ret_val = getattr(user_router, f"{route_type}")(**data) - user_router.discard() - return ret_val + return _route_user_config_request(data, route_type) elif "router_settings_override" in data: # Apply per-request router settings overrides from key/team config