OpenRouter 模型与路由

OpenRouter 模型与路由

最新模型解析

2 分钟阅读

最新模型解析

用一个 slug 始终指向某个模型系列的最新版本

~author/family-latest 这类 slug 会始终解析为给定系列中最新的具体模型,因此你可以针对稳定的最新别名编写代码,并在无需重新部署的情况下跟上新版本。

概述

当模型作者发布新版本时(例如 Anthropic 发布 claude-opus-4.8),OpenRouter 会自动开始把 ~anthropic/claude-opus-latest 路由到该版本。调用该最新别名的旧代码继续可用,只是会运行在最新版本上。

这适合:

  • 产品团队:希望始终使用某作者的一流模型,而不必盯着发行说明。
  • 内部工具和原型:你更关心「最新的 Claude Opus」,而不是为了可复现而钉死某个具体版本。
  • 滚动迁移:希望等新版本稳定之后再钉死版本。

用法

发送聊天补全请求时,将模型设为 ~author/family-latest 形式的 slug:

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

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

const completion = await openRouter.chat.send({
  model: '~anthropic/claude-opus-latest',
  messages: [
    {
      role: 'user',
      content: '用一句话总结:...',
    },
  ],
});

console.log(completion.choices[0].message.content);
// `model` 字段反映实际处理该请求的具体版本。
console.log('Resolved to:', completion.model);

响应

响应的 model 字段反映实际处理该请求的具体模型,而不是你发送的最新别名。这样可以很方便地记录或告警版本切换:

{
  "id": "gen-...",
  "model": "anthropic/claude-opus-4.8",
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "..."
      }
    }
  ],
  "usage": {
    "prompt_tokens": 12,
    "completion_tokens": 85,
    "total_tokens": 97
  }
}

工作原理

每个 ~author/family-latest slug 都会映射到 OpenRouter 上的一个模型系列。请求到来时:

  1. 识别 slug:OpenRouter 看到 ~ 前缀,并确定该最新别名指向哪个系列(例如 ~anthropic/claude-opus-latest → Claude Opus 系列)。
  2. 选择目标:选择该系列中最新的可见模型。新版本发布后会自动接管,客户端无需改动。
  3. 转发请求:请求被转发到解析后的模型,并像你直接调用该具体 slug 一样,在各模型服务提供商之间路由。
  4. 透明报告:响应的 model 字段报告实际处理该请求的具体模型(例如 anthropic/claude-opus-4.8),因此你始终能知道某次调用由哪个版本作答。

如果某个系列没有符合条件的可用模型,请求会返回错误,而不会回退到无关模型。

定价与能力

模型页面 以及 /api/v1/models 响应中的 ~author/family-latest 条目,会报告它们当前解析目标的定价、上下文长度、模态和支持的参数,而不是一份冻结快照。这样:

  • 为用户列出模型的客户端能看到准确的每 Token 价格。
  • 按能力门控的流程(例如「只为视觉请求提供该模型」)能看到最新的模态信息。
  • 成本看板反映真实费率,因为请求按具体模型的价格计费。

当新模型被提升为「最新」时,这些字段会自动更新。

兼容性约定

~latest slug 牺牲精确性以换取连续性。最新别名改指向后,你现有的请求形态仍然可用,即使新模型并不支持你发送的每一个参数。OpenRouter 不会拒绝请求,而是把不受支持的推理参数重映射到最接近的受支持值。

具体来说,如果最新别名开始指向一个必须启用推理的模型:

  • reasoning: { effort: "none" } 会被提升为该模型支持的最低推理强度(例如 minimallow)。
  • reasoning: { enabled: false } 会被翻转为启用,同样使用最低受支持的推理强度。
  • reasoning: { max_tokens: 0 } 同样处理,并丢弃为零的 Token 预算。

这种重映射只适用于 ~latest slug。具体模型 slug 仍使用严格校验。向必须启用推理的模型发送 effort: "none" 会返回 400。如果你需要精确的参数语义,请钉死具体 slug。

~latest 约定分开的是:在所有 slug 上,不受支持的非 none 推理强度都会被映射到最接近的受支持级别(例如在没有 xhigh 的模型上,xhighhigh)。

使用场景

  • 始终在线的助手:把面向用户的智能体指向 ~anthropic/claude-sonnet-latest,即可自动跟上新版本。
  • 评测框架:按作者对「最新」模型做基准测试,而无需修改配置。
  • 企业试点:与合作方共享一个 slug,新模型发布时即可就地升级。

限制

  • 版本随时可能变化:当更新的模型被纳入为最新目标后,后续请求会解析到它。如果你的应用需要固定版本以保证可复现(例如回归测试),请改用具体模型 slug。
  • 只有 latest:路由器始终解析为最新的符合条件的模型。没有内置方式通过最新别名钉在「第二新」或回滚。若要降级,请切换到具体 slug。
  • 排除别名和已隐藏模型:路由器永远不会解析到另一个别名 slug,也不会解析到已被隐藏的模型。

固定到特定版本

需要可复现时,绕过最新解析,直接调用具体模型 slug:

{
  "model": "anthropic/claude-opus-4.8"
}

你可以在响应的 model 字段中看到上次请求解析到的精确 slug(见上文),或在该请求的活动日志中查看。