BerriAI/litellm · error · ValueError

Empty model pool for tier {tier_key}

Error message

Empty model pool for tier {tier_key}

What it means

Routing guard in the complexity router's tier picker: a tier's configured value resolved to an empty model pool (empty string/list in config), so there is no model to route to for that tier.

Source

Thrown at litellm/router_strategy/complexity_router/complexity_router.py:1175

        if tier_key in self.config.tiers:
            return self._pick_from_tier_value(self.config.tiers[tier_key], tier_key)

        if self.config.default_model:
            return self.config.default_model

        medium_key: Final = ComplexityTier.MEDIUM.value
        if medium_key in self.config.tiers:
            return self._pick_from_tier_value(self.config.tiers[medium_key], medium_key)

        raise ValueError(f"No model configured for tier {tier_key} and no default_model set")

    @staticmethod
    def _pick_from_tier_value(model: str | list[str], tier_key: str) -> str:
        if isinstance(model, str):
            return model
        if not model:
            raise ValueError(f"Empty model pool for tier {tier_key}")
        return random.choice(model)

    def _tier_pools(self) -> dict[str, list[str]]:
        return {tier: (models if isinstance(models, list) else [models]) for tier, models in self.config.tiers.items()}

    async def _pick_model_for_tier(
        self,
        tier: ComplexityTier,
        raw_messages: list[dict[str, Any]] | None,
        resolved_messages: list[dict[str, Any]] | None,
        request_kwargs: dict,
    ) -> str:
        if not self.config.plugins:
            return self.get_model_for_tier(tier)

        from litellm.types.router import RoutingContext

        tier_key: Final = tier.value

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Add models to the tier's pool in the complexity router config.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at litellm/router_strategy/complexity_router/complexity_router.py:1175 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/adc59dd740095e2a. Report an issue: GitHub.