工程答案
什么是 LLM API 故障切换?
LLM API 故障切换是指首次线路失败、超时或不可用后,通过另一条已批准服务线路完成请求的受控尝试。它不是无限重试,也不应悄悄选择未经评估的模型。安全的故障切换会明确合格线路、可重试条件、超时预算、副作用保护,并为每次尝试留下证据。
最后复核 2026-08-15 · 编辑复核: KeepRouter Editorial
重试、供应商切换与模型回退并不相同
| 动作 | 变化的对象 | 主要风险 |
|---|---|---|
| 重试同一线路 | 除尝试次数外不变 | 重复工作与更长延迟 |
| 切换供应商 | 服务供应商或 deployment | 版本、区域、策略或行为不同 |
| 回退模型 | 公开模型 ID 或家族 | 质量、工具、安全与成本不同 |
应使用能够恢复故障的最小动作。临时连接错误可能适合重试,供应商故障可能需要切换到另一条已批准线路,而模型回退必须经过产品评测,因为它会改变用户收到的结果。
决定哪些失败可以重试
认证错误、错误载荷、不支持字段和无效模型 ID 通常需要修复配置或代码。重试只会消耗时间,也可能增加费用。限流、部分服务器错误、连接重置和超时可以重试,但必须遵守供应商契约与应用截止时间。
流式让决策更复杂。如果客户端已经收到部分文本,重新发送完整请求可能产生重复内容。工具调用风险更高:连接失败前,上游可能已经生成或执行动作。应用需要幂等 Key、持久工具状态,以及何时改为人工检查的明确规则。
建立明确的故障切换阶梯
- 列出请求需要的准确端点与能力。
- 让每条线路通过相同的流式、工具和输出测试。
- 设定线路顺序、单次截止时间与总截止时间。
- 按可重试性分类错误,并在永久错误时停止。
- 使用稳定 operation ID 防止重复副作用。
- 记录每次尝试、线路、错误、用量与最终结果。
- 即使用户仍收到 200,也要在故障切换频率变化时告警。
LLM 路由答案解释更完整的策略,故障切换设计指南提供生产测试计划。
计算费用与缓存差异
失败尝试也可能消耗输入或输出 token,第二个供应商也未必共享首次线路的提示词缓存。模型回退还会改变 tokenization 与输出长度。应分别核对每次尝试,并计算整个逻辑操作的成本,而不是只看最终成功响应。
保持用户契约诚实
如果产品承诺某个具体模型,不要悄悄返回另一个家族。如果允许回退,应在合适的产品层说明策略,并在请求证据中保留实际模型。只有恢复后的输出仍满足任务时,可用性才有意义。
常见问题
故障切换与重试一样吗?
不一样。重试可以重复同一线路,故障切换则改用另一条已批准供应商、deployment 或模型线路。
哪些错误不应重试?
无效认证、不支持参数、错误输入和未知模型 ID 通常需要修复,而不是再尝试一次。
流式请求可以故障切换吗?
可以,但必须明确处理部分输出与终止事件状态,避免重复或客户端状态损坏。
失败请求会产生费用吗?
可能会。供应商可能对失败前已消费输入或生成输出计费,应核对每次尝试。
回退应该使用更便宜的模型吗?
只有该模型通过任务验收,并且产品契约允许行为变化时才可以。
参考的一手资料
- [1] Cloudflare AI Gateway request handling
- [2] Cloudflare AI Gateway dynamic routing
- [3] Vercel AI Gateway provider options
- [4] OpenRouter provider routing