LLM API Fallback Routing:构建更稳的多供应商 AI 应用
LLM API fallback routing 实战指南:故障切换顺序、重试、延迟、成本护栏、监控,以及 OpenAI-compatible SDK 示例。
LLM API Fallback Routing:构建更稳的多供应商 AI 应用
LLM API fallback routing 的意思是:当第一条供应商、模型或区域路径不可用、被限流、延迟过高或超出预算时,应用可以尝试备用路径。好的方案不是“随机换一个供应商试试”,而是一套可观测的路由策略:分类失败、谨慎重试、保持请求兼容、限制成本、监控每一次跳转,并保留人工覆盖能力。
TheRouter 做的正是这层运行时能力。我们会把 OpenAI-compatible 请求路由到已配置的供应商,并在已实现的产品路径中支持 provider/model routing 和 fallback。本文只讲可验证的工程模式,不承诺零停机、支持所有模型,也不承诺一定最便宜。
为什么 LLM API fallback routing 重要
LLM API 依赖快速变化的模型目录、配额系统、区域 endpoint 和供应商自身的稳定性。生产应用可能因为上游返回 429、模型 ID 变更、某个区域变慢、账户 quota 用尽,或供应商 incident 而失败。OpenAI 文档说明 rate limits 可能按模型或账户维度生效,并建议对 429 使用 exponential backoff;错误码文档也区分了认证、权限、限流和服务端错误。来源:OpenAI rate limits、OpenAI error codes,检索于 2026-06-08。
Fallback routing 把这类风险变成策略问题。不要把供应商专属重试逻辑散落在每个业务服务里,而应把决策放在 API 边界:哪些错误可重试、哪个备用模型可接受、下一次应该走哪个供应商,以及什么时候应该快速失败。
策略 1:按顺序做 provider failover
最简单的 LLM API fallback routing 是有序列表:先走 primary provider,再走一到两个能满足同一请求形态的 backup。它适合“正确性和兼容性比极致省钱更重要”的场景。
一条可靠的有序 failover 规则至少包含四项:
- Primary route:首选供应商或模型。
- Compatible backups:能接受同一 OpenAI-compatible 请求体,或已知可安全转换的请求体。
- Retryable status codes:例如临时的 429、500、502、503、504。
- Stop conditions:认证错误、无效模型 ID、请求格式错误或策略错误。
不要对所有错误都 fallback。如果请求本身无效,把它发给三个供应商只会让排障更混乱。如果是 quota 或 billing 错误,需要的是人工处理和告警,而不是继续重试。
策略 2:weighted routing 与成本护栏
Weighted routing 会按比例把流量分发给多个供应商。它适合逐步迁移、新模型灰度,或给高价值请求保留更强模型。但它必须搭配成本护栏,因为备用路径可能比 primary route 贵很多。
一个实际策略可以是:日常摘要 80% 走低成本模型,20% 走第二供应商用于健康采样;客服升级请求则直接走更强模型。关于供应商比较和配置,可继续看我们的 OpenAI-compatible API providers、中国 OpenAI-compatible APIs、SiliconFlow、阿里云百炼 Model Studio 和 DeepSeek 页面。
重点是统计“每次成功请求的有效成本”,而不是只看标价。重试、更长输出、缓存未命中和失败尝试都会改变真实账单。
策略 3:按延迟选择 provider
Latency-aware routing 会根据近期性能选择供应商。它比有序 failover 更复杂,因为你需要新鲜 telemetry:首 token 时间、总生成时间、错误率和区域延迟。
这类规则要谨慎使用。一个供应商可能短对话最快,却不适合长上下文代码分析。Streaming 也会影响体验:首 token 很快但尾部较慢的模型,在聊天界面里可能比总耗时更短但长时间沉默的模型更好用。
稳妥做法是:保留首选 route,持续测量 backup health,并且只有当 backup 有足够近期成功样本时才迁移流量。不要基于一次慢请求做路由判断。
OpenAI-compatible SDK 示例
OpenAI Python SDK 支持自定义 base_url,这也是很多 OpenAI-compatible providers 能在不大改应用代码的情况下切换的原因。来源:OpenAI libraries,检索于 2026-06-08。
from openai import OpenAI, APIError, RateLimitError
ROUTES = [
{
"name": "primary",
"base_url": "https://api.primary-provider.example/v1",
"api_key": "PRIMARY_API_KEY",
"model": "primary-chat-model",
},
{
"name": "backup",
"base_url": "https://api.backup-provider.example/v1",
"api_key": "BACKUP_API_KEY",
"model": "backup-chat-model",
},
]
def is_retryable(exc: Exception) -> bool:
status = getattr(exc, "status_code", None)
return isinstance(exc, RateLimitError) or status in {500, 502, 503, 504}
def chat_with_fallback(messages):
last_error = None
for route in ROUTES:
client = OpenAI(api_key=route["api_key"], base_url=route["base_url"])
try:
return client.chat.completions.create(
model=route["model"],
messages=messages,
timeout=30,
)
except APIError as exc:
last_error = exc
if not is_retryable(exc):
raise
raise last_error
这个示例刻意保持精简。生产代码还应加入带 jitter 的有界重试、request ID、结构化日志、idempotency 规则,以及清晰的 model substitution 策略。
Router 应该保留哪些信息
Routing layer 应该让供应商切换更安全,而不是危险地“透明”。至少要保留 request ID、实际 provider、实际 model、status code、latency、可用时的 token usage,以及 fallback reason。如果某个 provider 返回只有它自己支持的字段,只有在文档或代码验证后才应保留;不要假设所有上游响应形态完全一致。
Solo.io Agentgateway 文档把 OpenAI-compatible provider configuration 放在 gateway 层,用于集中处理 routing、policy 和 provider setup。Portkey 也记录了用 unified API 在多个供应商之间路由请求的方式。来源:Agentgateway OpenAI-compatible provider docs、Portkey unified API guide,检索于 2026-06-08。
信任 fallback 前要监控什么
日志或指标至少应回答这些问题:
- 哪个 provider 处理了请求?
- 这是 primary route 还是 fallback route?
- 哪个错误触发了 fallback?
- 总共尝试了几次?
- 首 token 时间和总延迟是多少?
- Backup model 是否改变了输出质量或 token usage?
- Fallback 是否让该 workload 超出预算?
告警不应只看总错误数,也要看持续 fallback 量。用户侧可能看起来“都成功了”,但系统已经悄悄把 60% 流量送到了更贵的 backup。
Production checklist
在把 LLM API fallback routing 用到客户流量前,先确认这些基础项:
- 定义 retryable 与 non-retryable errors。
- 确保 backup models 与请求形态兼容。
- 设置 per-route budget 和 max-attempt limits。
- 记录 provider、model、latency、status、token usage 和 fallback reason。
- 在真实 incident 前做 synthetic failure 测试。
- 保留手动禁用某个 provider 的 override。
- 说明哪些 workload 可以使用更低成本或能力较弱的 backup。
- 流量迁移前复核 provider terms、数据处理规则和区域要求。
FAQ
Fallback routing 和 load balancing 一样吗?
不一样。Load balancing 分发正常流量;fallback routing 处理首选路径不健康、被限流、太慢或不可用时的异常。很多团队会同时使用两者。
Fallback routing 能保证零停机吗?
不能。它降低一类上游依赖风险,但不能保证零停机。你自己的网络、请求兼容性、供应商账户状态、quota 和应用逻辑依然会影响可用性。
每个请求都应该有 backup model 吗?
不一定。有些 workload 对模型差异很敏感。对合规、评测或需要稳定行为的流程来说,快速失败并告警可能比静默切换模型更安全。
TheRouter 在哪里发挥作用?
TheRouter 位于应用和上游供应商之间,作为 API routing layer。我们会把 OpenAI-compatible 请求路由到已配置的供应商,并在已实现的路径中支持 provider/model routing 和 fallback。可以从我们的 docs 开始,也可以先比较 OpenAI-compatible API providers。
Sources 检索于 2026-06-08: OpenAI rate limits, OpenAI error codes, OpenAI libraries, Agentgateway OpenAI-compatible provider docs, Portkey unified API guide. Provider capabilities and pricing change; verify live docs before procurement or migration decisions.