429 Too Many Requests 是大模型 API 里最常见的错误之一。
很多人看到它会理解成:
平台坏了。
模型挂了。
通道不可用。
其实不一定。
429 更准确的意思是:
当前请求频率、并发或上游负载已经超过限制。
在 4SAPI 里,你还可能看到类似提示:
当前分组上游负载已饱和。
这句话很关键。
它说明问题不一定是你的单个请求格式错了,而是当前分组背后的上游账号、渠道或模型并发已经吃紧。
1. 429 的四种来源
不要把所有 429 都当成一种问题。
常见来源有四类:
你的业务请求太频繁。
你的客户端失败后疯狂重试。
当前 4SAPI 分组上游负载饱和。
模型供应商对账号或模型限流。
排查时要先问:
是只有我一个项目 429?
还是同一分组很多项目都 429?
是某个模型 429?
还是所有模型都 429?
这几个问题决定处理方式。
2. 用户侧先做什么
如果你只是调用方,先做四件事:
降低并发。
停掉自动重试。
换短 Prompt 测试。
稍等一会再重试。
不要写这种逻辑:
429 以后立刻重试。
失败继续重试。
最多重试 20 次。
这会把一个小拥堵放大成重试风暴。
更稳的是:
第一次失败等待 2 秒。
第二次失败等待 5 秒。
第三次失败等待 15 秒。
仍失败就转队列或人工。
这叫退避。
不是怂。
是对上游限流的基本礼貌。
3. 429 和预算也有关系
429 看起来是限流问题。
但它常常和成本治理连在一起。
比如:
某个 Agent 进入循环。
每次失败都调用 Fable 5。
429 后还继续重试。
十分钟内打出几百次请求。
这时 429 是症状。
真正的问题是:
没有并发上限。
没有重试上限。
没有预算阈值。
没有任务级熔断。
所以 4SAPI 里最好设置:
key_group 预算。
project 预算。
task_type 并发。
高级模型调用上限。
429 后最大重试次数。
不要等账单出来才知道系统在疯狂重试。
4. 管理员排查 429 看什么
管理员不能只看一句错误。
建议看这些维度:
status_code = 429 的请求量。
按 key_group 聚合。
按 project 聚合。
按 model 聚合。
按 channel 聚合。
按 task_type 聚合。
然后判断:
是不是某个项目突然暴涨。
是不是某个模型全局 429。
是不是某个 channel 负载过高。
是不是同一 request_id 重试太多。
是不是某个 Key 被滥用。
字段建议:
request_id
project_id
key_group
model
channel_id
status_code
retry_count
latency_ms
task_type
input_tokens
cost
有了这些字段,429 就不是“感觉很拥挤”。
而是能定位到:
谁在打。
打什么模型。
打了多少次。
是不是重试造成的。
5. 队列是 429 的好朋友
如果你的任务不要求实时返回,就不要所有请求直接打模型。
比如:
批量摘要。
日报生成。
内容审核。
竞品分析。
RAG 重建索引。
这些都适合走队列。
队列的好处是:
可以限制并发。
可以按优先级处理。
可以错峰。
可以失败后延迟重试。
可以保护实时请求。
企业接入 4SAPI 时,我建议拆:
realtime-key:客服、用户实时请求。
batch-key:批处理、日报、离线任务。
fable-key:高价值审查任务。
这样批量任务打出 429,也不会拖死实时客服。
6. fallback 不是随便换模型
遇到 429,很多人会说:
那就自动换模型。
可以,但要谨慎。
fallback 要考虑:
新模型能力是否够。
输出格式是否兼容。
成本是否更高。
是否会影响业务结果。
是否需要标注降级。
比如简单分类任务,从高级模型 fallback 到低成本模型通常可行。
但合同审查、代码风险审查、重要客户回复,不一定适合自动降级。
更稳的策略是:
| 任务类型 | 429 后策略 |
|---|---|
| 低价值批量任务 | 排队或延迟 |
| 简单分类 | fallback 到低成本模型 |
| 用户实时任务 | 短退避 + 备用模型 |
| 高风险任务 | 转人工或等待高级模型 |
4SAPI 的模型路由要结合 task_type。
不要只按状态码机械切换。
7. 给 AI 的 429 排错 Prompt
你是 4SAPI 429 限流排查助手。
请根据请求日志、模型、Key 分组、项目、并发、retry_count、task_type 和错误原文,判断 429 来源:
1. 单项目请求暴涨
2. 客户端重试风暴
3. 当前分组上游负载饱和
4. 某个模型或 channel 限流
5. 高级模型被低价值任务滥用
要求:
- 不建议无限重试。
- 给短期止血和长期治理建议。
- 区分实时任务和批量任务。
- 给是否适合 fallback 的判断。
这个 Prompt 很适合让 Fable 5 分析一批日志。
低成本模型可以先做聚合:
按项目、模型、Key、task_type 汇总 429。
Fable 5 再判断治理方案。
8. 429 的短期止血
如果线上正在 429,可以先做:
暂停低优先级批量任务。
降低并发。
关闭过度重试。
把失败任务放入延迟队列。
临时切换简单任务到备用模型。
给用户返回明确的稍后重试提示。
不要做:
无脑加并发。
无脑多开 worker。
无脑无限重试。
无脑把所有任务切到更贵模型。
这些都会把问题放大。
9. 429 的长期治理
长期要做:
按项目拆 Key。
按任务拆队列。
按模型设置预算。
按 task_type 设置并发。
记录 retry_count。
设置 429 告警。
定期复盘异常调用。
4SAPI 的核心价值不是让你永远不遇到 429。
而是让你知道:
429 是谁造成的。
影响了谁。
花了多少钱。
下次怎么拦住。
10. 总结
429 不是简单的“再试一次”。
它背后可能是:
并发过高。
重试风暴。
上游负载饱和。
预算和权限没管住。
任务优先级没拆。
企业级大模型接入,要把 429 当成治理信号。
一句话:
429 不怕,怕的是你一边 429 一边疯狂重试。