BerriAI/litellm · error · ValueError
QualityRouter: the following available_models are not presen
Error message
QualityRouter: the following available_models are not present in the router's model_list (or are missing routing preferences): {missing} What it means
Raised after indexing the router's model_list when configured available_models were never matched to a deployment (absent from model_list or missing routing preferences); quality routing is configured against models that do not exist.
Source
Thrown at litellm/router_strategy/quality_router/quality_router.py:206
else:
# A Pydantic object of some other shape — coerce via its dict.
prefs = RoutingPreferences(
**(raw_prefs.model_dump() if hasattr(raw_prefs, "model_dump") else dict(raw_prefs))
)
except Exception as e:
raise ValueError(f"QualityRouter: model '{name}' has invalid litellm_routing_preferences: {e}") from e
tier_int = int(prefs.quality_tier)
tier_to_models.setdefault(tier_int, []).append(name)
self._model_keywords[name] = [str(k).lower() for k in prefs.keywords if k]
self._model_quality[name] = tier_int
self._model_cost[name] = self._get_deployment_input_cost(deployment)
self._model_order[name] = prefs.order
seen[name] = True
missing: Final = [name for name, found in seen.items() if not found]
if missing:
raise ValueError(
f"QualityRouter: the following available_models are not present in "
f"the router's model_list (or are missing routing preferences): {missing}"
)
# Sort each tier's model list so `_resolve_model_for_quality_tier`
# (which picks index [0]) honors (order ASC, cost ASC, name ASC).
# Quality is moot within a single tier; keep parity with the keyword
# tiebreak by ordering on (order, cost, name) here.
for models in tier_to_models.values():
models.sort(key=lambda n: (self._order_key(n), self._cost_key(n), n))
return tier_to_models
def _order_key(self, model_name: str) -> float:
"""`order` lookup as a float — unset becomes +inf so explicit wins."""
order: Final = self._model_order.get(model_name)
return float(order) if order is not None else math.inf
View on GitHub (pinned to 77b7c6c40c)
Solutions
- Add the missing models to the router's model_list with routing preferences, or remove them from available_models.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at litellm/router_strategy/quality_router/quality_router.py:206 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/9888b225eee41ce2.
Report an issue: GitHub.