模型路由与级联。
只有当判断「这个请求难不难」比直接把它答出来更便宜、也更可靠时,路由才划算——而对大多数开放式任务来说两者都不成立,这正是那些「省 85%」的公开数字出自对话类基准、却很少能在智能体上存活的原因。真正能存活的版本朴素得多,也几乎没有风险:在你自己的代码里按任务路由,只作用在你早就知道是机械活儿的子步骤上;至于学习型路由器或级联,只在你手里已经有一个廉价自动验证器时才动用。
三种机制,却常被当成一种。
- 静态路由。由你在代码里决定哪个模型干哪份活:分类步骤、抽取步骤和重排序交给小模型,推理循环交给前沿模型。没有推理期的决策,没有新增的失效模式,而它拿下的正是真正摆在桌面上的那笔钱的大头。
- 动态路由。一个分类器——小模型、嵌入检索、或学习出来的打分器——读取每个来访请求并为它挑一个模型。这增加了一次决策、一份延迟开销,以及一个可能出错却无人在下游察觉的组件。
- 级联。先把一切交给便宜模型,评估其答案,只有当答案通不过检查时才升级到昂贵模型。它严格强于动态路由,因为它评判的是真实输出,而不是从输入去预测难度——同时也严格更依赖那个检查本身是否可信。
还有第四样东西也被叫作路由,但它不是:一个LLM 网关——用一把 API 密钥打通众多提供方,附带故障切换与支出统计。那是管路,值得拥有,但它并不基于质量来挑选模型。别让共用的词汇让你误以为装好网关就等于把路由这件事做了。
升级信号就是问题的全部。
级联的经济账很简单:当验证的成本远低于生成时,它就划算。而这个条件被满足的频率比团队想象的低得多,并且决定这套方案是省了钱还是悄悄削弱了你产品的,是你那个检查的质量,而不是价差的大小。
- 真正廉价的验证器是存在的,而且它们全都在模型之外。必须能编译或通过测试的代码。必须通过 schema 校验的输出。必须能追溯到来源文档的检索式论断。参数必须能解析到真实记录的工具调用。只要你手里有这样一个,级联就非常好用。
- 模型自报的置信度不算。问模型「你有多确定」,得到的是一个与正确性相关性很弱的流畅数字,而弱模型恰恰会在你建级联本来要拦住的那些情形里自信地答错。
- 裁判模型是一笔实打实的成本,不是免费的检查。如果裁判必须强到能判断正确,那你就是在为「有时不必付强模型的钱」而在每个请求上都付接近强模型的价——而在难题上你现在要付两次:一次给失败的便宜尝试,一次给升级。
动手之前先算账。设强模型是便宜模型的 10 倍,一个升级率 30%、验证器成本为强模型 5% 的级联,账单大约落在「全用强模型」的 40% 上下——这是实打实的胜利。若把升级率推到 60%,验证器又要 20%,节省就基本没了,而你还平添了延迟和一个要调试的组件。盈亏平衡点比那些标题数字暗示的近得多。
路由器也是模型,所以得按模型的规矩对待它。
一旦有个分类器在请求期挑选模型,它就成了你关键路径上的一个组件,有自己的准确率、自己的漂移、自己的账单——而且它比多数组件都更隐形,因为一次糟糕的路由决策浮现出来的样子是「答案略差」,而不是一个报错。
- 直接评测它。不是「系统答得好不好」,而是「在那些被送去便宜模型的请求上,强模型是否会答得更好?」这是一份要在真实流量上做的标注工作,也是唯一能告诉你路由器是否配得上它位置的数字。把它当成一次和别的一样的评测。
- 它会随你的流量一起漂移。在上个季度请求上训练或调优出来的路由器,会随着用法变化悄悄退化。请定期重新度量;它不会自己宣布自己在腐坏。
- 行为不再统一。两位用户问着几乎一样的问题,却拿到不同的模型、不同的排版习惯和不同的失效模式。对消费级聊天这还能忍;对一个输出要喂给下游解析器的产品,这就是一类只是偶尔能复现的 bug 之源。
- 把决策记下来。「这个请求由哪个模型服务、为什么」应当和令牌数并排写进追踪——参见可观测性。没有它,每一次质量排查的第一步都是「不知道这段输出是哪个模型生成的」。
- 公开的节省数字不可迁移。路由器基准压倒性地偏对话类。智能体的活儿——生成工具调用、遵守 schema、长程一致性——在小模型上退化的方式不同,且往往更早发生,所以要在你自己的任务上验证。这和批判地阅读基准是同一条告诫。
路由机械步骤;别去动那个循环。
在一个智能体内部,调用量最大的通常并不是推理那几次。分类、抽取、重排序、把工具结果做个摘要、判断某份文档是否相关——这些每个任务要跑很多遍、输出可校验,而且恰恰是小模型或本地模型「够用且便宜好几倍」的地方。这就是小模型与本地模型的落地形态,而它压根不需要路由器:哪一步是哪一步,你本来就知道。
推理循环则恰恰相反。降级它是那种看上去最省钱、实际上通常并不省的干预,因为更弱的模型要走更多步,而在智能体里每多一步都要重发整段对话记录——正是让「换个便宜模型不就行了」令人失望的平方级增长。能更早结束任务的能力,本身就是一个成本抓手。
- 按完成任务计量,绝不按令牌。一次让令牌支出降 40%、成功率降 15% 的路由改动是净亏,而只有按任务的指标能显示出来。
- 留一个逃生口。一个能为指定请求或指定租户强制走强模型的开关,好让路由回归成为一次配置变更而不是一次发布。
- 把各条路由钉住版本。每个目的地都是一个有自己行为的模型版本;显式地为它们做版本管理,并在其中任何一个变动时重跑评测——参见灰度发布、版本化与固定。
从按任务类型的静态路由开始。它就是一条 switch 语句,不带任何路由器风险,而在多数智能体系统里,它已经拿下了可省成本的绝大部分——因为调用量本就由那些机械子步骤主导。只在已经存在廉价自动验证器的地方(测试、schema、接地检查)加级联;而只有在你度量出静态路由确实还留了钱在桌上之后,才去加学习型路由器。多数团队从没走到第三步,而且他们不走是对的。
延伸阅读:成本、质量与延迟讲底层的那个权衡,选模型讲怎么挑每一个目的地,推理 vs 非推理模型讲另一个改变单请求支出的旋钮。