Agent 工程 · 推理层基础设施

多模型路由 Model Routing
把每个请求送给「最便宜的够用模型」

Microsoft 刚曝光的 Project Perception 在三家模型间按任务路由;RouteLLM 实测省 85% 成本保 95% 质量。「用哪个模型」正在从人工选择变成一个工程系统——这就是路由层。

⚡ 30 秒速览

你的应用每天发出成千上万次 LLM 请求,其中大部分是「帮我改个措辞」这种简单活,少部分是「重构这个模块」这种硬活。全部用旗舰模型,是拿大炮打蚊子,账单爆炸;全部用便宜模型,硬活答不好,质量崩盘。

模型路由器(Model Router)就是解决这个两难的中间层:它先看一眼每个请求,判断难度和类型,再把它转发给「能答好的模型里最便宜的那个」。应用只管调一个统一入口,后面用了谁由路由器决定。

应用请求 简单的、难的混在一起 路由器 判断难度 → 选模型 简单请求 → 轻量模型 例:$1 / 百万 token 档 中等请求 → 中档模型 例:$2.5 / 百万 token 档 硬核请求 → 旗舰模型 例:$5 / 百万 token 档
路由器的核心工作:让「难度」和「模型档位」匹配起来。价格档参考 GPT-5.6 三档定价(Luna $1 / Terra $2.5 / Sol $5 每百万输入 token,官方公布)。
85%
RouteLLM 实测最高省成本
(MT Bench,保 95% GPT-4 质量)
30%
AWS Bedrock 官方宣称
不损精度的成本降幅上限
40-85%
2026 年业界综述报告的
调优路由层账单降幅区间

数据来源:RouteLLM 官方 README(lm-sys)、AWS Bedrock 官方产品页、Braintrust / Digital Applied 2026 综述(第三方,见文末来源清单)。

🧭 背景与动机:为什么 2026 年它突然变成必修课

之前的世界:一个应用绑一个模型

两年前做 LLM 应用,标准做法是选定一个模型,把 API key 写进配置,完事。那时模型选择少、价差小,「选型」是上线前做一次的决定。

现在的局面完全不同。同一件事可用的模型太多了,而且价差拉到了几十倍:GPT-5.6 一家就分 Sol($5/$30 每百万输入/输出 token)、Terra($2.5/$15)、Luna($1/$6)三档;Kimi K3 这样的开源前沿模型 API 定价 $3/$15,还能自己部署;Thinking Machines 的 Inkling 干脆 Apache 2.0 放出权重。模型能力此消彼长,上个月的最优选这个月就可能被超越。

手工选型撑不住了

面对这个局面,如果还靠工程师拍脑袋定「我们全用旗舰」,会遇到三个具体的痛:

一句话动机:当「可选模型 × 价格档位 × 能力差异」的组合复杂到人脑管不过来,「用哪个模型」就必须从配置项变成系统的运行时决策——这个决策系统就是路由层。

🏥 类比:医院分诊台
挂号大厅的分诊护士不给你看病,但她决定你去全科还是专科:感冒去全科(便宜、快),疑难杂症转专家号(贵、强)。模型路由器就是 LLM 世界的分诊台——它自己不回答问题,只负责「这个问题值得花多少钱、交给谁」。分诊错了有两种代价:小病挂专家号(浪费钱),大病进全科(耽误事)。路由器的全部技术,都是在压低这两种错误的概率。

🧩 核心概念

路由器(Router)vs 网关(Gateway)

这两个词经常混用,但 OpenRouter 官方博客给了清晰的区分:

网关(Gateway)= 统一入口
一个端点、一套鉴权、统一限流和可观测。它解决「接入乱」的问题——你不用为每家供应商各写一套客户端。
类比:公司前台。所有访客从这进,登记、发牌、指路。
路由器(Router)= 每次请求的分发决策
决定「这一条请求由哪个模型、哪个供应商来处理」。它解决「选谁」的问题。
类比:前台背后的调度员,决定这位访客具体见哪个部门的哪个人。很多产品既是网关又是路由器(如 OpenRouter、LiteLLM)。

路由的两层决策

OpenRouter 官方把路由拆成两个相互独立的决策,这个拆分对理解一切路由产品都适用:

请求 第 1 层:模型路由 哪个「模型」来回答? 按难度 / 任务类型 / 成本档 第 2 层:供应商路由 同一模型,哪家「来源」服务? 按价格 / 时延 / 稳定性 / 合规 例:这条请求该用 Claude 还是轻量模型? 例:这个开源模型走官方 API 还是某推理云?
两层路由决策(依据 OpenRouter 官方博客的框架)。自托管闭源模型时第 2 层退化,但用开源模型时它非常关键——同一模型在不同供应商那里价格、速度、量化精度都不同。

术语表

强/弱模型对(model pair)RouteLLM 的基本设定:一个贵而强的模型 + 一个便宜但弱的模型,路由器只需二选一。是学习型路由最简洁的形态。
胜率预测(win rate)路由器对「强模型的回答会比弱模型好多少」的预估。RouteLLM 路由器的唯一核心接口就是:给定提示词,算出强模型的预期胜率。
成本阈值(cost threshold)胜率超过阈值才动用强模型。阈值调高=更省钱但质量风险大,调低=更保质量但更贵。它是路由系统的「总旋钮」。
回退(fallback)首选模型/供应商失败时自动尝试下一个。OpenRouter 里模型级回退用 models 数组,供应商级回退默认开启。
量化(quantization)把模型权重压缩成低精度以省显存提速。同一开源模型,不同供应商可能跑不同量化版本,质量有差异——OpenRouter 官方明确承认这一点。
响应质量差(quality difference)AWS Bedrock 的路由判据:只有当另一个模型的预测回答质量比「锚定模型」好出设定幅度(如 10%),才切换过去。
Bandit 在线路由把路由当「多臂老虎机」问题:边服务边根据真实反馈调整策略,不依赖离线训练好的静态分类器。据 2026 年综述(BaRP、PILOT 等),这是当前研究前沿。

⚙️ 路由决策的四种做法(由浅入深)

「看一眼请求就知道该给谁」听起来玄,拆开看其实是四代技术,一代比一代聪明:

规则路由(if-else)
按请求元数据手写规则:带 code 标签的走编码强的模型、超长上下文走 1M 窗口模型、内部工具走便宜档。零训练成本、完全可控、可审计,但规则粒度粗,覆盖不了「同类任务难度不同」的情况。绝大多数团队的第一步。
学习型分类器(RouteLLM 代表)
用真实偏好数据(如 Chatbot Arena 的人类投票)训练一个小模型,预测「强模型能赢弱模型多少」,再拿胜率和阈值比大小。RouteLLM 提供 4 种开箱路由器:矩阵分解 mf(官方推荐)、加权 Elo 的 sw_ranking、BERT 分类器、LLM 分类器 causal_llm。官方强调:虽然它们在 GPT-4/Mixtral 这对模型上训练,但换成别的强弱模型对也能泛化,无需重训
质量预测路由(云厂商代表)
AWS Bedrock 的智能提示词路由对每条请求预测每个候选模型的回答质量,再结合「响应质量差」判据和回退模型做选择;Azure AI Foundry 的 model router 同样用一个训练过的小模型实时选路,提供平衡/成本/质量三种模式(Azure 部分为多来源转述,细节以微软官方文档为准)。与第 2 代的区别:不只分「难/易」,而是直接估「谁答得好」。
在线学习路由(研究前沿)
静态分类器有个死穴:训练分布和你的真实流量不一致就会失准。Bandit 路由(据 2026 年综述提到的 BaRP、PILOT 等工作)在线上边跑边学,用真实反馈持续修正路由策略。2026 年的一篇动态路由综述把设计空间归纳为三轴:何时决策、依据什么信息、怎么计算——并指出设计良好的路由系统可以胜过任何单一最强模型。

拿 RouteLLM 把机制看透

以最经典的第 2 代为例,一条请求进来后发生了什么:

用户提示词 "帮我证明这个不等式" 路由器(如 mf) 预测强模型胜率 win rate = 0.34 胜率 > 阈值 0.116 → 强模型 强模型明显更好,值得花钱 胜率 ≤ 阈值 → 弱模型 差距不大,便宜的就够用 阈值从哪来?用你自己的流量样本「校准」出来(见下)
RouteLLM 的决策核心:预测胜率 → 和阈值比大小。本例胜率 0.34 > 阈值 0.116,走强模型。(机制与数值示例来自 RouteLLM 官方 README)

阈值不是拍脑袋定的,是「校准」出来的:你告诉工具「我希望大约 50% 的请求走强模型」,它在数据集上反推出对应阈值(官方示例:50% 对应 0.11593)。官方同时提醒——默认用 Chatbot Arena 数据校准,你的真实流量分布和 Arena 不同,所以应该用贴近自己业务的查询样本重新校准,否则实际分流比例会跑偏。

🔧 怎么用(路径一):自托管开源框架 RouteLLM

适合:想把路由逻辑握在自己手里、有工程能力自己部署的团队。RouteLLM 是 LMSYS(Chatbot Arena 团队)出品,Apache 2.0,GitHub 约 5k star。以下步骤和代码全部来自官方 README:

安装
pip install "routellm[serve,eval]"
初始化控制器:替换 OpenAI 客户端
指定路由器与强/弱模型对。
import os
from routellm.controller import Controller

os.environ["OPENAI_API_KEY"] = "sk-XXXXXX"
# 弱模型走 Anyscale 的 Mixtral(官方示例,可换任意供应商)
os.environ["ANYSCALE_API_KEY"] = "esecret_XXXXXX"

client = Controller(
  routers=["mf"],                      # 官方推荐的矩阵分解路由器
  strong_model="gpt-4-1106-preview",   # 强模型
  weak_model="anyscale/mistralai/Mixtral-8x7B-Instruct-v0.1",  # 弱模型
)
校准阈值
告诉它你想要的强模型占比,反推阈值:
> python -m routellm.calibrate_threshold --routers mf \
    --strong-model-pct 0.5 --config config.example.yaml
For 50.0% strong model calls for mf, threshold = 0.11593
发请求:model 字段写成「路由器-阈值」
response = client.chat.completions.create(
  model="router-mf-0.11593",   # 用 mf 路由器、阈值 0.11593 路由本请求
  messages=[{"role": "user", "content": "Hello!"}]
)

不想改代码?它还能起一个 OpenAI 兼容服务器(python -m routellm.openai_server ...),任何现有 OpenAI 客户端把 base URL 指过来就接上了路由。模型接入靠 LiteLLM 打底,支持大量开源/闭源供应商,也支持 Ollama 本地模型。

两个官方注明的细节:① 无论用哪对模型,mfsw_ranking 路由器目前都需要 OPENAI_API_KEY 来算嵌入;② 仓库研究底座是 2024 年论文(arXiv:2406.18665),工程上活跃但理念偏「双模型对」,要在 3 个以上模型间路由需自行扩展 Router 抽象类(只需实现 calculate_strong_win_rate 一个方法)。

🌐 怎么用(路径二):托管服务 OpenRouter

适合:不想自己运维路由层,希望一个 API key 接入所有模型的团队。OpenRouter 是「你直接调用的路由器」:一个 OpenAI 兼容端点,前面 400+ 模型、60+ 供应商,月处理 100 万亿 token(官方数字)。以下机制与代码均来自其官方博客(2026-06-12)与文档:

最小接入:一行换模型

from openrouter import OpenRouter

client = OpenRouter(api_key="<OPENROUTER_API_KEY>")
resp = client.chat.send(
    model="anthropic/claude-sonnet-4.6",   # 改这个字符串就是换模型
    messages=[{"role": "user", "content": "Summarize this changelog."}],
)
# 已在用 OpenAI SDK?把 base URL 指到 https://openrouter.ai/api/v1 即可

默认的供应商路由:平方反比价格加权

同一个模型有多家供应商时,你不配置任何东西的话,OpenRouter 按三步走:① 近 30 秒内出过故障的供应商排到队尾;② 在稳定供应商里按「价格的平方反比」加权抽选;③ 其余作为回退。官方算例:A($1/M)、B($2/M,刚出过故障)、C($3/M)三家,A 被优先尝试的概率约是 C 的 9 倍(1/1² 对 1/3²),B 垫底。平方的意义是把流量狠狠推向最便宜的健康供应商,而不是均匀摊。

常用控制手段

需求写法效果
合规要求只走指定供应商provider.order + allow_fallbacks: false按序尝试,失败即止,绝不静默回退到第三方
用户对话,时延敏感模型名后加 :nitro等价 sort:"throughput",按吞吐路由
批处理,成本封顶模型名后加 :floor,配 max_price等价 sort:"price",按最低价路由
跨模型容灾models: ["主模型","备模型"] 数组整个模型不可用时按序降级;失败请求不计费
嫌某供应商量化版本质量差provider.ignore / quantizations拉黑或限定精度等级
不知道用户会发什么model: "openrouter/auto"交给 Auto Router 逐条选模型(NotDiamond 驱动)

Auto Router:逐条请求自动选模型

{
  "model": "openrouter/auto",
  "plugins": [{
    "id": "auto-router",
    "cost_quality_tradeoff": 3,              // 0-10 旋钮:0 最重质量,10 最重省钱,默认 7
    "allowed_models": ["anthropic/*", "openai/*"]   // 限定候选池
  }]
}

响应里的 model 字段会告诉你实际是谁答的。官方明确:Auto Router 不额外收费,按被选中模型的标准价计费。另一个容易忽略的默认行为:带工具调用的请求默认走 Auto Exacto——一个「质量优先」的路由步骤,按工具调用质量给供应商分层(层内保持价格排序);想让工具请求回到纯价格路由,需显式加 :floorsort:"price"

☁️ 怎么用(路径三):云厂商内置路由

适合:已经在某朵云上、想要「打开开关就有」的托管路由。以 AWS Bedrock 智能提示词路由为例(以下来自 AWS 官方文档):

aws bedrock create-prompt-router \
    --prompt-router-name my-router \
    --models '[{"modelArn": "arn:aws:bedrock:<region>::foundation-model/<modelA>"}]' \
    --fallback-model '[{"modelArn": "arn:aws:bedrock:<region>::foundation-model/<modelB>"}]' \
    --routing-criteria '{"responseQualityDifference": 0.5}'

官方自己列出的三条限制:只对英文提示词做过优化;不能根据你应用的实际表现数据调整路由决策;对特殊/垂直场景未必给出最优路由(效果取决于其训练数据)。这三条基本框定了「云内置路由」的适用边界:通用负载好用,深度定制乏力。

微软侧对应产品是 Azure AI Foundry 的 model router:用训练过的小模型逐条实时选择 Azure 托管模型,提供平衡/成本/质量三种模式和自动故障转移(此段来自多家第三方转述,具体能力以微软官方文档为准)。

🎯 使用场景与案例

场景一:多模型安全运营(本周时事)

:Microsoft(内部代号 Project Perception,据 The Information 报道,尚未正式发布)。问题:安全工作负载差异极大——漏洞分析、代码审查、威胁检测、事件响应对模型能力的要求各不相同,且单一供应商锁定既贵又有风险。做法:产品同时接入 Microsoft、OpenAI、Anthropic 三家模型,路由层按任务把请求发给「性能、速度、成本平衡最优」的那个。意义:被广泛解读为「把模型竞争变成平台机会」——不论哪家模型在单项跑分领先,平台靠路由层都能吃到红利。

场景二:混合流量的成本工程

:任何客服机器人、编码助手、文档处理类应用。问题:流量里「查订单状态」和「分析合同风险」混在一起,全走旗舰模型账单失控。做法:规则路由打底(按功能分档)+ 学习型路由器处理灰色地带。效果参考:RouteLLM 在 MT Bench 上实测最多省 85% 成本、保住 95% 的 GPT-4 质量,且比商业路由方案便宜 40% 以上(官方 README);2026 年多家综述给出的实践区间是 40-85%(第三方数字,你的里程可能不同)。

场景三:高可用容灾

:对可用性有 SLA 的生产应用。问题:供应商限流/宕机直接打穿服务。做法:供应商级自动回退(OpenRouter 默认开启,故障供应商 30 秒降权)+ 模型级回退数组兜底(触发条件包括上下文超限、审核拦截、限流、宕机);失败请求不计费(zero-completion insurance)。

为什么说它是 2026 的「推理层显学」:本周 Fireworks AI 以 $175 亿估值融资 $15 亿(据 Axios),其核心叙事正是「企业会多模型并用,推理层是持续大头」;MCP Gateway 也在向统一控制面演化(2026 综述)。路由不再是省钱小技巧,而是多模型时代的默认架构层。

⚖️ 对比与选型

方案形态路由智能适合谁
RouteLLM(lm-sys)自托管框架,Apache 2.0学习型胜率路由(4 种路由器)+ 阈值校准 + 评测框架想拥有路由逻辑、能自己部署调优、以双模型对为主的团队
OpenRouter托管网关+路由器,直接调用供应商价格加权 + 故障降权 + 双层回退 + Auto Router 逐条选模型想一个 key 用遍 400+ 模型、把运维交出去的团队
LiteLLM自托管网关(开源 SDK/代理)统一 100+ 模型接口,路由规则自己写需要自托管控制面、审计、per-team RBAC 的团队(OpenRouter 官方也承认这类需求该找 LiteLLM/Portkey)
AWS Bedrock 提示词路由云内置,serverless 端点响应质量预测 + 质量差判据 + 回退模型;同家族二选一已在 AWS、负载以英文为主、想零运维起步的团队
Azure model router云内置(AI Foundry)小模型实时选路,平衡/成本/质量三模式(第三方转述)已在 Azure 生态的团队

怎么选:三个判断题

普遍的务实路径:规则打底 → 网关统一接入 → 灰色地带上学习型路由 → 有真实反馈后考虑在线学习,每一步都能独立产生收益。

🕳️ 常见坑与限制

📚 学习资源