BerriAI/litellm · error · ValueError
ptu_count must be a positive integer no greater than {self.M
Error message
ptu_count must be a positive integer no greater than {self.MAX_PTU_COUNT} What it means
Model validator _validate_ptu_bounds on ModelInfo: ptu_count was supplied but is zero, negative, or exceeds MAX_PTU_COUNT. Provisioned-throughput units are capped, so out-of-range counts are rejected at model-registration time.
Source
Thrown at litellm/types/router.py:198
# per-model-group override for router_settings.enable_tag_filtering; unset
# defers to the router-wide default. Checked against any deployment in the
# group, so set it consistently across every deployment sharing this
# model_name. A request-level enable_tag_filtering=True (from key/team
# settings) still wins over this, exactly as it already does over the
# router-wide default.
enable_tag_filtering: bool | None = None
def __init__(self, id: str | int | None = None, **params) -> None:
if id is None:
id = str(uuid.uuid4()) # Generate a UUID if id is None or not provided
elif isinstance(id, int):
id = str(id)
super().__init__(id=id, **params)
@model_validator(mode="after")
def _validate_ptu_bounds(self) -> "ModelInfo":
if self.ptu_count is not None and not 0 < self.ptu_count <= self.MAX_PTU_COUNT:
raise ValueError(f"ptu_count must be a positive integer no greater than {self.MAX_PTU_COUNT}")
if (
self.cost_per_ptu_per_hour is not None
and not 0 <= self.cost_per_ptu_per_hour <= self.MAX_COST_PER_PTU_PER_HOUR
):
raise ValueError(
f"cost_per_ptu_per_hour must be a finite number between 0 and {self.MAX_COST_PER_PTU_PER_HOUR}"
)
start: Final = _as_utc(self.ptu_effective_from)
end: Final = _as_utc(self.ptu_effective_to)
if start is not None and end is not None and end <= start:
raise ValueError("ptu_effective_to must be after ptu_effective_from")
return self
model_config = ConfigDict(extra="allow")
def __contains__(self, key) -> bool:
# Define custom behavior for the 'in' operator
return hasattr(self, key)View on GitHub (pinned to 77b7c6c40c)
Solutions
- Set ptu_count to an integer between 1 and {self.MAX_PTU_COUNT}.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at litellm/types/router.py:198 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/21b46e050f450ba2.
Report an issue: GitHub.