模型回退导读

先把“模型回退”和“供应商选路”分清楚,再谈高可用。

模型回退解决的是“这次请求如果主模型没成功,下一个尝试哪个模型”, 而不是“优先走哪家 provider”。很多团队把这两件事混在一起,最后配置越来越多,却解释不清为什么会那样回退。

什么时候先看这页
当你已经知道主模型是谁,但担心它偶发失败、限流或拒绝时,就该先看模型回退。 如果你主要关心的是供应商优先级,那应该先看 provider selection。

最小模型回退链

通过 models 数组定义优先顺序。TheRouter 会按顺序尝试,直到有一个模型成功返回。

TypeScript
const response = await fetch('https://api.therouter.ai/v1/chat/completions', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer <THEROUTER_API_KEY>',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    models: [
      'anthropic/claude-sonnet-4.5',
      'openai/gpt-5-mini',
      'google/gemini-3-flash-preview',
    ],
    messages: [{ role: 'user', content: 'Summarize this document.' }],
  }),
});

和 OpenAI SDK 怎么配合

如果你的客户端仍然基于 OpenAI SDK,主模型放在 model, fallback 候选放进 extra_body.models

TypeScript
const completion = await client.chat.completions.create({
  model: 'openai/gpt-5',
  extra_body: {
    models: ['anthropic/claude-sonnet-4.5', 'google/gemini-3-flash-preview'],
  },
  messages: [{ role: 'user', content: 'Draft a release note from these bullet points.' }],
});

最容易搞混的 3 个概念

模型回退
作用:
  主模型失败后,尝试下一个模型

控制维度:
  模型列表顺序

常见误区

  • 把模型回退当成供应商优先级配置。
  • 主模型和 fallback 模型差异过大,结果行为波动明显。
  • 写了很长的回退链,但没有任何监控和验证。
  • 默认就堆很多 fallback,实际上根本没看过真实失败分布。
回退链需要能解释
如果你不能解释为什么第二个模型是它,而不是另一个,这条回退链通常还需要继续收敛。

下一步