fix(caching): read the router's model group before the caller's metadata

This commit is contained in:
mateo-berri 2026-10-28 06:04:35 -07:00
parent b641a0d9b7
commit b6a7f8dcf6
2 changed files with 13 additions and 11 deletions

View file

@ -456,8 +456,10 @@ class Cache:
"""
litellm_params: Final[dict] = kwargs.get("litellm_params", {}) or {}
metadata_sources: Final[tuple[dict, ...]] = (
kwargs.get("litellm_metadata" if "litellm_metadata" in kwargs else "metadata") or {},
litellm_params.get("litellm_metadata") or litellm_params.get("metadata") or {},
kwargs.get("litellm_metadata") or {},
kwargs.get("metadata") or {},
litellm_params.get("litellm_metadata") or {},
litellm_params.get("metadata") or {},
)
model_group: Final[str | None] = next(
(source["model_group"] for source in metadata_sources if source.get("model_group")), None

View file

@ -278,7 +278,7 @@ def test_get_model_param_value_reads_model_group_from_litellm_metadata():
)
def test_get_model_param_value_ignores_a_caller_model_group_outside_the_router_bucket():
def test_get_model_param_value_prefers_the_router_group_over_a_caller_model_group():
cache = Cache()
request = {"model": "openai/gpt-5.6", "input": "search this text"}
@ -288,23 +288,23 @@ def test_get_model_param_value_ignores_a_caller_model_group_outside_the_router_b
)
== "caller"
)
assert (
cache._get_model_param_value({**request, "metadata": {"model_group": "target"}, "litellm_metadata": {}})
== "openai/gpt-5.6"
)
assert (
cache._get_model_param_value(
{
**request,
"metadata": {"model_group": "target"},
"litellm_metadata": {"user_api_key": "hashed"},
"litellm_params": {
"metadata": {"model_group": "target"},
"litellm_metadata": {"user_api_key": "hashed"},
"litellm_metadata": {"model_group": "caller"},
},
}
)
== "openai/gpt-5.6"
== "caller"
)
assert (
cache._get_model_param_value(
{**request, "metadata": {"model_group": "group-a"}, "litellm_metadata": {"attempted_retries": 0}}
)
== "group-a"
)
def test_preset_cache_key():