速率限制 / Rate Limits
图灵平台对每个 API Key 施加多维速率限制,超限返回 HTTP 429 + 业务错误码。本页帮你区分是谁的限流、如何退避、如何避免。
维度
| 维度 | 错误码 | 触发条件 | 范围 |
|---|---|---|---|
| 用户 RPM | 1111 USER_RPM_LIMIT_EXCEEDED | 每分钟请求数超限 | 单 API Key |
| 用户 TPM | 1112 USER_TPM_LIMIT_EXCEEDED | 每分钟 token 数超限 | 单 API Key |
| Client RPM | 1114 CLIENT_RPM_LIMIT_EXCEEDED | 同一 X-Client-Id 的 RPM 超限 | 同客户端聚合 |
| Client TPM | 1113 CLIENT_TPM_LIMIT_EXCEEDED | 同 | 同 |
| 通用速率 | 1104 RATE_LIMIT_EXCEEDED | 平台层聚合限流 | 全局保护 |
| 服务限流 | 1115 SERVICE_RATE_LIMIT_EXCEEDED | 服务级别 | 服务内 |
| 供应商限流 | 1122 PROVIDER_RATE_LIMIT_EXCEEDED | 上游厂商限流(Gemini 尤其常见) | 厂商侧 |
| 预算耗尽 | 1110 USER_EXPENSE_OVER_BUDGET | 账户余额不足 / 消费上限 | API Key |
| 剩余 token 不够 | 1102 USER_LEFT_TOKENS_EXCEED | 免费额度用光 | 免费用户 |
所有这些都走 HTTP 429(除 1102 为 400),区分靠 业务 code 字段。
错误响应示例
{
"code": 1112,
"message": "User TPM limit exceed",
"data": {"limit": 100000, "window": "1m"},
"trace_id": "tur_..."
}
客户端如何反应
基本策略:指数退避
import time
from openai import OpenAI, RateLimitError
client = OpenAI(
api_key="your-api-key",
base_url="https://live-turing.cn.llm.tcljd.com/api/v1",
)
def call_with_backoff(max_retries=4):
delay = 1.0
for attempt in range(max_retries):
try:
return client.chat.completions.create(
model="turing/gpt-5.4-mini",
messages=[{"role": "user", "content": "Hi"}],
)
except RateLimitError:
if attempt == max_retries - 1:
raise
time.sleep(delay)
delay *= 2 # 1, 2, 4, 8 ...
优先用平台内置重试 / Fallback
与其在客户端做复杂退避,不如让平台代劳——turing_options 支持 max_retries 和 fallbacks:
client.chat.completions.create(
model="turing/gpt-5.4-mini",
messages=[...],
extra_body={
"turing_options": {
"max_retries": 2,
"fallbacks": ["turing/claude-sonnet-5", "turing/gemini-3.1-pro-latest"]
}
}
)
平台的退避曲线:1s → 2s → 4s … up to 60s。仅对 429/5xx/超时等可重试错误生效,401/400 不重试。详见 超时、重试与 Fallback。
区分"谁的限流"
code | 谁超限 | 最佳应对 |
|---|---|---|
1111 / 1112 | 你的 API Key | 升级额度 / 降请求频率 |
1113 / 1114 | 同一 Client(聚合多 Key) | 同上,或换 Client 分组 |
1104 / 1115 | 平台层 | 短时退避 + 重试 |
1122 | 上游厂商(Gemini/OpenAI/…) | 开 fallback 切换供应商,或等待恢复 |
1110 | 余额 / 预算 | 充值 / 提升消费上限 |
查看你的当前额度
通过图灵平台 Portal 或 /v1/admin/usage 接口(需额外权限)。日常排查建议在 Portal 上看余额、配额、已用量三栏。
Gemini 专属:Provisioned Throughput
遇到 Gemini 系列长期 1122 供应商限流,可购买 Provisioned Throughput(预配吞吐量)。详见 问题排查 / Gemini 429 限流与 PT。
最佳实践
- 生产环境务必开 retries + fallbacks,而不是硬失败
- 每个请求带
X-Client-Request-Id,429 时还能追溯(见 请求追踪) - 大批量任务错峰:1 分钟内发 1 万条不如分 10 分钟每分钟 1 千条
- 监控 429 率:日常 >1% 说明额度该提了
- 流式请求算 TPM 时按输出 token 计费:响应越长越占额度,控制
max_tokens
常见问题
- "我才发了 100 条怎么就 429 了" → 查业务码:多半是 Gemini 的 1122(厂商侧),不是你的限额
- Fallback 也 429 → 两条 fallback 配置成不同厂商的模型(例如
["turing/claude-sonnet-5", "turing/gpt-5.4-mini"]) - 流式请求 token 被计算两次? → 不会;但流断后已发送 token 照算
- 怎么永久避免 1110 → Portal 上把账户升级到后付费 / 开白名单(联系平台)
See also
- 错误码参考 — 全量
1xxx码索引 - 超时、重试与 Fallback —
max_retries/fallbacks完整语义 - 计费与用量 — 消费额度 / token 计价
- Gemini 429 与 PT — Gemini 专项