fix(router): preserve caller fallback configuration

This commit is contained in:
songjianglin 2026-10-08 00:41:30 +08:00
parent 0dc23406eb
commit 714dbda283
2 changed files with 18 additions and 1 deletions

View file

@ -1104,7 +1104,7 @@ class Router:
self.validate_fallbacks(fallback_param=_fallbacks)
### set fallbacks
self.fallbacks = _fallbacks
self.fallbacks = list(_fallbacks) if _fallbacks is not None else None
if default_fallbacks is not None or litellm.default_fallbacks is not None:
_fallbacks = default_fallbacks or litellm.default_fallbacks

View file

@ -1922,6 +1922,23 @@ def test_has_default_fallbacks(model_list, has_default_fallbacks, expected_resul
assert router._has_default_fallbacks() is expected_result
def test_default_fallbacks_do_not_mutate_input_fallbacks(model_list):
fallbacks = [{"gpt-5-mini": ["gpt-5.5"]}]
first_router = Router(model_list=model_list, fallbacks=fallbacks, default_fallbacks=["gpt-5.5"])
second_router = Router(model_list=model_list, fallbacks=fallbacks, default_fallbacks=["gpt-image-1"])
assert fallbacks == [{"gpt-5-mini": ["gpt-5.5"]}]
assert first_router.fallbacks == [
{"gpt-5-mini": ["gpt-5.5"]},
{"*": ["gpt-5.5"]},
]
assert second_router.fallbacks == [
{"gpt-5-mini": ["gpt-5.5"]},
{"*": ["gpt-image-1"]},
]
def test_add_optional_pre_call_checks(model_list):
router = Router(model_list=model_list)