核心速读 · TL;DR
- 是什么:把模型 slug 设为
openrouter/auto,OpenRouter 就会分析你的 prompt(复杂度、任务类型、模型能力),从精选模型池中挑一个最合适的来回答,并在响应的model字段告诉你实际用了谁。 - 怎么调度:经典版
auto由 NotDiamond 的预测式路由驱动;新版auto-beta是 OpenRouter 自研的"任务感知路由"——先分类任务,再按社区真实消费数据选出该任务下最受欢迎的模型。 - 怎么控制:
cost_quality_tradeoff(0=只要质量,10=只要便宜)、allowed_models(通配符限定模型族)、会话粘性(锁定模型+供应商以保住 prompt 缓存)。 - 值不值:混合工作负载("有的要强推理、有的要快")最划算;确定单一模型时反而应显式指定。路由零加价,按所选模型标准价计费。
背景:为什么需要"模型路由"
过去一年,模型路由从少数团队的"优化技巧",变成了企业管理推理支出的关键基础设施。驱动力来自三个同时发生的趋势。
- Agent 推理支出爆炸。据 NotDiamond 观察,单个 Claude Code 会话可持续数小时、每分钟消耗上百万 token,不少公司在一个季度内就烧完了原本一整年的编码 Agent 预算。
- 用单一前沿模型 = 系统性溢价。真实工作负载里有一条"简单请求的长尾"(改错别字、重命名变量、总结)。让一个昂贵的前沿模型包揽一切,等于为了应对少数难题,在大量简单步骤上持续多付钱。
- 模型能力异质化。不同模型在细分任务上各有强弱。把每个请求发给它最擅长的模型,路由不仅能省钱,还可能在质量上超过任何单一模型(NotDiamond 称可带来 5–20% 的准确率提升)。
OpenRouter Auto Router 是什么
OpenRouter 本身是一个托管式网关 + 路由器:一个 OpenAI 兼容端点(https://openrouter.ai/api/v1)、一把 API Key,背后是横跨 60+ 供应商的 400+ 模型,月吞吐量约 100 万亿 token。Auto Router 是其中负责"自动选模型"的能力,调用方式极简——只需把 model 设为 openrouter/auto。
理解 OpenRouter 的关键:两层独立路由
OpenRouter 的路由由两个相互独立的决策组成。把它们分开看,后面所有配置项都会各就各位。
决定"哪个模型来回答"。由你在 model 字段显式指定,或交给 openrouter/auto 自动选择。Auto Router 作用于这一层。
某个模型可能由多家供应商托管,这一层决定"哪个供应商来提供该模型"。默认按价格加权自动运行,可用 provider 对象覆盖。
一个路由器要做的完整工作有四件,OpenRouter 全部覆盖:模型选择、供应商选择、负载均衡、故障转移。Auto Router 解决的是其中的第一件——也是最"智能"的一件。
| 路由工作 | 决定什么 | OpenRouter 中的位置 |
|---|---|---|
| 模型选择 | 哪个模型回答 prompt | model 字段,或 openrouter/auto |
| 供应商选择 | 哪个供应商提供该模型 | provider 对象(默认按价格) |
| 负载均衡 | 如何在稳定供应商间分配流量 | 价格平方反比加权 |
| 故障转移 | 出错时改用什么 | models 数组 + 供应商回退 |
核心机制:它如何按复杂度选模型
用法只有一行:把模型设为 openrouter/auto,其余与调用普通模型完全一致(支持流式、工具调用等所有标准特性)。
const completion = await openRouter.chat.send({
model: 'openrouter/auto',
messages: [{ role: 'user', content: '用简单的话解释量子纠缠' }],
});
// 响应里的 model 字段会告诉你实际选用了哪个模型
console.log('实际使用:', completion.model);
// → "anthropic/claude-sonnet-4.5"
工作流水线(四步)
两个版本:两种"选模型"的哲学
Auto Router 目前存在两个技术路线不同的实现,理解它们的差异,是理解"按复杂度调度"的关键。
由 NotDiamond 的路由系统驱动,属于预测式路由(predictive routing):用一个学习得到的模型,预测每个候选模型在当前 prompt 上的表现,再按目标(质量/成本/延迟的加权)挑最优者。它是"从数据中学出每个模型的强弱",而非人工规则。
OpenRouter 自研的任务感知路由(task-aware):先用轻量分类器给请求打上任务类型,再按社区真实消费数据,选出该任务下最受欢迎的模型,并按你设定的成本/质量权衡过滤。路由信号来自"成千上万开发者在同类任务上到底在用什么"。
auto-beta 会用一个快速轻量的分类器,把每个 prompt 归入约 30 种细粒度任务类型(如 code:debugging、agent:multi_step_planning、qa_knowledge、math、customer_support、research_report 等),再查询近约 7 天社区在该任务上的消费流向。这意味着当开发者把某类工作负载迁移到新模型时,路由会在数天内自动跟随,无需重训练或人工维护清单。(该机制的部分数值来自第三方转述,以官方页面口径为准:"分类请求 → 按社区消费选最受欢迎模型 → 按成本质量权衡过滤"。)| 维度 | openrouter/auto(NotDiamond) | openrouter/auto-beta(自研) |
|---|---|---|
| 路由范式 | 预测式:学习模型质量预测器 | 任务感知 + 群体智慧(社区消费信号) |
| 决策信号 | prompt 复杂度 / 任务 / 模型能力 | 任务类型分类 + 近 7 天社区消费 |
| 适应新模型 | 需要新的训练/评测信号 | 随社区迁移"数天内自动跟随" |
| 成本/质量权衡 | ✅ cost_quality_tradeoff | ✅ 同样支持 |
| 加价 / 上下文 | 无加价 | 无加价 · 2,000,000 token 上下文 |
关键控制项与技术参数
① 成本 / 质量权衡拨盘 · cost_quality_tradeoff
一个 0–10 的整数,连续地在"质量优先"与"成本优先"之间调节。默认 7——在明显省钱的同时保持较强的输出质量。
纯质量
永远选最强模型
纯成本
永远选最便宜
{
"model": "openrouter/auto",
"plugins": [{
"id": "auto-router",
"cost_quality_tradeoff": 3, // 更偏质量
"allowed_models": ["anthropic/*", "openai/*"]
}]
}
② 限定可选模型 · allowed_models(通配符)
用通配符把路由的候选范围锁在特定供应商或模型族内(合规、成本或偏好考虑)。可按请求传入,也可在 Settings → Plugins 里设默认值,按请求的值会覆盖默认。
| 模式 | 匹配范围 |
|---|---|
anthropic/* | 所有 Anthropic 模型 |
openai/gpt-5* | 所有 GPT-5 变体 |
google/* | 所有 Google 模型 |
openai/gpt-5.1 | 精确匹配 |
*/claude-* | 任意供应商中名字含 claude 的模型 |
③ 会话粘性 · Session Stickiness(缓存感知的关键)
与固定模型不同,Auto Router 每次都可能选不同的模型。若不加约束,多轮对话里逐轮换模型会导致行为不一致、并浪费 prompt 缓存。会话粘性因此同时锁定模型 + 供应商:
- 隐式(自动):OpenRouter 对首条 system 与首条 user 消息做哈希,得出"对话指纹";一旦供应商上报了 prompt 缓存命中,就把该对话钉在同一模型+供应商上,无需配置。
- 显式(
session_id):传入session_id后,首次成功响应即触发粘性(无需等到观察到缓存命中)。多轮对话与 Agent 工作流推荐使用。 - 过期规则:非活动 5 分钟后缓存失效;每次成功请求重置计时;若被钉的供应商报错,则不更新缓存,允许下次重新路由。
④ 定价与透明度
Auto Router 不收取任何额外费用,你只按被选中的那个模型的标准价付费——与直接调用该模型完全一致。响应中的 model 字段永远回传真实使用的模型,决策可审计、不靠猜。
messages 格式(不支持旧式 prompt 字段)。其余标准特性(流式、工具调用等)均随所选模型正常工作。底层路由算法原理(深入)
要判断 Auto Router "聪明在哪、边界在哪",需要把它放进整个模型路由的技术谱系里看。路由可沿三个维度拆解:模型池、决策信号、优化目标。
确定性路由 vs 智能路由
基于预定义规则,不看请求内容:静态编排("总结步骤用 Haiku")、回退("延迟超 2s 换模型")、负载均衡("50/50 分流")。主要服务于可靠性与可预测性。
分析请求内容本身(分类器 / 嵌入 / 级联 / 学习策略),预测哪个模型最能满足目标。主要服务于成本与质量。Auto Router 属于此类。
智能路由的六种技术路径
Auto Router 的两个版本,恰好落在下面这张谱系图的不同位置:NotDiamond 版属于预测式,auto-beta 则是复杂度/任务分类与群体信号的结合。
按 prompt 表层特征硬编码规则(关键词、长度、正则)。快但脆,规则一多就难维护。
脆弱把示例短语嵌入为向量,运行时用余弦相似度匹配最近的路由。理解语义、可扩展,但受示例质量限制。
中等让一个 LLM 读 prompt 并分类。灵活,但给每个请求都加了一次完整 LLM 推理——常常自相矛盾地增加了成本与延迟。
高开销小分类器估计请求难度,按难度匹配模型:简单→便宜,复杂→强大。比 LLM 路由快且便宜,但"复杂度"是粗信号。
务实学习模型预测每个候选模型在该 prompt 上的表现,选最优。最能逼近 Pareto 前沿,数据驱动,但更难构建。
上限最高先发最便宜模型,不达标再逐级升级。对成本保守、自带质量兜底,但要多次串行调用,不适合低延迟场景。
省成本关于"路由延迟开销"的辨析
对预测式/分类式路由最常见的质疑是"多加一步会不会拖慢"。实测框架给出的答案是:通常不会成为瓶颈。
供应商层:价格平方反比加权(确定性层实证)
当模型选定后(无论手选还是 Auto),第二层供应商路由默认这样跑:①先把"过去 30 秒内有明显故障"的供应商降权后置;②在稳定供应商中,按价格的平方反比加权,偏向最便宜者;③其余作为回退。
与训练期的 MoE 区分
模型路由 ≠ 混合专家(MoE)。MoE 在训练期把 token 分派给单个模型内部的专家子网络;模型路由在推理期把整个请求分派给多个独立训练的模型。二者类比,但处在技术栈的不同层级。
OpenRouter 路由家族全景
Auto Router 只是 OpenRouter 路由体系里的一员。理解周边组件,才能知道何时该用哪个。
| 组件 | 作用层 | 做什么 | 关键参数 / 触发 |
|---|---|---|---|
Auto Routeropenrouter/auto | 模型 | 按复杂度/任务跨全部任务类型智能选模型 | cost_quality_tradeoff、allowed_models |
Auto Router Betaopenrouter/auto-beta | 模型 | 任务感知 + 社区消费信号选模型 | 无加价 · 2M 上下文 |
Pareto Routeropenrouter/pareto-code | 模型 | 专为编码:按最低编码分选模型,落在质量/成本前沿 | min_coding_score(0–1) |
| Auto Exacto | 供应商 | 对工具调用请求默认启用,按吞吐/工具成功率/基准把供应商质量优先排序 | 默认开启;:floor 可退回价格优先 |
| :nitro / :floor | 供应商 | 模型 slug 后缀::nitro=按吞吐(快),:floor=按价格(省) | 一行字符串改动 |
| models 数组 | 故障转移 | 按优先级列出备用模型,主模型报错时依次尝试 | 失败请求不计费 |
Fusionopenrouter/fusion | 集成 | 多模型"审议":专家模型并行分析,再由裁判模型综合(非复杂度路由) | 宣称可超越前沿单模型 |
名字取自 Pareto 效率:在给定成本/能力点上,路由到质量/成本前沿上的编码模型。你只需给一个 min_coding_score(0–1,越高越强也越贵);省略则默认选最强的编码模型。对同一分值,选择是确定性的(按价格排序),但候选清单会随新模型与基准变化而更新。仅适用于编码任务。
这是供应商层而非模型层的路由。它用真实性能信号(实时吞吐、工具调用成功率、内部基准)对供应商重排序,把表现差的后置。成功率由"工具调用参数对 JSON Schema Draft 7 的校验"推导。OpenRouter 称启用后在 tau-bench 等工具基准上有可观提升。想退回价格优先,用 :floor 或 provider.sort:"price" 即可。
竞品与生态对比
先厘清一组常被混用的概念,再看横向对比。
| 方案 | 形态 | 路由范式 | 宣称/实测效果 | 定位要点 |
|---|---|---|---|---|
| OpenRouter Auto | 托管服务(调用即用) | 预测式(NotDiamond)/ 任务感知(beta) | 路由零加价;省钱幅度取决于负载 | 400+ 模型、60+ 供应商;网关+路由一体 |
| NotDiamond | 商用路由(可独立用) | 预测式,厂商中立 | 宣称质量可超最优单模型 5–20% | 质量优先、可定制成本/延迟;精度高但偏贵 |
| RouteLLM(LMSYS) | 开源库(自托管) | 在人类偏好数据上训练分类器(矩阵分解 / BERT) | 论文:MT-Bench 上约 2× 成本下降、质量损失极小 | 研究导向,产品化需自行大量工程 |
| Martian | 商用路由 | 实时动态路由,按应用流量自适应 | 厂商宣称在优化场景下最高约 98% 成本节省 | 面向生产的动态选路 |
| LiteLLM / Portkey | 网关(可自托管) | 以确定性路由为主(规则/回退/均衡) | 强于治理:RBAC、成本归属、审计 | 需自托管控制、可审计基础设施时的选择 |
适用场景、局限与选型清单
- 通用型应用:不知道用户会发来什么类型的 prompt。
- 混合负载:有的要强推理、有的只需快速补全。
- 成本优化:让简单任务自动流向高效便宜的模型。
- 质量优化:确保复杂 prompt 被送到有能力的模型。
- 实验探索:发现哪个模型最适合你的用例。
- 已确定单一模型:直接显式指定,别用 Auto。
- 仅支持 messages 格式:不支持旧式
prompt。 - 多轮不加粘性:会换模型、丢缓存、行为漂移。
- 需要治理/自托管:RBAC、审计等应看 LiteLLM/Portkey。
- 推理支出很小:路由 ROI 与花费规模正相关。
选型评估清单(买或自建都适用)
- 决策信号是什么?只看 header/规则/可用性 = 确定性路由;看内容则要问:分类器、语义、预测,还是级联?
- 模型池有多大?是否锁定单一供应商?能否同时覆盖闭源与开源?新模型接入有多快?
- 目标函数可控吗?能否表达成本/质量/延迟的偏好,还是只优化单一维度?(Auto Router 用 0–10 拨盘覆盖此项)
- 路由自身开销多大?若给每个请求加 1s 与 $0.10,就吃掉了它创造的大半价值。
- 是否厂商中立?模型格局持续变动,中立方案长期通常更有价值。
- 能否处理 Agent 负载?会话上下文、工具 schema、prompt 缓存、长上下文行为都要考量。
- 是否缓存感知?对 Agent 负载这是决定性的——务必问清缓存 TTL 过期、压缩事件、子 Agent 级路由如何处理。
结论
OpenRouter Auto Router 把"按任务复杂度选模型"这件原本需要自建分类器与评测管线的事,压缩成了一次零加价的 API 调用。
它的技术亮点不在单一算法,而在工程整合度:预测式/任务感知的智能选模型(第一层)、价格加权与自动故障转移的确定性供应商路由(第二层)、以及针对 Agent 时代最棘手问题的缓存感知会话粘性,被打包进同一个 OpenAI 兼容端点。cost_quality_tradeoff 与 allowed_models 又把控制权还给开发者,而 model 回传字段保证了决策透明可审计。
它的边界同样清晰:作为托管服务,它以放弃控制面所有权换取更低的运维负担,因此不适合强治理/自托管/可审计需求;其价值高度依赖工作负载形态——只有当流量里存在"可被便宜模型无损处理的简单长尾"时,路由的省钱效应才真正兑现。对绝大多数面向不确定输入的混合负载而言,把 openrouter/auto 作为默认、辅以会话粘性与合理的成本/质量拨盘,是一个低风险、高性价比的起点。