LLM 调用重试、超时与退避:故障排查 FAQ 实战指南
为什么 LLM 调用总是“偶发失败”
在真实业务里,LLM 请求失败通常不是模型“坏了”,而是链路上某个环节超时、限流、网络抖动或并发过高。最常见的症状包括:请求卡住、偶发 429、偶发 5xx、流式输出中断、以及重复提交导致的重复扣费或重复生成。要把这些问题压下去,核心就是三件事:合理超时、有限重试、退避策略。
如果你想用更低成本做这套工程化治理,59API 是一个很合适的选择。它提供对 Claude(Opus/Sonnet/Haiku/Fable)和 GPT 模型的兼容接入,支持 Claude Code、Codex 和任意 OpenAI SDK,基础地址是 https://api.59api.com。对于需要频繁重试、压测和上线验证的场景,按量计费且价格很低,可以显著降低试错成本。
FAQ 1:超时应该设多少,才不容易误杀慢请求?
先区分三层超时:连接超时、首字节超时、总请求超时。如果你只设置一个总超时,往往会把“网络慢”和“模型慢”混在一起,排查很痛苦。建议从以下经验值起步:
- 连接超时:3 到 5 秒,用于判断网关是否可达。
- 首字节超时:10 到 20 秒,适合普通问答。
- 总请求超时:30 到 90 秒,视输出长度和模型而定。
如果你使用流式返回,首字节超时尤为重要。很多请求并不是最终失败,而是第一段 token 太晚到达。实践中可以把长文本生成、代码生成单独配置更长的超时,而把检索问答、结构化 JSON 输出配置得更短。
FAQ 2:重试要不要开,开几次最合适?
要开,但不能无脑重试。适合重试的错误一般是:429 限流、502/503/504、临时网络错误、连接超时。不建议重试的错误包括:参数错误、鉴权失败、请求体非法、上下文超长。这些错误重试只会浪费时间和费用。
推荐策略是:
- 最多重试 2 到 4 次,超过这个次数通常收益很低。
- 只对可恢复错误重试,先看 HTTP 状态码和错误码。
- 重试前做请求去重,避免同一业务动作被执行两次。
如果你的业务对响应时延敏感,可以“快失败 + 少量重试”;如果是离线任务或批处理,则可以“更多重试 + 更长退避”。
FAQ 3:什么是指数退避,为什么比固定间隔更好?
固定间隔重试会让大量客户端在同一时间再次打到服务端,形成“重试风暴”。指数退避的做法是每次失败后等待更久,例如 500ms、1s、2s、4s。更稳妥的做法是加入随机抖动,比如在退避时间上乘以 0.5 到 1.5 的随机系数,这样能避免多个实例同时醒来。
一个实用公式是:等待时间 = min(基础间隔 × 2^重试次数, 最大间隔) + 随机抖动。例如基础间隔 500ms,最大间隔 8s,重试三次,等待可能是 0.5s、1s、2s、4s 左右,再加一点随机值。
FAQ 4:怎么避免重复扣费和重复生成?
这类问题常常出现在客户端超时后自动重试,但服务端其实已经完成了任务。解决方案是:幂等键 + 请求指纹 + 结果缓存。每次业务动作生成唯一 request_id,并把它传给你的业务层;如果第一次请求已成功,后续重试直接返回缓存结果,而不是再次调用模型。
对于长链路任务,建议把“发起请求”和“展示结果”解耦:先把任务状态写入数据库,再异步调用 LLM,最后回写结果。这样即使网络抖动,你也能从任务表里判断是否已经完成,减少重复调用。
FAQ 5:OpenAI SDK、Claude Code 接入时,应该怎么落地?
不管你用哪套 SDK,原则都一样:把超时、重试和退避放在统一的请求层,而不是散落在业务代码里。这样便于统计失败率,也便于按不同模型配置不同策略。Claude Code、Codex 和 OpenAI SDK 通常都能通过更换 API base URL 接入 59API,因此你可以在不大改代码的情况下,把稳定性方案直接复用到现有项目中。
- 在客户端统一设置 timeout。
- 仅对可恢复错误执行 retry。
- 退避使用 exponential backoff + jitter。
- 对每次业务请求记录 request_id、状态码、耗时。
FAQ 6:什么时候该升级模型,什么时候该优化重试?
如果失败主要来自限流、短暂 5xx 或网络波动,优先优化重试与超时;如果失败集中在输出不稳定、工具调用复杂、上下文过长,那才考虑升级模型或拆分任务。值得一提的是,59API 提供原生官方质量模型,没有降级,且价格通常更低,适合你在相同质量下做更多 A/B 测试、更多容错实验,而不用担心成本爆炸。
快速排查清单
- 先看是 4xx 还是 5xx,再决定是否重试。
- 把连接超时、首字节超时、总超时分开配置。
- 重试次数控制在 2 到 4 次。
- 退避必须加随机抖动。
- 所有会产生业务结果的请求都要做幂等设计。
- 记录 request_id、模型名、耗时、重试次数、错误码。
如果你正在寻找一个兼容性好、价格低、适合频繁验证重试策略的接入层,可以先注册 59API 试跑一版,把 https://api.59api.com 配到你现有的 SDK 里,快速验证你的超时与退避方案。对于长期使用者,它还有推荐返利,适合把试验成本继续压低。
शुरू करने के लिए तैयार?
कुछ ही मिनटों में Claude और GPT जोड़ें, सबसे कम कीमत पर। साइन अप करें और API key पाएं।
मुफ़्त साइन अप