diff --git a/litellm/router.py b/litellm/router.py index 6e8127110cc..19d88d74dbc 100644 --- a/litellm/router.py +++ b/litellm/router.py @@ -1850,7 +1850,7 @@ class Router: kwargs["original_function"] = self._acompletion self._update_kwargs_before_fallbacks(model=model, kwargs=kwargs) - request_priority = kwargs.get("priority") or self.default_priority + request_priority = kwargs.get("priority", self.default_priority) start_time = time.time() _is_prompt_management_model = self._is_prompt_management_model(model) diff --git a/tests/test_litellm/test_router.py b/tests/test_litellm/test_router.py index 9c4d83ff7ea..6de2cdeb3ff 100644 --- a/tests/test_litellm/test_router.py +++ b/tests/test_litellm/test_router.py @@ -5304,3 +5304,49 @@ class TestRouterRequestTimeoutPropagation: ) == 60 ) + + +def _make_priority_router(default_priority): + router = litellm.Router( + model_list=[ + { + "model_name": "gpt-3.5-turbo", + "litellm_params": {"model": "gpt-3.5-turbo"}, + } + ], + default_priority=default_priority, + ) + router.schedule_acompletion = AsyncMock(return_value="scheduled") + router.async_function_with_fallbacks = AsyncMock(return_value="fallbacks") + return router + + +@pytest.mark.asyncio +async def test_acompletion_honors_explicit_priority_zero(): + """priority=0 must route through the scheduler, not be dropped by an `or` default.""" + router = _make_priority_router(default_priority=None) + + result = await router.acompletion( + model="gpt-3.5-turbo", + messages=[{"role": "user", "content": "hi"}], + priority=0, + ) + + assert result == "scheduled" + router.schedule_acompletion.assert_awaited_once() + router.async_function_with_fallbacks.assert_not_awaited() + assert router.schedule_acompletion.await_args.kwargs["priority"] == 0 + + +@pytest.mark.asyncio +async def test_acompletion_missing_priority_falls_back_to_default(): + router = _make_priority_router(default_priority=None) + + result = await router.acompletion( + model="gpt-3.5-turbo", + messages=[{"role": "user", "content": "hi"}], + ) + + assert result == "fallbacks" + router.async_function_with_fallbacks.assert_awaited_once() + router.schedule_acompletion.assert_not_awaited()