工程答案

什么是 LLM API 故障切换?

LLM API 故障切换是指首次线路失败、超时或不可用后,通过另一条已批准服务线路完成请求的受控尝试。它不是无限重试,也不应悄悄选择未经评估的模型。安全的故障切换会明确合格线路、可重试条件、超时预算、副作用保护,并为每次尝试留下证据。

最后复核 2026-08-15 · 编辑复核: KeepRouter Editorial

重试、供应商切换与模型回退并不相同

动作变化的对象主要风险
重试同一线路除尝试次数外不变重复工作与更长延迟
切换供应商服务供应商或 deployment版本、区域、策略或行为不同
回退模型公开模型 ID 或家族质量、工具、安全与成本不同

应使用能够恢复故障的最小动作。临时连接错误可能适合重试,供应商故障可能需要切换到另一条已批准线路,而模型回退必须经过产品评测,因为它会改变用户收到的结果。

决定哪些失败可以重试

认证错误、错误载荷、不支持字段和无效模型 ID 通常需要修复配置或代码。重试只会消耗时间,也可能增加费用。限流、部分服务器错误、连接重置和超时可以重试,但必须遵守供应商契约与应用截止时间。

流式让决策更复杂。如果客户端已经收到部分文本,重新发送完整请求可能产生重复内容。工具调用风险更高:连接失败前,上游可能已经生成或执行动作。应用需要幂等 Key、持久工具状态,以及何时改为人工检查的明确规则。

建立明确的故障切换阶梯

  1. 列出请求需要的准确端点与能力。
  2. 让每条线路通过相同的流式、工具和输出测试。
  3. 设定线路顺序、单次截止时间与总截止时间。
  4. 按可重试性分类错误,并在永久错误时停止。
  5. 使用稳定 operation ID 防止重复副作用。
  6. 记录每次尝试、线路、错误、用量与最终结果。
  7. 即使用户仍收到 200,也要在故障切换频率变化时告警。

LLM 路由答案解释更完整的策略,故障切换设计指南提供生产测试计划。

计算费用与缓存差异

失败尝试也可能消耗输入或输出 token,第二个供应商也未必共享首次线路的提示词缓存。模型回退还会改变 tokenization 与输出长度。应分别核对每次尝试,并计算整个逻辑操作的成本,而不是只看最终成功响应。

保持用户契约诚实

如果产品承诺某个具体模型,不要悄悄返回另一个家族。如果允许回退,应在合适的产品层说明策略,并在请求证据中保留实际模型。只有恢复后的输出仍满足任务时,可用性才有意义。

常见问题

故障切换与重试一样吗?

不一样。重试可以重复同一线路,故障切换则改用另一条已批准供应商、deployment 或模型线路。

哪些错误不应重试?

无效认证、不支持参数、错误输入和未知模型 ID 通常需要修复,而不是再尝试一次。

流式请求可以故障切换吗?

可以,但必须明确处理部分输出与终止事件状态,避免重复或客户端状态损坏。

失败请求会产生费用吗?

可能会。供应商可能对失败前已消费输入或生成输出计费,应核对每次尝试。

回退应该使用更便宜的模型吗?

只有该模型通过任务验收,并且产品契约允许行为变化时才可以。

参考的一手资料

  1. [1] Cloudflare AI Gateway request handling
  2. [2] Cloudflare AI Gateway dynamic routing
  3. [3] Vercel AI Gateway provider options
  4. [4] OpenRouter provider routing

继续阅读

用真实模型验证契约

创建权限受限的 Key,从实时目录选择模型,并运行应用真正依赖的请求形态。

创建免费 Key · 查看实时模型与价格 · 阅读 Markdown 版本