{"record":{"id":"5e70a8aa99f94017","repo":"BerriAI/litellm","slug":"adaptiverouter-self-router-name-no-models-meet","errorCode":null,"errorMessage":"AdaptiveRouter[{self.router_name}]: no models meet min_quality_tier={min_quality_tier}","messagePattern":"AdaptiveRouter\\[(.+?)\\]: no models meet min_quality_tier=(.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/router_strategy/adaptive_router/adaptive_router.py","lineNumber":219,"sourceCode":"                router_model_name=self.router_name,\n                router_type=\"adaptive\",\n                routed_model=chosen_model,\n                cause=\"bandit\",\n                request_type=request_type.value,\n            ),\n        )\n\n    # ---- Pick model ------------------------------------------------------\n\n    async def pick_model(\n        self,\n        request_type: RequestType,\n        min_quality_tier: int | None = None,\n    ) -> str:\n        \"\"\"Thompson-sample across eligible models. Stateless per-turn.\"\"\"\n        eligible: Final = self._eligible_models(min_quality_tier)\n        if not eligible:\n            raise ValueError(f\"AdaptiveRouter[{self.router_name}]: no models meet min_quality_tier={min_quality_tier}\")\n\n        cells: Final = {m: self._cells[(request_type, m)] for m in eligible}\n        costs: Final = {m: self.model_to_cost.get(m, 0.0) for m in eligible}\n        return pick_best(\n            cells,\n            costs,\n            quality_weight=self.config.weights.quality,\n            cost_weight=self.config.weights.cost,\n        )\n\n    async def get_state_snapshot(self) -> dict[str, Any]:\n        \"\"\"In-memory snapshot for the introspection endpoint. Cheap; no DB hit.\"\"\"\n        cells: Final = []\n        for (rt, model), cell in sorted(self._cells.items(), key=lambda kv: (kv[0][0].value, kv[0][1])):\n            total = cell.alpha + cell.beta\n            cells.append(\n                {\n                    \"request_type\": rt.value,","sourceCodeStart":201,"sourceCodeEnd":237,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/router_strategy/adaptive_router/adaptive_router.py#L201-L237","documentation":"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.","triggerScenarios":"Thrown at litellm/router_strategy/adaptive_router/adaptive_router.py:219 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Lower min_quality_tier or add models that meet the tier to the adaptive router pool."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}