速率限制与等级
你的请求数和 Token 数上限、报告它们的响应头,以及账号等级如何提升。
速率限制用于保护容量,让流量更可预测。AnyPath 主要使用两种限制:
- RPM:每分钟请求数
- TPM:每分钟 Token 数
账号 Tier 是账号级 RPM / TPM 的产品策略来源。API Key 可以设置更窄的限额,用于隔离不同工作负载。路由和上游供应商 key 也可能有自己的限额。运行时实际生效的是账号策略、API Key 策略、所选模型、可用凭证路由和上游 key 可用性之间最严格的限制。
当前有效值以 /v1/models 和控制台显示为准。
Tier 与有效限额
AnyPath 的 Tier 是透明的账号策略:
| 层级 | 控制什么 | 能否提高最终有效限额 |
|---|---|---|
| 账号 Tier / 用户策略 | 账号级 RPM / TPM 与模型访问 | 可以,但仍受平台和路由容量约束 |
| API Key 设置 | 单个 Key 的 RPM / TPM、模型允许列表、路由策略和预算 | 不能;Key 只能进一步收紧账号策略 |
| 路由 / 上游 key | 某条共享路由的供给容量 | 不能;不可用或更低的上游限制会降低有效限额 |
如需查看模型发现结果,请使用同一个 API Key 调用 GET /v1/models。可用时,每个模型会显示路由策略和供给容量之后的有效 RPM / TPM。
默认账号 Tier 如下:
| Tier | 账号 RPM | 账号 TPM | 怎么到达 |
|---|---|---|---|
| Starter | 120 | 2,000,000 | 注册即是 |
| Builder | 600 | 10,000,000 | 累计实付满 10 USDT,自动升级 |
| Scale | 1,500 | 30,000,000 | 累计实付满 200 USDT,自动升级 |
| Enterprise | 3,000 | 60,000,000 | 人工开通;更高的限额按账号单独设置 |
- 等级每小时评估一次。条件只有一个:账号累计实付金额。它只增不减,所以升上去的等级不会掉。
- 没有单独设置限额的 API Key 与账号共用同一个限额;给某个 Key 设了限额,只约束那一个 Key。
- TPM 按请求发出时的估算计数:整段提示词(约每 4 个字符 1 个 Token)加上请求里的
max_tokens(未设置时按 512)。内联的图片等媒体每个按 1,600 个 Token 计,不按 base64 长度计。它不是最终用量,计费仍按实际用量。 - 还有一个 Trial 档(30 RPM、500,000 TPM),只在运营方需要临时放慢某个账号时人工指定,到期后账号回到自己应有的等级。
这些是账号策略默认值,不是容量保证。控制台和 /v1/models 仍是运行时真值,因为 API Key 设置、所选路由、供应商可用性和上游限额都可能降低有效值。
限流响应
触发限流时,API 返回 429 Too Many Requests,并带有 Retry-After。错误码说明是谁的限额用完了:rate_limit_exceeded 是你自己的账号或 Key 限额;supplier_rate_limited 表示你没有超限,是该模型的资源提供方暂时没有容量。两种情况都按同样方式退避;后一种情况下换一个模型可能立刻可用。
限流响应头
响应会报告你自己的账号与 API Key 窗口,429 响应也包含。窗口长度为一分钟。
| 响应头 | 含义 |
|---|---|
x-ratelimit-limit-requests | 当前 Key 生效的每分钟请求数上限 |
x-ratelimit-remaining-requests | 当前窗口剩余请求数 |
x-ratelimit-reset-requests | 距离窗口重置的秒数 |
x-ratelimit-limit-tokens | 当前 Key 生效的每分钟 Token 数上限 |
x-ratelimit-remaining-tokens | 当前窗口剩余 Token 数 |
x-ratelimit-reset-tokens | 距离窗口重置的秒数 |
生效上限取账号 Tier 与 API Key 设置中更严格的一个。没有上限的指标不返回对应响应头。Token 相关响应头只出现在带有 Token 估算的请求上,按估算值计数,不是最终用量。
这些响应头不反映实际承接请求的供应商账号。即使你自己的窗口仍有余量,供给容量不足时请求仍可能被拒绝。
推荐重试方式
- 如果有
Retry-After,优先遵守它。 - 没有
Retry-After时,使用带 jitter 的指数退避。 - 对突发流量按 API Key 建队列。
- 不要把认证、权限、参数校验或支付相关的错误当成限流错误来重试。
import random
def wait_seconds(attempt: int, retryAfterHeader: str | None = None) -> float:
if retryAfterHeader:
return float(retryAfterHeader)
return min(60, (2 ** attempt) + random.random())
建议监控
- API Key 和供应商维度的
429比例 - 控制台中的账号 Tier 与用户策略变更
- 控制台中的路由可用性和供应商状态
- 输入和输出 Token 量相对 TPM 限额的占比
- 请求排队后的等待时间
如果共享路由反复不可用,请选择其他可用模型。
Tier 升级
Tier 升级只看账号累计实付金额。系统每小时自动评估一次账号,符合条件的账号会自动升级,不需要你提交申请。管理员可以给单个账号设定更高或更低的等级(可设到期时间);这不会改变 API 请求语义,并会单独审计。
如果启用自动降级,必须带宽限期。短时间流量下降不应立即降低生产限额。