Skip to content

通过在请求中传入 models 数组,可以为主模型配置一组备用模型。当主模型的所有提供商宕机、限速或内容被过滤时,OpenRouter 自动切换到下一个模型。响应中的 model 字段会返回实际使用的模型,费用也按实际模型计费。

OpenRouter 模型 Fallback

工作原理

在请求中提供按优先级排列的模型 ID 数组。如果第一个模型所有提供商都返回错误,OpenRouter 自动尝试下一个。

typescript
import { OpenRouter } from '@openrouter/sdk';

const openRouter = new OpenRouter({
  apiKey: '<OPENROUTER_API_KEY>',
});

const completion = await openRouter.chat.send({
  models: [
    'anthropic/claude-sonnet-4.6',  // 首选
    'gryphe/mythomax-l2-13b',       // 备用
  ],
  messages: [
    { role: 'user', content: 'What is the meaning of life?' },
  ],
});

console.log(completion.choices[0].message.content);

触发 Fallback 的条件

以下任一情况会触发切换到备用模型:

  • 上下文长度超限
  • 内容被审核拦截
  • 提供商限速
  • 提供商宕机

费用计算

按实际使用的模型计费,响应体的 model 字段会显示实际用到的模型。

与 OpenAI SDK 配合使用

通过 extra_body 参数传入 models 数组:

python
from openai import OpenAI

openai_client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key="<OPENROUTER_API_KEY>",
)

completion = openai_client.chat.completions.create(
    model="openai/gpt-4o",  # 第一个尝试的模型
    extra_body={
        "models": [         # fallback 列表(按顺序尝试)
            "anthropic/claude-sonnet-4.6",
            "gryphe/mythomax-l2-13b",
        ],
    },
    messages=[
        {"role": "user", "content": "What is the meaning of life?"}
    ]
)

print(completion.choices[0].message.content)

跨模型性能优化

配合 provider.sortpartition: "none" 选项,可以跨多个模型按性能全局排序,自动选择当前最优:

typescript
const completion = await openRouter.chat.send({
  models: [
    'anthropic/claude-sonnet-4.5',
    'openai/gpt-5-mini',
    'google/gemini-3-flash-preview',
  ],
  messages: [{ role: 'user', content: 'Hello' }],
  provider: {
    sort: {
      by: 'throughput',
      partition: 'none', // 跨所有模型全局排序,不再按模型分组
    },
  },
});

默认情况下(partition: "model"),首选模型的提供商始终优先。设置 partition: "none" 后,所有模型的所有端点统一排序,哪个当前性能最好就用哪个。


常见问题

Q: 如果 fallback 模型也失败了怎么办?

A: OpenRouter 会返回最后一个模型的错误信息。建议选择多个可靠性不同的备用模型,例如主模型用高性能模型,备用模型用开源模型。

Q: models 数组中的模型可以来自不同的厂商吗?

A: 完全可以。OpenRouter 统一了接口,混合使用 Anthropic、OpenAI、Google 等不同厂商的模型是主要使用场景之一。

Q: 如何知道某次请求实际用了哪个模型?

A: 查看响应体的 model 字段,它会显示实际路由到的模型 ID。