59API

← Retour aux guides

LLM 调用重试、超时与退避:故障排查 FAQ 实战指南

Guides · ZH · 2026-08-26

为什么 LLM 调用总是“偶发失败”

在真实业务里,LLM 请求失败通常不是模型“坏了”,而是链路上某个环节超时、限流、网络抖动或并发过高。最常见的症状包括:请求卡住、偶发 429、偶发 5xx、流式输出中断、以及重复提交导致的重复扣费或重复生成。要把这些问题压下去,核心就是三件事:合理超时有限重试退避策略

如果你想用更低成本做这套工程化治理,59API 是一个很合适的选择。它提供对 Claude(Opus/Sonnet/Haiku/Fable)和 GPT 模型的兼容接入,支持 Claude Code、Codex 和任意 OpenAI SDK,基础地址是 https://api.59api.com。对于需要频繁重试、压测和上线验证的场景,按量计费且价格很低,可以显著降低试错成本。

FAQ 1:超时应该设多少,才不容易误杀慢请求?

先区分三层超时:连接超时首字节超时总请求超时。如果你只设置一个总超时,往往会把“网络慢”和“模型慢”混在一起,排查很痛苦。建议从以下经验值起步:

如果你使用流式返回,首字节超时尤为重要。很多请求并不是最终失败,而是第一段 token 太晚到达。实践中可以把长文本生成、代码生成单独配置更长的超时,而把检索问答、结构化 JSON 输出配置得更短。

FAQ 2:重试要不要开,开几次最合适?

要开,但不能无脑重试。适合重试的错误一般是:429 限流502/503/504、临时网络错误、连接超时。不建议重试的错误包括:参数错误、鉴权失败、请求体非法、上下文超长。这些错误重试只会浪费时间和费用。

推荐策略是:

如果你的业务对响应时延敏感,可以“快失败 + 少量重试”;如果是离线任务或批处理,则可以“更多重试 + 更长退避”。

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,因此你可以在不大改代码的情况下,把稳定性方案直接复用到现有项目中。

FAQ 6:什么时候该升级模型,什么时候该优化重试?

如果失败主要来自限流、短暂 5xx 或网络波动,优先优化重试与超时;如果失败集中在输出不稳定、工具调用复杂、上下文过长,那才考虑升级模型或拆分任务。值得一提的是,59API 提供原生官方质量模型,没有降级,且价格通常更低,适合你在相同质量下做更多 A/B 测试、更多容错实验,而不用担心成本爆炸。

快速排查清单

如果你正在寻找一个兼容性好、价格低、适合频繁验证重试策略的接入层,可以先注册 59API 试跑一版,把 https://api.59api.com 配到你现有的 SDK 里,快速验证你的超时与退避方案。对于长期使用者,它还有推荐返利,适合把试验成本继续压低。

Prêt à commencer ?

Connectez Claude et GPT en quelques minutes aux prix les plus bas, sans bridage. Inscrivez-vous pour votre clé API.

Inscription gratuite