OpenAI API 错误与速率限制:401、429 怎么排查
同一个 HTTP 状态码可能对应不同原因。排障时同时保留状态码、错误类型、简短错误信息和请求标识(若返回),不要输出完整凭据或原始请求内容。
先分类,再处理
| 表现 | 核对方向 | 处理方式 |
|---|---|---|
| 401 | 凭据、项目或组织、IP 访问设置 | 核对请求使用的身份与配置;修复后重试 |
| 403 | 官方错误说明中的区域等访问限制 | 根据具体错误及账号条件核对可用性 |
| 429:速率限制 | 单位时间内请求或 token 用量 | 降低并发与突发量,按允许时间重试 |
429:credit_balance_exhausted | 可用余额 | 补齐计费条件;重复请求不能恢复余额 |
| 429:项目或组织支出上限 | 当前预算与使用量 | 核对相应上限及管理设置 |
| 5xx 或连接异常 | 暂时服务或网络问题 | 对适合重试的操作执行有上限的退避 |
具体错误体比这张概览表更重要。不要把所有 429 都写成“请求太快”,也不要对认证失败无限重试。
速率限制如何处理
请求数和 token 用量都可能构成限制。先检查响应头和当前项目的实际限制,在发送端控制并发、排队和突发量。失败请求也可能消耗相应限制预算,不要在多个进程里同时密集重试。
对确实可以重试的错误,尊重返回的 Retry-After(若存在),采用带抖动且有次数或总时间上限的退避。重试预算用尽后,把明确失败交给调用方,而不是继续无限等待。
避免重复业务副作用
模型请求的重试与下游工具写入的重试不是一回事。如果工作流还会创建订单或修改记录,应检查是否已产生结果,再决定是否重复操作。不要假定重发整段流程不会造成重复。
最小排障记录
记录请求时间、模型、状态和错误类别、请求标识、是否重试及最终结果。将密钥和不必要的输入排除。若首次集成就失败,返回 API 快速开始 核对环境;模型不存在或不可访问时再看 模型选择。
最后更新于