技术调研 · RouteLLM × LLMRouter
先决策、后生成:常规请求由弱模型承接,高难度查询再调用强模型
RouteLLM(LMSYS / UC Berkeley)· LLMRouter(UIUC)
Wang Kang · September 2026
主线:先以 RouteLLM 建立二档降本基线,再按需扩展至 LLMRouter。
同样三条请求,两种分流策略的对比。
3 / 3 走强模型 · 成本高
1 / 3 走强模型 · 质量仍够用
路由的价值:简单查询交给弱模型,困难查询再调用强模型。
路由策略在期望意义下权衡回答质量与调用成本。
路由与 Reward Model 常被混淆:二者观察的对象与决策时点不同。
在花钱生成之前决定用谁
在回答已经生成之后评价好坏
若在回答生成后再选择模型,生成费用已经发生——这不属于路由。
路由发生在生成之前。
def route(query: str, alpha: float = 0.5) -> str:
p = score_fn(query) # 强模型胜率 in [0, 1]
return STRONG if p >= alpha else WEAK
score_fn 可替换:MF / SW / BERT / Causal…LMSYS / UC Berkeley · ICLR 2025。候选池仅含强、弱两个模型。
# 原 OpenAI 客户端
client = OpenAI(...)
# 替换为 RouteLLM 兼容客户端
client = routellm.Client(...)
# 业务调用代码基本不变
resp = client.chat.completions.create(...)
API 形态与 OpenAI 客户端一致,替换客户端即可接入,无需重写调用逻辑。
适合作为「强/弱两档降本」的基线方案;下文依次说明路由原理、胜率模型与 $p$ 的估计。
RouteLLM 先学习「查询是否更宜交给强模型」的胜率,再用阈值将概率转为分流动作。
Arena / 金标 / 裁判
$(q,M_s,M_w,l)$
$P_\theta(\mathrm{win}_{M_s}\mid q)$
即 score_fn
按目标强模型
调用占比选定
估 $p$、比 $\alpha$
仅调用一侧
依据「哪一模型回答更优」的标签,学习何种查询更宜交给强模型。
并非先调用两个模型再比较;而是先决策,再仅调用被选中的模型。
$\htmlClass{sym-a}{p}=P(M_s\text{ 优于 }M_w\mid q)\in[0,1]$: 给定查询时,强模型相对更优的概率估计。
成本翻倍,且路由必须在生成之前完成。
输入仅为查询文本,不含回答正文。
虚线为阈值 $\alpha$(例:$0.5$);$p\ge\alpha$ 时选择强模型。
胜率模型即路由器本体:一个以查询为输入、以标量 $p$ 为输出的估计器, 并非负责生成回答的 LLM。
四种实现共享同一接口;替换实现即更换 score_fn。
矩阵分解 + Bradley–Terry;查询嵌入 × 模型向量得匹配分
按查询相似度对历史偏好加权;无独立神经网络训练阶段
BERT-base 分类头;正类概率即 $p$
因果语言模型预测 win/lose;取 win 概率
生产环境通常以 MF 为默认;第 4 章逐一展开四种参数化。
将查询与模型映射到同一嵌入空间;分差经 sigmoid 得到强模型胜率 $p$。
读法:$s$ 为匹配分,$\sigma$ 把任意实数压到 $(0,1)$。 强分高于弱分 → 分差为正 → $p$ 接近 $1$;反之接近 $0$;分差为 $0$ 则 $p=0.5$。
Bradley–Terry:成对比较模型, 将分差映射为胜率 $P(i\succ j)=\sigma(s_i-s_j)$;训练损失为对应交叉熵。
$\mathbf{v}_q$ 常由外部嵌入模型得到;模型向量 $\mathbf{w}_M$ 在离线阶段学习。训练约十余 epoch 即可完成。
对每条请求,先估计强模型相对更优的概率 $\htmlClass{sym-a}{p}$, 再与决策阈值 $\htmlClass{sym-b}{\alpha}$ 比较。
含义:仅当 $\htmlClass{sym-a}{p}$ 不低于阈值时选择强模型;否则选择弱模型以降低成本。
路由器参数固定后,仅调整 $\alpha$ 即可在质量与成本之间切换工作点。
阈值极低,几乎总是选择强模型
质量 ↑ · 成本 ↑
难查询走强、简单查询走弱,常见默认点
质量与成本折中
阈值极高,几乎总是选择弱模型
质量 ↓ · 成本 ↓
落地做法:固定路由器,扫描若干 $\alpha$,绘制质量–成本曲线,再按预算选定工作点。
训练需要监督信号:同一查询下,哪一模型的回答更优。
在线推理仅以 $q$(及可选上下文)为输入,不以回答正文为特征;回答仅用于离线构造监督标签。
RouteLLM 用偏好对训练胜率估计器。样本须满足「生成前可决策」这一约束:监督来自离线比较,写入训练的字段不含回答正文。
一条训练记录为 $(q,\,M_s,\,M_w,\,l)$:同一查询、强弱两模型身份,以及胜负 / 平局标签。
线上路由在生成前完成,故训练阶段不以回答正文为特征;回答仅用于离线得到 $l$。
$l$ 须来自人类比较、金标自动核验或 LLM 裁判之一,使「是否更宜交给强模型」可观测。
论文以约 8 万场 Arena 对战为主;金标约 1.5k 条补知识类 OOD;裁判约 12 万条补开放域覆盖。
示例 · 写入训练集的一条记录
| 字段 | 取值(示意) | 说明 |
|---|---|---|
| $q$ | 用 Python 实现线程安全的 LRU 缓存,并说明高并发下为何正确 | 查询文本;推理时的唯一必需输入 |
| $M_s$ / $M_w$ | 强档代表 / 弱档代表(如 GPT-4 档 vs Mixtral 档) | 比较的是模型身份;论文中常按 Elo 档位聚合以缓解稀疏 |
| $l$ | $\mathrm{win}_{M_s}$ | 由人工、金标或裁判得到;本例为强模型更优 |
| 回答正文 | 不写入训练特征 | 可保留在标注台账,供审计与回流,但不进入 score_fn |
企业落地时:公开 Arena 分布未必等于业务流量;上线前须用自有查询重定阈值 $\alpha$,必要时再以业务日志 + 金标 / 裁判做领域增广。
以同一条样本查询为例,对照三种标签来源如何得到 $l$。
「用 Python 实现线程安全的 LRU 缓存,并说明高并发下为何正确。」
$M_s$:给出加锁方案、边界用例与正确性说明
$M_w$:仅贴出无锁的字典伪代码
人工投票 → $l=\mathrm{win}_{M_s}$
贴近真实偏好;公开 Arena 分布未必等于本企业口径
同一 $q$,以固定单元测试集为验收标准(并发读写、容量淘汰、边界键)
$M_s$ 代码通过全部用例;$M_w$ 在并发用例失败
自动核验 → $l=\mathrm{win}_{M_s}$
客观、可复现;前提是题目可程序化判定(测试 / 规则),纯开放论述则不适用
将两条回答提交给 GPT-4:「哪一条正确性与完整性更好?」
裁判输出:strong better
得到 → $l=\mathrm{win}_{M_s}$
便于规模化;关键域需专家抽检以控制偏差
写入训练集:$(q=\text{线程安全 LRU…},\,M_s,\,M_w,\,l=\mathrm{win}_{M_s})$。在线推理仅使用 $q$,不以回答正文为特征。
将上页「线程安全 LRU」示例嵌入完整样本工程流程。
response 入库,但不作为路由输入特征。
先建最小样本表并标明用途,再扩展规模。
| $q$(摘要) | 意图 | 标签 $l$ | 用途 |
|---|---|---|---|
| 今日天气如何 | 闲聊 | $\mathrm{win}_{M_w}$ | 训练集 |
| 线程安全 LRU 缓存实现 | 编码 | $\mathrm{win}_{M_s}$(人工/裁判) | 训练集 |
| 证明 $\sum_{k=1}^{n}k=\frac{n(n+1)}{2}$,并求 $n{=}100$ | 数学 | $\mathrm{win}_{M_s}$(金标:终值 $5050$) | 训练集 |
| 证明勾股定理并给出步骤 | 推理 | $\mathrm{win}_{M_s}$(人工/裁判) | 标定集 |
| 两线程互相持锁导致死锁,如何修复 | 编码 | $\mathrm{win}_{M_s}$ | 回归集 |
金标行解读:同一题双端作答后,用标准答案自动核验终值($5050$);答对者胜。 证明过程可另辅人工抽检,但分流标签可由程序直接给出。
score_fn(约 1k--3k)闭环:双端作答 → 得 $l$ → 训 MF → 标定集选 $\alpha$ → 影子验证后灰度。 Arena 权重可初始化,但 $\alpha$ 须用自有标定集重定。
RouteLLM 的在线决策由两段组成:先估计强模型相对更优的概率
$\htmlClass{sym-a}{p}$,
再与阈值
$\htmlClass{sym-b}{\alpha}$
比较后选择强模型或弱模型。本章四种算法均作用于第一段,即胜率估计器 score_fn。
score_fn:$q\mapsto p$工程含义:更换算法无需改写业务调用代码;只需替换胜率估计器的实现。
四种方法的目标相同:由查询 $q$ 估计 $\htmlClass{sym-a}{p}=P(M_s\text{ 优于 }M_w\mid q)$。 差异在于 $P_{\theta}$ 的参数化形式。
查询与模型嵌入双线性打分;分差经 sigmoid(Bradley–Terry)得到 $p$。
类比推荐系统匹配评分
检索相似历史偏好并加权拟合强/弱相对实力,得到 $p$。
无独立神经网络训练阶段
将查询作二分类:正类表示应调用强模型,正类概率即为 $p$。
微调 BERT-base 分类头
指令式提示后预测标签 token;取 $\texttt{win}$ 的 next-token 概率作为 $p$。
容量大,推理成本最高
Matrix Factorization(矩阵分解)将查询视为「用户」、模型视为「物品」: 匹配分越高,表示该模型越适合处理该查询。
低维向量近似整张分数表,故称矩阵分解;再经 Bradley–Terry 将分差转为胜率 $p$。
在同一嵌入空间中:查询与强模型更接近时,强模型匹配分更高,从而 $p$ 更大。
模型向量 $\mathbf{w}_M$ 在离线阶段学习完成;在线对每条请求依次执行下列五步,无需再调用两个模型作答比较。
输入仅为查询文本(及可选上下文),不含回答正文。
由嵌入模型将 $q$ 映射为向量,供后续打分使用。
与已学好的 $\mathbf{w}_{M_s},\mathbf{w}_{M_w}$ 计算匹配分。
Bradley–Terry:分差经 sigmoid 得到强模型胜率,例如 $p{=}0.72$。
若 $p\ge\alpha$ 选择强模型,否则选择弱模型,并仅调用被选中的一侧。
SW 无需预先训练神经网络。方法要点是:历史偏好记录中与当前查询越相似者,对路由决策的参考价值越高; 以相似度作为权重,在近邻子集上估计强/弱相对实力系数,进而得到胜率 $p$。
对 $q$ 计算文本嵌入,并在偏好库中按余弦相似度检索近邻。
$\omega$ 表示与当前 $q$ 的相似度;相似度越高,该条历史胜负记录的权重越大。
$\xi_s,\xi_w$ 分别为强、弱模型的实力系数;随后将 $p$ 与阈值 $\alpha$ 比较并分流。
构建阶段:对同一历史查询 $q$,由强、弱模型分别生成回答,再经人工、金标或裁判比较,得到胜负标签 $l$。
回答正文仅用于离线标注。写入 SW 偏好库的字段主要包括:查询文本 $q$、标签 $l$,以及查询嵌入 $\mathrm{emb}(q)$,以支持后续相似检索。
要点:构建阶段依赖双端回答;在线估计 $\xi$ 时不再读取历史回答正文。
将检索得到的近邻视为一组加权比较样本。设强、弱模型的实力系数为 $\xi_s,\xi_w$,并约定 $P(\text{强胜})=\sigma(\xi_s-\xi_w)$。
以上例计,强胜累计权重为 $0.92{+}0.85{=}1.77$,弱胜权重为 $0.61$。在近邻子集上求解 $\xi_s,\xi_w$,使预测胜率与加权胜负统计相一致(Bradley–Terry 极大似然或 Elo 迭代)。
当强胜权重显著更大时,$\xi_s>\xi_w$,从而 $p=\sigma(\xi_s-\xi_w)$ 较高(例如约 $0.78$)。偏好库更新后无需重新训练完整网络,新增记录可直接参与后续检索。
以查询文本为输入,输出「强模型相对更优」的正类概率,该概率即为 $p$。 不再显式维护模型向量表;监督来自偏好对,但训练与推理均仅使用 $q$。
对同一查询 $q$,由强、弱模型分别作答,再经人工、金标或 LLM 裁判比较,得到偏好记录 $(q,M_s,M_w,l)$。
再映射为二分类标签:若 $l=\mathrm{win}_{M_s}$ 则 $y{=}1$(正类);若 $l=\mathrm{win}_{M_w}$ 则 $y{=}0$。平局样本可剔除或作软标签。
写入 BERT 训练集的是 $(q,y)$。回答正文仅用于离线标注,不作为模型输入特征。公开来源含 Arena;企业侧宜叠加本领域查询与裁判/金标增广。
以因果语言模型(如 Llama-3-8B)为骨干,将路由表述为标签续写任务:
预测下一词为 win 或 lose,并以 $P(\texttt{win})$ 作为 $p$。
Query: 证明勾股定理
Will the strong model win?
Answer:
综合延迟、训练成本与数据条件,按下表选择 score_fn 实现。
| 算法 | 估计方式 | 延迟 | 训练 | 优先场景 |
|---|---|---|---|---|
| MF | 匹配分 + Bradley–Terry | 最低 | 轻量离线训练 | 生产默认 |
| SW | 相似历史加权重估 | 中 | 无独立网络训练 | 偏好库持续更新 |
| BERT | 查询文本二分类 | 低–中 | 微调编码器 | 有领域标注 |
| Causal | 续写 win/lose 概率 | 高 | 大模型微调 | 研究 / 上限对比 |
无特殊约束时以 MF 为默认;若要求偏好库更新后立即生效,可评估 SW; 在具备充足领域标注与 GPU 资源时,再评估 BERT 或 Causal LLM。
除准确率外,还需衡量强模型调用占比与质量挽回之间的关系。
| 缩写 | 全称 | 含义 |
|---|---|---|
| PGR | Performance Gap Recovered 性能差距挽回 |
追回了强弱之间多少质量差距 |
| CPT | Call-Performance Threshold 调用–性能阈值 |
达到某质量时,最少多少流量走强模型 |
| APGR | Average PGR 平均性能差距挽回 |
对整条成本曲线积分,综合好坏 |
路由器质量落在弱模型与强模型之间的相对位置。
在质量–成本曲线上读数:要达到目标 PGR,至少需要把多少比例的请求派给强模型?
单看某一个 $\alpha$ 的 PGR 会偏;APGR 对整条质量–成本曲线积分/平均,概括路由器整体表现。
在固定测试集 $Q$ 上扫描若干阈值 $\alpha_k$:每个 $\alpha$ 对应图上一个点(横轴 = 强模型占比 $c$,纵轴 = PGR);把这些点连起来,就是质量–成本曲线。
$Q=\{q_i\}_{i=1}^N$,与训练集分离;固定 $M_w,M_s$ 与已训路由器
$r$ = 基准上的质量分。先测弱/强两端 $r(M_w), r(M_s)$;路由后得 $r(R^{\alpha})$,用于算 PGR
换一个 $\alpha$,路由器分流结果变一次:横轴记强模型占比 $c$,纵轴记 PGR → 图上多一个点
连接各点;同集运行 random 作对照基线(橙色虚线)
按 5.5 构建曲线后,横轴为强模型调用占比 $c$,纵轴为 PGR。三项指标分别刻画给定阈值下的相对质量、达标所需的最小强模型调用,以及整条曲线的综合表现。
横轴 $c$:派给强模型的请求占比;纵轴 PGR:质量挽回($0$ 等同弱模型,$1$ 等同强模型)
随机基线:按固定比例随机分流,不利用查询信息;图上为对角线。有效路由器曲线应位于其上方。
RouteLLM 在强/弱两档间用 $p$ 与阈值 $\alpha$ 二选一; LLMRouter 面向候选池 $\mathcal{M}=\{m_1,\ldots,m_N\}$($N$ 可大于 2): 对每个候选打兼容分,再按决策规则选出一个(单轮)或一串(多轮)。
LLMRouter 不是「把 RouteLLM 的 MF 直接扩到多模型」。它是统一基础设施:把路由写成「打分 → 决策」,内置 KNN、MF/Elo、图路由、多轮 RL 等 16+ 种算法;其中 MF 与 RouteLLM 同源,只是可选实现之一。
默认离线构造查询$\times$模型稠密矩阵(每格含质量、成本)。各算法用该矩阵训练 $g$,学会「何种 $q$ 更匹配哪个 $m$」。线上只对 $q$ 推断分数向量,不再先把池内模型都调用一遍。
示例:$q$ 为「写线程安全 LRU」。打分后代码模型最高 → 直接派发该候选;本地小模型虽便宜,但分低,本轮不选。
$\mathcal{R}$ 表示一个路由器。LLMRouter 用五个可替换组件拼装任意路由器: 读查询、读候选、打分、决策、训练。换 $g$ 或 $d$ 即换一种算法,数据与评测可复用。
线上请求只执行 ①–④;⑤ 仅在离线训练时使用。
把用户问题转成路由器可计算的表示(向量或保留原文)。
例:用户问 「写线程安全 LRU」 → 编码为查询向量;多轮时可再拼接对话前文。
把池内每个模型变成可比表示(元数据、向量或能力描述)。
例:池内有 代码模型、通用大模型、本地小模型,各自编码成一条特征;换候选池主要改这里。
估计「该查询更匹配哪个模型」,输出与候选一一对应的分数。
例:对 「写线程安全 LRU」 打分 → 代码模型 0.91、通用 0.72、本地 0.41。
根据分数向量决定动作:选哪个模型,或多轮中是否结束。
例:取最高分 → 调用 代码模型;若已答完,也可输出 STOP 结束本轮。
用历史标注衡量打分是否合理,并更新 $g$ 等参数。上线后只走 $E_q,E_m\rightarrow g\rightarrow d$,不再算 $\mathcal{L}$。
例:同一题在稠密矩阵中标注为 代码模型质量高、 本地小模型未过测试 → 训练推动 $g$ 对类似编码题抬高 代码模型 分数。
线上对候选池逐个打分并决策;监督来自稠密矩阵,不在推理时全量调用。
# 线上:只编码查询,对池内每个候选打分后决策
state = encode_query(q, history)
scores = [g(state, m) for m in candidates] # 长度 = |M|
action = d(scores) # 通常 argmax;多轮还可选 STOP
return call(action, q)
# 训练(另开):用查询×模型矩阵中的质量/成本作标签
loss = L(preds, labels)
loss.backward()
$\htmlClass{sym-b}{\mathcal{L}}$ 仅用于训练;线上路径为 $E_q \rightarrow E_m \rightarrow g \rightarrow d$。
LLMRouter 将十余种路由器置于同一五元组接口下,便于替换打分与决策组件,并复用数据与评测管线。 下表按场景归类列出主要实现;下一页再按决策时可读取的状态信息划分为三族。
用于对照路由是否优于「一律最小」或「一律最大」。
上述实现均挂接同一 MetaRouter 接口;更换方法主要更换打分函数 $g$ 与决策规则 $d$。企业二档降本仍可先采用与 RouteLLM 同源的 MF / Elo。
上一页所列方法可按决策时允许读入的信息范围,归入三类算法族。 三类均遵循「对候选打分再决策」;差别在于编码器与打分器可见的状态不同。
状态 $\mathrm{state}$:路由器在第 $t$ 步做选模(或终止)决策时,允许读入的全部上下文,常见组成包括当前查询 $q$、交互历史 $h_t$、用户侧特征 $u$(标识及画像;其中可含长期偏好)。 在五元组中,$E_q$ 负责把状态编码成可计算表示,$g$ 再基于该表示与各候选模型的表示计算匹配分数; 因此状态决定了「打分时能用到哪些信息」。状态越完整,线索越多,对标注与系统复杂度的要求也越高。
状态仅含当前查询。对候选池打分并选出一个模型后结束。RouteLLM 式二档路由可视为其特例。
代表方法:KNN、MF/Elo、GraphRouter 等
状态增补既往调用与中间结果,可据此多步选模,直至决策规则输出终止并聚合答案。
代表方法:Router-R1 等 agentic 路由器
状态再引入用户标识与画像特征(可含文风、领域、风险等长期偏好),使同一查询对不同用户可得到不同选模结果。
代表方法:GMT / PersonalizedRouter 等
递进关系:以 $\htmlClass{sym-c}{q}$ 为基态; 多轮增补 $\htmlClass{sym-b}{h_t}$; 个性化再增补 $\htmlClass{sym-d}{u}$。
承接上一页的三族划分:本节对照单轮与多轮。 二者均对候选打分后选模;差别在于是否读写交互历史 $h_t$,以及动作空间是否包含终止符 $\bot$(表示本轮不再调用模型,进入结果聚合)。
当任务可拆成阶段,或必须「看见中间结果后再选下一模型」时,选用多轮算法族;否则单轮通常更简、更省。
多轮每一步走同一闭环;每转一圈通常对应一次模型调用。 调度与决策依赖两个组件: $g$ 打分函数——输入当前状态与各个候选模型,输出一组匹配分数,回答「这一步谁更适合当前子任务」; $d$ 决策规则——输入分数向量,输出动作(选某个模型调用,或输出终止符 $\bot$),回答「下一步怎么做、是否结束」。
派给谁?
例:派 代码模型 写 LRU
完成了什么?
例:$h_t$ ← 「已有实现草稿」
要不要停?
例:缺测试 → 继续;已齐备 → $\bot$
调度在做什么 状态经 $E_q$、候选经 $E_m$ 编码后, 由 $g$ 给池内每个候选打匹配分 (如代码模型 $0.91$、本地小模型 $0.41$); 再由 $d$ 按分数选出本步模型 $m$ 并真正调用。
历史在做什么 把本步生成结果写入 $h_t$。下一步调度读取该历史后,便知道「实现已完成」,从而转向补测试,而不是重复写主体代码。
决策在做什么 仍由 $d$ 在动作空间中选择: 「继续」则带着新的 $h_t$ 回到①; 「$\bot$」表示终止(不再调用),离开环并聚合为 $y$。
用同一条 LRU 请求演示多轮闭环。本页固定查询与候选池,并给出完整两步示意轨迹: 实现与测试分两次调度,第二次结束后才终止并聚合。
「写线程安全 LRU,并附带可运行的单元测试。」
两个子目标可先后完成,因此适合多轮:先写实现,再补测试。
起步时 $h_0=\emptyset$,路由器只看见查询偏工程实现。 用 $g$ 打分、$d$ 选模后派发; 写完实现仍缺测试,故决策为「继续」而非 $\bot$。
$g$ 产出右侧分数;$d$ 取最高 → 生成 LRU 实现草稿
下一步能「看见」已有草稿,不会从零重写主体
单测尚未出现;若 $d$ 误输出 $\bot$,最终答案会缺测试
为何选代码模型 $q,h_0$ 经 $E_q$ 读出工程信号;各候选经 $E_m$ 对齐后, $g$ 给代码模型最高分;本地小模型虽便宜但分低,本步不选。
历史如何变 把本步生成结果写入 $h_1$。空历史变成「已有实现」,供下一步调度读取。
为何继续 查询还要求可运行单测,当前 $h_1$ 未满足 → $d$ 输出「继续」,带着 $h_1$ 进入第二步。
此时 $\mathrm{state}=\{q,h_1\}$,$h_1$ 已含实现草稿。 历史决定本步「补测试」而非重写主体;但选谁写测试仍靠 $g$、$d$。 材料齐备后输出 $\bot$,离开环并聚合为 $y$。
已知「实现已有」→ 本步目标改为生成单元测试
$h_2$ 同时具备查询要求的两块材料
材料齐备 → $d$ 输出 $\bot$;再调用只会加费用
历史 vs 选模 $E_q$ 读到 $h_1$ 后知「该补测试」;但派谁仍由本步 $g$、$d$ 决定。
齐备的含义 实现与可运行单测都已写入历史,相对查询的两个子目标均已覆盖。
$\bot$ 之后 不再调用任何候选;系统合并 $h_2$ 得到最终回答 $y$。
记得「已有实现草稿」→ 本步目标改成补测试,避免重写主体。
管的是:下一步做什么
「谁来写测试」仍由 $g$/$d$ 决定;误派 本地小模型 时,方向对了,质量仍可能差。
管的是:派给谁
规避:让 $g$ 显式读历史缺口(缺测试);$d$ 对编码子任务加能力约束或禁派弱模; 生成后跑测,失败则带着错误回环并升级模型——多轮纠的是步骤,选模质量仍要单独做对。
第 5 章以 PGR / CPT / APGR 刻画二档质量–成本曲线; LLMRouter 以 xRouteBench 在同一协议下评测多候选、多场景路由。
二档 · CPT / APGR
多场景 · perf–cost
总成本 = 路由开销 + 生成调用开销。 单轮轻量方法的路由几乎不占用 API,有限预算主要用于一次生成; 高复杂度方法的多步决策本身消耗调用与 token,在低成本区间挤占生成预算,净质量更低。
预算放宽后,高复杂度方法方可承担多步匹配或纠错,曲线可追上或超过前者。 图示反映开销结构效应,而非轻量方法全面占优;相对优劣随任务与预算反转。 学习路由相对固定最强模型基线约有 14.6% 相对提升。
横轴为总成本(含路由开销),纵轴为任务质量;比较对象为路由算法,而非候选大模型。
KNN / MF / SVM / MLP:一次嵌入与打分后选定模型。
GraphRouter / Router-R1 / LLM-as-router:决策开销更高,或需多步派发。
「xRouteBench · perf–cost」指在该基准的质量–成本曲线上比较路由算法;二档场景仍采用 CPT / APGR。
路由器在大模型生成回答之前完成模型选择;目标是在可控质量下减少旗舰模型调用。
质量–成本权衡;路由 $\neq$ Reward Model;先选模,再调用 LLM 生成
偏好监督 → 胜率 $\htmlClass{sym-a}{p}$ → 阈值 $\htmlClass{sym-b}{\alpha}$;MF / SW / BERT / Causal LLM
质量–成本曲线;PGR / CPT / APGR;与随机基线对照
五元组;$g$+$d$;单轮/多轮;xRouteBench(perf–cost)
RouteLLM 与 LLMRouter 互补:前者提供可直接服务化的二档降本基线;后者提供多算法库与专长/多轮扩展。实践中常先用 RouteLLM 验证本地/云端降本,再在难查询、专长匹配或多轮调度等 RouteLLM 未覆盖的场景上用 LLMRouter 试验更复杂策略。
从查询到回答:先估计胜率(或兼容分),再决策选模,最后调用大模型生成。RouteLLM 与 LLMRouter 共用同一主路径,差别主要在打分与决策形态。
二档胜率 + 阈值
多候选打分 + 决策
用户查询
上:RouteLLM · 下:LLMRouter
强 / 弱 / 候选
模型回答
二者定位不同:RouteLLM 面向二档降本的可服务化基线;LLMRouter 面向多模型、多算法的统一基础设施。
适用:仅强/弱两档、少改代码、控接入与运维成本
适用:候选池 > 2、专长匹配、多轮/个性化、算法对比
| 维度 | RouteLLM | LLMRouter |
|---|---|---|
| 定位 | 二档降本 + 轻量服务 | 统一基础设施 + 算法库 |
| 形式化 | 胜率 $p$ + 阈值 $\alpha$ | 序贯决策五元组 |
| 评测 | CPT / APGR(二档曲线) | xRouteBench(多场景 perf–cost) |
| 最佳用途 | 生产原型 / 二档基线 | 算法对比 / 专长与个性化 |
并非互斥:RouteLLM 的 MF 在 LLMRouter 中亦有同名实现;可先以 RouteLLM 验证降本,再将胜出策略迁入 LLMRouter 或自有服务。
按目标场景选择决策层起点;鉴权、配额、合规等由执行层网关承担,与路由算法解耦。
拼装含义:决策层只输出「选哪个模型」;网关负责真正调用、限流与治理,避免把运维能力塞进路由器。
路由、本地模型与知识库部署于本地侧;仅当本地无法满足质量或能力要求时外呼云端。 云端高质量回答经脱敏回写本地知识库,用于检索增强与路由重标定,持续降低云端调用占比。
生成前判定承接域(本地 / 云端)
做法:本地与云端二选一;比较「需上云」胜率与阈值
代价:偏好样本 + 阈值标定即可;落地与运维成本较低
做法:多模型打分后决策,可融合专长匹配与成本约束
代价:矩阵标注、训练与在线打分更重(时间/样本/算力);宜在二档验证后再扩展
简单任务、可模板化、敏感数据默认本地
低成本生成;可结合知识库检索
本地部署;汇入云端脱敏优质问答
增强 ④;覆盖率上升后重标定 ②
复杂推理 / 首次重度;或经网关失败升级接入
计费发生点;优质结果回写 ⑤,难例回流训练
闭环: 本地路由判定承接域 → 难例外呼云端(含网关判定本地失败后升级)→ 优质结果脱敏入库 → 检索增强与路由重标定 → 本地承接率上升、云端调用占比下降。
训练路由器、选定「何时上云」的阈值,都需要业务里的真实问题:同一问比较本地与云端谁更好。公开评测集只能用来起步,不能代替本单位的查询。
样本构成:同一问的本地回答、云端回答,以及谁更好(或本地是否够用)
对应目标:估计「需上云」胜率,用阈值控制云端占比,在质量–成本曲线上选工作点
样本构成:同一问下,每个候选模型的质量分与这次调用的 token 费用
对应目标:按「质量 − 成本」权衡选模,评测常用 $\alpha\cdot\mathrm{perf}-\beta\cdot\mathrm{cost}$
从业务日志抽取真实问题,覆盖不同意图、部门与敏感程度。
同一问题由本地模型与云端模型各答一遍,并记下耗时与花费。
用标准答案、评判模型或人工抽查,标出「本地够用」还是「必须上云」。
一部分训练路由器,一部分选定上云阈值,一部分只做最终检验。
本地失败后转去云端的问题、用户不满意的问题,再加入样本集。
起步规模:选定阈值约 500–2000 条,训练约数千条。即使用公开数据训过路由器,上线前也必须用本单位样本重新选定阈值。含个人信息的问答须去掉标识后再用于训练。
把云端答得好的问答存进本地知识库,以后同类问题可先查库、由本地模型回答。知识库不代替路由器,但能减少必须上云的问题。
保存云端答成功的问答;本地答得好的也可以收。
去掉姓名、证件号等标识并去除重复;敏感原文不得原样入库。
格式检查和抽查合格才能写入;过时或口径变了的条目删除。
做成可按语义搜索的库,并标注问题类型、部门与质量分。
本地回答前先查库;库覆盖变广后,重新选定上云规则。
查到相关内容后,与用户问题一并交给本地模型,本地就能回答更多原先要上云的问题。
经常能查到时,这类问题应更少送上云。定期用新样本重新训练或重选阈值,让更多请求留在本地。
不合格的回答不入库。证件号、密钥等不得原文保存,并规定保存多久、谁能访问。是否有效,看留在本地的请求是否变多,同时回答质量不能低于约定下限。
记录每次分流,汇总流量结构,并与同一批请求全部使用云端对照,从成本、效率、质量、安全证明混合部署收益。
逐条记录调用去向与结果
按意图、难度、部门、时段汇总
同一批请求,两种方案对照
指标来自分流明细与抽检,均相对「同一批请求全部使用云端」计算。质量达标时,可证明费用下降、时延改善或数据出域减少。
智能路由是可学习、可评测、可落地的中间层:在可控质量下减少旗舰与云端调用。
在大模型作答之前选定后端;输入是查询,目标是质量与成本的权衡。
本地与云端二档先验证降本;候选模型更多或需专长匹配时,再引入 LLMRouter。
业务样本用于训练与选定上云阈值;知识库减少必须上云;相对全量云端做四维度量。
两模型比较或全模型记分
RouteLLM,选定上云阈值
检索增强,少送上云
成本 · 效率 · 质量 · 安全
LLMRouter / 执行层网关
落地建议
从日志抽取真实问题,标注「本地够用 / 必须上云」;用 RouteLLM 选定上云阈值,在质量不破线的前提下验证云端占比能否下降。
云端优质回答经脱敏与质量门禁后入库;本地作答前检索相关内容,使同类问题少上云,并定期重选阈值。
相对「同一批请求全部走云端」,持续跟踪成本、效率、质量、安全;数字来自分流明细与抽检,用于证明混合部署收益。
候选模型更多或需专长匹配时,再引入 LLMRouter;鉴权、限流、合规由执行层网关承担,与路由决策分离。
Questions?
←→ 翻页 · ↓ 小节 · F 全屏 · O 总览