术语●○○3 分钟 · +20 XP
Rate Limit(速率限制)和 Quota(配额):AI 工具为什么有时会让你慢下来
Rate limit 限制你每分钟能发出多少请求。了解这些规则,遇到 429 错误时你也能从容应对。
什么是 rate limit
Rate limit(速率限制)是一个上限:规定你在一段时间内,能给某个 AI API 发送多少请求(或多少 token)。Quota(配额)意思类似,通常针对更长的时间段——比如订阅套餐里的月度额度,或者某个 API 每月的花费上限。
为什么会有这些限制
如果没有限制,单个应用——无论是出于 bug 还是故意为之——都可能发出海量请求,拖累所有其他用户可用的服务器资源。Rate limit 保护基础设施、保证公平分配,同时也限制了意料之外的费用。
错误码 429
一旦超出限制,API 就不会返回结果,而是返回 HTTP 状态码 429(“Too Many Requests”,请求过多)。返回内容里通常还会附带一个 retry-after 提示,告诉你应该等多少秒再重试。
如何应对
- 等待后重试:遇到 429 时先暂停一下,再重试——最好是等待时间逐渐变长(也就是所谓的“指数退避”,exponential backoff),而不是立刻再发一次。
- 批处理(batching):把多个小请求合并成一个大请求,而不是一次次单独发送。
- 换用更小的模型:把简单的子任务交给一个更便宜、有独立配额的模型处理,把昂贵的主力模型留给真正复杂的步骤。
示例
重试与退避的伪代码: für versuch in 1..5: antwort = api_aufruf() wenn antwort.status == 429: warte(antwort.header['retry-after'] Sekunden) weiter sonst: return antwort
🛠️ 练习——自己动手试试
为 API 调用写一个带退避机制的简单重试逻辑,或者在现有 SDK 里找到它。
- 查一下你常用的 AI SDK 文档,看它是否已经内置了针对 429 的重试机制。
- 如果没有:写一个小循环,在遇到 429 状态码时,用逐渐变长的等待时间重试(最多 3-5 次)。
- 检查你的代码是否读取并遵守了响应里的 retry-after 头,而不是使用一个固定的等待时间。
- 可选且需谨慎:用几次快速请求测试是否会触发 429——注意在此之前那些成功的请求同样会消耗 token。请不要用生产环境账号或额度紧张的账号做这个测试。
✅ 自查清单
- ☐ 遇到 429 错误后,你的代码会等待更长时间,而不是立刻重试吗?
- ☐ 你的代码对重试次数有固定的上限吗?
- ☐ 你的代码有没有读取 retry-after 头,而不是假设一个固定的等待时间?
小测验
AI API 里的 HTTP 状态码 429 是什么意思?
来源
- Claude Platform Doku: Rate Limits ↗ platform.claude.com
- MDN: HTTP 429 Too Many Requests ↗ developer.mozilla.org
- OpenAI-Doku: Rate Limits ↗ developers.openai.com
- MDN: HTTP 429 Too Many Requests ↗ developer.mozilla.org