限流、超时与重试
根据 HTTP 状态、Retry-After 和流式事件处理失败,避免重复请求、重复费用及工具重复执行。
先判断错误类型
| 响应 | 先做什么 |
|---|---|
| 400 / 413 | 检查参数、消息结构与请求大小,修改后再提交 |
| 401 / 403 | 检查密钥、实际连接地址及权限 |
| 402 | 核对余额与计费状态 |
| 429 | 降低并发与发送频率;有 Retry-After 时先等待 |
| 500 / 503 / 529 | 确认是否为临时故障,再做有限重试 |
| 超时或断线 | 核对请求是否已经执行、是否产生用量,再决定是否重发 |
具体报错可在报错手册中按编号查找。不要把所有失败都当成密钥问题,也不要对未修改的 400 或 401 持续重试。
设置有限重试
- 限制最大次数和总等待时间,例如最多重试 3 次。
- 优先遵守响应中的
Retry-After。不存在时可从 1 秒开始指数退避,并加入少量随机延迟。 - 失败期间减少并发;避免多个客户端同时立即重发。
- 检查 SDK 是否已自动重试,避免再套一层重试将请求数成倍放大。
以上是客户端建议,不代表固定的服务配额。当前可用容量、模型和账号权限可能不同;不要把一次成功测得的并发数当成长期保证。
流式请求中途失败
HTTP 200 后仍可能出现 SSE error 或连接断开。仅收到部分文本时,不应把它当成完整成功结果。
若请求已经生成内容或触发本机工具,重发可能产生另一笔用量,也可能导致工具动作重复。先检查会话状态和使用日志;执行写文件、发消息等操作的客户端应自行控制重复执行。
本页不提供请求幂等或失败不计费的保证,具体费用以本次记录为准。
提交排查信息
向客服提供发生时间和时区、客户端版本、模型、HTTP 状态、完整错误原文,以及可见的请求编号。附上是否已收到部分输出、重试次数和并发情况。
不要发送 API 密钥、登录 Cookie 或完整私有项目。需要请求示例时,先删除业务数据,只保留可以复现错误的最小结构。