diff --git a/src/otari/_client/models/rate_limit_rule_create.py b/src/otari/_client/models/rate_limit_rule_create.py index e43f9747..f835907b 100644 --- a/src/otari/_client/models/rate_limit_rule_create.py +++ b/src/otari/_client/models/rate_limit_rule_create.py @@ -34,8 +34,8 @@ class RateLimitRuleCreate(BaseModel): name: Annotated[str, Field(strict=True)] = Field(description="Names the rule in a 429's detail and in the counter's key. Unique across rate_limits.") per: StrictStr = Field(description="What one count is shared by.") rpm: Optional[Annotated[int, Field(strict=True, ge=1)]] = Field(default=None, description="Requests per minute.") - tpm: Optional[Annotated[int, Field(strict=True, ge=1)]] = Field(default=None, description="Tokens per minute. A request is admitted on its estimate (prompt plus max output, or budget_estimate_default_output_tokens) and charged what it used once it completes.") - tpm_admission: Optional[StrictStr] = Field(default='estimate', description="How a tpm limit admits a request. 'estimate' holds the request's estimate and refuses it when that does not fit. 'used' admits a request while the minute's tokens are under the limit, holding none, and counts what it used once it completes, as LiteLLM does: a client that always sends a large max_tokens is limited by its usage, not its ceiling.") + tpm: Optional[Annotated[int, Field(strict=True, ge=1)]] = Field(default=None, description="Tokens per minute, counted on what each request used; see tpm_admission for how a request is admitted.") + tpm_admission: Optional[StrictStr] = Field(default='used', description="How a tpm limit admits a request. 'used' (the default) admits a request while the minute's tokens are under the limit and counts what it used once it completes, as LiteLLM does. 'estimate' holds the request's estimate (prompt plus max output, or budget_estimate_default_output_tokens) while it runs and refuses it when that does not fit, which is how providers count their own quotas: use it for a limit meant to stay under one.") __properties: ClassVar[List[str]] = ["lease_sec", "max_concurrent", "models", "name", "per", "rpm", "tpm", "tpm_admission"] @field_validator('name') @@ -61,8 +61,8 @@ def tpm_admission_validate_enum(cls, value): if value is None: return value - if value not in set(['estimate', 'used']): - raise ValueError("must be one of enum values ('estimate', 'used')") + if value not in set(['used', 'estimate']): + raise ValueError("must be one of enum values ('used', 'estimate')") return value model_config = ConfigDict( @@ -143,7 +143,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "per": obj.get("per"), "rpm": obj.get("rpm"), "tpm": obj.get("tpm"), - "tpm_admission": obj.get("tpm_admission") if obj.get("tpm_admission") is not None else 'estimate' + "tpm_admission": obj.get("tpm_admission") if obj.get("tpm_admission") is not None else 'used' }) return _obj diff --git a/src/otari/_client/models/rate_limit_rule_public.py b/src/otari/_client/models/rate_limit_rule_public.py index 87483cc9..4e792026 100644 --- a/src/otari/_client/models/rate_limit_rule_public.py +++ b/src/otari/_client/models/rate_limit_rule_public.py @@ -36,8 +36,8 @@ class RateLimitRulePublic(BaseModel): per: StrictStr = Field(description="What one count is shared by.") rpm: Optional[Annotated[int, Field(strict=True, ge=1)]] = Field(default=None, description="Requests per minute.") source: StrictStr = Field(description="'config' for a rule from config.yml, which is read-only here; 'dashboard' for a stored one.") - tpm: Optional[Annotated[int, Field(strict=True, ge=1)]] = Field(default=None, description="Tokens per minute. A request is admitted on its estimate (prompt plus max output, or budget_estimate_default_output_tokens) and charged what it used once it completes.") - tpm_admission: Optional[StrictStr] = Field(default='estimate', description="How a tpm limit admits a request. 'estimate' holds the request's estimate and refuses it when that does not fit. 'used' admits a request while the minute's tokens are under the limit, holding none, and counts what it used once it completes, as LiteLLM does: a client that always sends a large max_tokens is limited by its usage, not its ceiling.") + tpm: Optional[Annotated[int, Field(strict=True, ge=1)]] = Field(default=None, description="Tokens per minute, counted on what each request used; see tpm_admission for how a request is admitted.") + tpm_admission: Optional[StrictStr] = Field(default='used', description="How a tpm limit admits a request. 'used' (the default) admits a request while the minute's tokens are under the limit and counts what it used once it completes, as LiteLLM does. 'estimate' holds the request's estimate (prompt plus max output, or budget_estimate_default_output_tokens) while it runs and refuses it when that does not fit, which is how providers count their own quotas: use it for a limit meant to stay under one.") updated_at: Optional[datetime] = Field(default=None, description="When a stored rule last changed.") additional_properties: Dict[str, Any] = {} __properties: ClassVar[List[str]] = ["lease_sec", "max_concurrent", "models", "name", "per", "rpm", "source", "tpm", "tpm_admission", "updated_at"] @@ -72,8 +72,8 @@ def tpm_admission_validate_enum(cls, value): if value is None: return value - if value not in set(['estimate', 'used']): - raise ValueError("must be one of enum values ('estimate', 'used')") + if value not in set(['used', 'estimate']): + raise ValueError("must be one of enum values ('used', 'estimate')") return value model_config = ConfigDict( @@ -167,7 +167,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "rpm": obj.get("rpm"), "source": obj.get("source"), "tpm": obj.get("tpm"), - "tpm_admission": obj.get("tpm_admission") if obj.get("tpm_admission") is not None else 'estimate', + "tpm_admission": obj.get("tpm_admission") if obj.get("tpm_admission") is not None else 'used', "updated_at": obj.get("updated_at") }) # store additional fields in additional_properties diff --git a/src/otari/_client/models/rate_limit_rule_update.py b/src/otari/_client/models/rate_limit_rule_update.py index 28057a7c..36421996 100644 --- a/src/otari/_client/models/rate_limit_rule_update.py +++ b/src/otari/_client/models/rate_limit_rule_update.py @@ -34,7 +34,7 @@ class RateLimitRuleUpdate(BaseModel): per: Optional[StrictStr] = Field(default=None, description="What one count is shared by.") rpm: Optional[Annotated[int, Field(strict=True, ge=1)]] = Field(default=None, description="Requests per minute.") tpm: Optional[Annotated[int, Field(strict=True, ge=1)]] = Field(default=None, description="Tokens per minute.") - tpm_admission: Optional[StrictStr] = Field(default=None, description="'estimate' holds a request's estimate; 'used' counts only what it used.") + tpm_admission: Optional[StrictStr] = Field(default=None, description="'used' counts only what a request used; 'estimate' holds its estimate.") __properties: ClassVar[List[str]] = ["lease_sec", "max_concurrent", "models", "per", "rpm", "tpm", "tpm_admission"] @field_validator('per') @@ -53,8 +53,8 @@ def tpm_admission_validate_enum(cls, value): if value is None: return value - if value not in set(['estimate', 'used']): - raise ValueError("must be one of enum values ('estimate', 'used')") + if value not in set(['used', 'estimate']): + raise ValueError("must be one of enum values ('used', 'estimate')") return value model_config = ConfigDict(