BerriAI/litellm · error · ValueError

AdaptiveRouter[{self.router_name}]: no models meet min_quali

Error message

AdaptiveRouter[{self.router_name}]: no models meet min_quality_tier={min_quality_tier}

What it means

Adaptive router filtering result: after applying the requested min_quality_tier to the model pools, no configured model's quality tier meets the floor, so Thompson sampling has no eligible arms to draw from.

Source

Thrown at litellm/router_strategy/adaptive_router/adaptive_router.py:219

                router_model_name=self.router_name,
                router_type="adaptive",
                routed_model=chosen_model,
                cause="bandit",
                request_type=request_type.value,
            ),
        )

    # ---- Pick model ------------------------------------------------------

    async def pick_model(
        self,
        request_type: RequestType,
        min_quality_tier: int | None = None,
    ) -> str:
        """Thompson-sample across eligible models. Stateless per-turn."""
        eligible: Final = self._eligible_models(min_quality_tier)
        if not eligible:
            raise ValueError(f"AdaptiveRouter[{self.router_name}]: no models meet min_quality_tier={min_quality_tier}")

        cells: Final = {m: self._cells[(request_type, m)] for m in eligible}
        costs: Final = {m: self.model_to_cost.get(m, 0.0) for m in eligible}
        return pick_best(
            cells,
            costs,
            quality_weight=self.config.weights.quality,
            cost_weight=self.config.weights.cost,
        )

    async def get_state_snapshot(self) -> dict[str, Any]:
        """In-memory snapshot for the introspection endpoint. Cheap; no DB hit."""
        cells: Final = []
        for (rt, model), cell in sorted(self._cells.items(), key=lambda kv: (kv[0][0].value, kv[0][1])):
            total = cell.alpha + cell.beta
            cells.append(
                {
                    "request_type": rt.value,

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Lower min_quality_tier or add models that meet the tier to the adaptive router pool.
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at litellm/router_strategy/adaptive_router/adaptive_router.py:219 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/5e70a8aa99f94017. Report an issue: GitHub.