BerriAI/litellm · error · ValueError

No model configured for tier {tier_key} and no default_model

Error message

No model configured for tier {tier_key} and no default_model set

What it means

Routing guard in the complexity router: neither the requested tier, nor medium as fallback, nor any other configured tier, nor default_model is set, so no model name can be produced for the request.

Source

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

        Args:
            tier: The complexity tier.

        Returns:
            The model name configured for that tier.
        """
        tier_key: Final = tier.value if isinstance(tier, ComplexityTier) else tier

        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,

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Configure a model pool for the tier or set a default_model.
Defensive patterns

Strategy: fallback

When it happens

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