1. 模型路由到底在解决什么问题
1.1 从一个真实场景说起
去年下半年,我帮一家做智能客服的团队做架构评审。他们的产品每天要处理大约四十万次对话请求,后端接了三个不同规模的模型:一个轻量级的用于意图识别和简单问答,一个中等规模的用于多轮对话,还有一个大参数量的用于复杂推理和投诉处理。上线三个月后,账单从每月两万涨到了七万多,但用户满意度并没有明显提升。
问题出在哪?他们的路由逻辑是写死的:所有涉及“退款”“投诉”“人工”关键词的请求全部走大模型,其余走小模型。结果就是,大量“退款政策是什么”这种一句话就能答完的咨询,也被丢给了最贵的那个模型。而真正需要复杂推理的“我上个月买的东西用了优惠券又退了部分商品,现在应该退我多少钱”这类问题,反而因为没命中关键词被分给了小模型,答得一塌糊涂。
这就是模型路由要解决的核心问题:在成本、延迟、质量三者之间找到动态平衡点。它不是简单地“贵的给难的问题,便宜的给简单的问题”,而是需要一套可度量、可迭代的决策机制。
1.2 模型路由的本质是一道经济学题
很多人把模型路由理解成技术问题,我觉得更准确的说法是:它是一道经济学题。你手里有多个模型,每个模型的单位成本不同、响应速度不同、在不同任务上的表现也不同。路由策略的目标函数可以写成这样:
总收益 = 回答质量 × 完成率 - 单位成本 × 调用量 - 延迟惩罚 × 超时率
这个公式里,回答质量和延迟惩罚都是业务侧定义的。比如客服场景,用户能接受的等待时间可能是3秒,超过5秒就会挂断;而代码生成场景,用户可能愿意等15秒换取更准确的代码。所以路由策略必须和业务指标绑定,不能脱离场景谈“最优”。
我见过一个团队,技术负责人花了两周时间调路由权重,把成本降了40%,结果客服主管跑来说用户投诉率翻了一倍。原因很简单:他们把“账户余额查询”这种高频但简单的问题路由到了小模型,但小模型对数字的精确提取能力不够,经常把余额读错。这种错误对用户来说是不可接受的,但对技术团队来说,如果不看业务指标,根本发现不了。
1.3 什么情况下不需要模型路由
在讨论“什么时候值得做”之前,先说说什么情况下不值得做。如果你的应用满足以下任意一条,我建议先别碰路由:
- 日调用量低于五千次:这个量级下,即使全部走大模型,月成本可能也就几百块。你花在路由系统开发和维护上的时间成本,远高于省下来的钱。
- 任务类型高度单一:比如你只做文本分类,所有请求都是同一类任务,那直接选一个在该任务上表现最好的模型就行,路由没有意义。
- 对延迟极度敏感且不可预测:有些实时交互场景,用户期望的是“秒回”,任何额外的路由判断都会增加延迟。这种情况下,不如直接选一个响应最快的模型,用缓存和预计算来优化。
- 团队没有模型评估能力:路由的前提是你能度量每个模型在不同任务上的表现。如果你连一套像样的评估集都没有,路由就是拍脑袋,省下的钱可能还不够赔用户体验的。
这四个条件是我在实际项目中总结出来的“劝退线”。过了这条线,再考虑路由的事。
2. 判断是否值得做路由的四个核心问题
2.1 第一个问题:你的任务分布是否足够分散
模型路由的前提是“不同任务适合不同模型”。如果你的业务请求高度同质化,比如全是“今天天气怎么样”这种查询,那路由的价值就很低。但如果你的请求分布是长尾的,比如一个企业知识助手,用户可能问报销流程、可能问技术文档、可能问人事政策、可能问代码示例,那不同模型在不同类别上的表现差异就会显现出来。
怎么判断任务分布是否分散?我的做法是:先跑一周的日志,对请求做聚类分析。不需要多复杂的算法,用嵌入向量加K-Means就能看出大致分布。如果聚类后最大的簇占比超过70%,说明任务比较集中,路由收益有限;如果前五个簇加起来才60%,说明长尾明显,路由有发挥空间。
这里有个实操细节:聚类的时候不要只看用户输入,要把系统提示词和上下文一起考虑。我遇到过一种情况,用户输入看起来都是“帮我写个函数”,但系统提示词不同——有的是“用Python写”,有的是“用Java写”,有的是“写单元测试”。这些在嵌入空间里可能很近,但实际需要的模型能力完全不同。所以聚类前要先做一层意图归一化。
2.2 第二个问题:不同模型的表现差异是否可度量
这是最容易被忽略的问题。很多团队说“我们要做路由”,但你问他“大模型和小模型在你们的任务上差多少”,他答不上来。没有度量就没有路由,这是铁律。
度量需要三个东西:评估集、评估指标、评估流程。评估集要从真实日志里采样,覆盖各个任务类别,每个类别至少200条。评估指标要跟业务挂钩,不能只看BLEU或ROUGE这种文本相似度,要看任务完成率、事实准确率、格式合规率这些硬指标。评估流程要自动化,每次模型更新或提示词调整后都能快速跑一遍。
我一般建议团队先做一个“模型能力矩阵”:横轴是任务类别,纵轴是候选模型,格子里填每个模型在该类别上的得分。这个矩阵做出来之后,路由策略就一目了然了——哪些类别适合哪个模型,哪些类别所有模型都差不多(那就选最便宜的),哪些类别所有模型都不行(那就需要换模型或改提示词)。
注意:评估集要定期更新,因为用户的问题分布会随时间变化。我见过一个团队用三个月前的评估集调路由,结果新出现的业务问题全被路由到了不合适的模型上。
2.3 第三个问题:成本节省是否足以覆盖路由开销
路由本身是有成本的。这个成本包括:
- 开发成本:路由逻辑的开发、测试、上线,至少需要一个人两周的时间。
- 运行成本:每次请求都要做路由判断,这个判断本身可能就需要调用一个小模型或跑一个分类器,有额外的计算开销。
- 维护成本:模型会更新,业务会变化,路由策略需要持续调优。这不是一次性的工作。
- 错误成本:路由判断错误会导致用户体验下降,这个成本很难量化但真实存在。
我通常用一个简单的公式来估算:月节省金额 = (全走大模型的成本 - 路由后的加权成本) × 月调用量。如果月节省金额低于路由系统的月维护成本(按人力折算),那就不值得做。
举个例子:假设全走大模型每次0.02元,路由后加权平均每次0.012元,月调用量10万次,那月节省800元。但如果路由系统需要每周花2小时维护,按人力成本折算每月约1600元,那就是亏的。这种情况下,要么等调用量涨上去,要么把路由做得更简单、更自动化。
2.4 第四个问题:业务能否接受路由带来的不确定性
这是最软性但也最关键的问题。路由意味着同一个问题,不同时间可能由不同模型回答,答案的风格、详细程度、甚至准确性都可能有差异。用户能不能接受这种不一致?
在客服场景,用户可能今天问“退货政策”得到一段详细解释,明天问同样的问题得到一句简短回答,这会让人觉得系统“不稳定”。在内部工具场景,员工可能今天用助手写邮件很顺畅,明天同样的指令却得到完全不同的格式,这会影响工作效率。
所以做路由之前,一定要和业务方对齐预期。我的经验是:如果业务方对一致性要求高,那就不要做动态路由,而是做静态分流——比如按用户等级分流,VIP用户走大模型,普通用户走小模型。这样至少同一个用户得到的体验是一致的。
3. 模型路由的常见实现方案与选型对比
3.1 基于规则的硬路由
这是最简单的方案:写一堆if-else,根据关键词、请求长度、用户ID等条件决定走哪个模型。优点是实现快、延迟低、可解释性强。缺点是维护成本高,规则会越加越多,最后变成一坨没人敢动的代码。
我一般只在两种情况下推荐硬路由:一是业务规则非常明确且稳定,比如“所有涉及金额计算的请求必须走大模型”;二是作为兜底方案,当其他路由方式失败时,用硬规则保证系统不崩。
3.2 基于分类器的软路由
训练一个轻量级分类器,输入是用户请求,输出是“该请求适合哪个模型”。这个分类器可以是一个小型的文本分类模型,也可以是一个基于嵌入向量的最近邻检索。
这种方案的关键是训练数据。你需要标注一批“请求-最佳模型”的样本。标注方法可以是:对每个请求,用所有候选模型各跑一遍,然后根据评估指标选最好的那个。这个过程可以自动化,但需要一定的计算资源。
软路由的优点是灵活、可迭代,缺点是分类器本身也有误差,而且需要持续更新训练数据。我通常建议用“分类器+置信度阈值”的方式:分类器给出预测和置信度,置信度高于阈值就按预测走,低于阈值就走默认模型(通常是中等规模的)。
3.3 基于成本感知的动态路由
这是更高级的方案:不预先决定每个请求走哪个模型,而是根据当前系统负载、模型响应时间、成本预算等因素动态决策。比如当大模型响应变慢时,自动把部分请求降级到小模型;当本月成本接近预算时,提高小模型的分流比例。
这种方案需要一套完整的监控和反馈系统,实现复杂度高,但收益也最大。我见过一个团队用这种方案把成本降低了60%以上,同时保持了95%以上的用户满意度。
3.4 方案选型对比表
| 方案类型 | 实现难度 | 延迟开销 | 成本节省潜力 | 维护成本 | 适用场景 |
|---|---|---|---|---|---|
| 硬路由 | 低 | 极低 | 中 | 高 | 规则明确、变化少的场景 |
| 软路由 | 中 | 低 | 高 | 中 | 任务分布分散、有标注能力的场景 |
| 动态路由 | 高 | 中 | 极高 | 高 | 大规模、成本敏感、有监控体系的场景 |
选型的时候不要一味追求高级方案。我见过一个日调用量只有两万的团队,非要上动态路由,结果光监控系统就搭了一个月,最后省下的钱还不够付服务器费用。方案要和规模匹配,这是基本原则。
4. 从零搭建路由系统的实操步骤
4.1 第一步:建立模型能力基线
在写任何路由代码之前,先做一件事:把你的候选模型在真实任务上跑一遍,记录每个模型在每个任务类别上的表现和成本。这个基线数据是后续所有决策的依据。
具体操作:
- 从日志中采样至少1000条真实请求,覆盖所有任务类别。
- 对每条请求,分别调用每个候选模型,记录:回答内容、响应时间、token消耗、成本。
- 人工或自动评估每个回答的质量,打分(1-5分)。
- 汇总成表格:每个模型在每个类别上的平均分、平均成本、平均延迟。
这个表格做出来之后,你会对“哪个模型适合什么任务”有一个清晰的认知。很多时候,你会发现大模型并不是在所有任务上都比小模型好——有些简单任务,小模型的表现和大模型几乎一样,但成本只有十分之一。
4.2 第二步:设计路由决策逻辑
基于基线数据,设计路由规则。我通常用“决策树+兜底”的结构:
- 第一层:按任务类别分流。如果某个类别下某个模型明显最优,直接路由过去。
- 第二层:按请求特征分流。比如请求长度超过阈值、包含特定实体、用户等级等。
- 第三层:兜底。所有不满足前面条件的请求,走默认模型。
决策逻辑要写成可配置的形式,不要硬编码在代码里。我一般用一个JSON文件来描述路由规则,这样调整的时候不需要重新部署。
{ "rules": [ { "condition": {"task_type": "simple_qa"}, "target_model": "small", "priority": 1 }, { "condition": {"task_type": "complex_reasoning", "user_tier": "vip"}, "target_model": "large", "priority": 2 }, { "condition": {"token_count": {"gt": 2000}}, "target_model": "medium", "priority": 3 } ], "default_model": "medium" }4.3 第三步:实现路由中间件
路由逻辑要放在请求进入业务逻辑之前,作为一个独立的中间件。这样业务代码不需要关心路由,只需要调用统一的接口。
中间件的核心流程:
- 接收请求,提取特征(任务类型、长度、用户信息等)。
- 加载路由规则,按优先级匹配。
- 如果匹配到规则,返回目标模型;否则返回默认模型。
- 记录路由决策日志,用于后续分析和调优。
这里有个性能优化的点:路由判断本身不能太慢。如果每次都要调用模型来做分类,那延迟就上去了。我的做法是:先用轻量级规则做快速判断,只有规则无法决定时才调用分类器。这样大部分请求都能在1毫秒内完成路由。
4.4 第四步:建立监控和反馈闭环
路由系统上线后,必须有一套监控机制来跟踪效果。我通常关注这几个指标:
- 路由分布:每个模型被调用的比例,是否符合预期。
- 成本变化:整体成本相比路由前的变化。
- 质量指标:用户满意度、任务完成率、错误率。
- 路由准确率:抽样检查路由决策是否正确。
这些指标要做成看板,每天看一眼。如果发现某个模型的分流比例突然变化,或者质量指标下降,就要及时排查。
反馈闭环的意思是:监控数据要能反过来指导路由规则的调整。比如发现某个类别下小模型的表现比预期好,就可以提高它的分流比例;发现某个类别下大模型的优势不明显,就可以降低它的优先级。
5. 实操中容易踩的坑与排查技巧
5.1 路由抖动导致用户体验不一致
这是最常见的问题。同一个用户问同一个问题,第一次走大模型,第二次走小模型,答案风格完全不同。用户会觉得系统“精神分裂”。
解决方法:引入会话级路由粘性。同一个会话内,一旦确定了路由目标,后续请求都走同一个模型。这样至少保证一次对话内的体验是一致的。
实现方式很简单:在会话开始时做一次路由决策,把结果存在会话上下文里,后续请求直接读取。
5.2 评估集偏差导致路由决策错误
如果评估集不能代表真实流量,路由决策就会偏。比如评估集里全是简单问题,那路由会倾向于把小模型的分流比例调高,结果线上复杂问题一来就崩了。
解决方法:评估集要分层采样。按任务类别、请求长度、用户等级等维度分层,确保每个层都有足够的样本。而且要定期更新,至少每月一次。
5.3 模型更新导致路由失效
模型提供方会不定期更新模型版本,新版本的能力分布可能和旧版本完全不同。你之前基于旧版本调好的路由规则,可能在新版本上就不适用了。
解决方法:模型更新后重新跑一遍基线评估。不要假设新版本一定比旧版本好,也不要假设能力分布不变。我见过一个案例,某模型更新后,在简单任务上的表现反而下降了,导致大量请求被错误路由。
5.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 成本没有下降 | 路由规则太保守,大部分请求仍走大模型 | 查看路由分布日志 | 调整规则,提高小模型分流比例 |
| 用户投诉增加 | 路由到了不合适的模型 | 抽样检查路由决策 | 增加规则或调整分类器阈值 |
| 延迟增加 | 路由判断本身耗时过长 | 监控路由中间件耗时 | 优化规则匹配逻辑,减少分类器调用 |
| 某个模型调用量异常 | 规则冲突或优先级错误 | 检查规则配置 | 调整优先级,消除冲突 |
| 质量指标波动 | 评估集偏差或模型更新 | 重新跑基线评估 | 更新评估集,调整路由规则 |
5.5 一个容易被忽略的细节:路由日志的存储
路由决策日志一定要存下来,而且要存足够长的时间(至少三个月)。这些日志是后续调优的基础。我见过一个团队,路由上线后没存日志,结果想调优的时候发现没有任何数据支撑,只能重新跑评估,浪费了大量时间。
日志里至少要包含:请求ID、时间戳、请求特征、路由决策、目标模型、响应时间、成本、质量评分(如果有)。存储可以用普通的日志系统,也可以用数据库,看数据量大小。
6. 模型路由的边界与未来演进
6.1 路由不是万能的
模型路由能解决成本和质量的部分问题,但它解决不了根本性的能力问题。如果你的任务本身就需要大模型的推理能力,那路由只能帮你把不需要大模型的请求分流出去,不能把需要大模型的请求变得不需要。
所以做路由之前,先问自己:我的任务里,有多少是真正需要大模型的?如果这个比例超过60%,那路由的收益就很有限,不如想想怎么优化提示词、怎么用缓存、怎么把任务拆解成更小的步骤。
6.2 从路由到模型编排
路由是“选一个模型”,编排是“组合多个模型”。比如一个复杂任务,可以先用小模型做意图识别,再用大模型做推理,最后用小模型做格式化输出。这种编排比单纯的路由更灵活,但也更复杂。
我观察到的一个趋势是:越来越多的团队从“路由”走向“编排”。路由是编排的一个特例。当你对任务的理解足够深入,对模型的能力边界足够清晰,就可以尝试编排。
6.3 自动化调优是方向
目前大部分路由策略还是人工调的,靠经验、靠试错。未来肯定会走向自动化:系统根据实时监控数据,自动调整路由规则,自动更新分类器,自动发现新的任务类别。
这个方向已经有了一些实践,但还不成熟。我的建议是:先把基础的路由系统搭起来,积累足够的数据和经验,再考虑自动化。不要一上来就追求全自动,那样很容易失控。
7. 回到最初的问题:什么时候值得做
说了这么多,回到标题的问题:企业AI应用什么时候值得做模型路由?
我的判断标准是四个“是”:
- 任务分布是分散的:长尾明显,不同任务适合不同模型。
- 模型差异是可度量的:有评估集,有指标,能说清楚每个模型在每类任务上的表现。
- 成本节省是显著的:月节省金额能覆盖路由系统的开发和维护成本。
- 业务能接受不确定性:或者通过会话粘性等机制把不确定性控制在可接受范围内。
四个都是“是”,那就值得做。有一个是“否”,就先别急,先把基础打好。
我在实际项目中的体会是:路由系统的价值不在于技术多先进,而在于对业务的理解有多深。你越清楚每个请求需要什么、每个模型能提供什么,路由就越简单、越有效。反过来,如果你对业务和模型都是一知半解,那再复杂的路由系统也只是在瞎猜。
最后分享一个小技巧:如果你不确定要不要做路由,可以先做一个“影子模式”——所有请求仍然走大模型,但同时在后台跑一遍路由逻辑,记录“如果按路由走会选哪个模型”。跑一周后,对比一下路由决策和实际大模型回答的质量差异。如果差异很小,说明路由可行;如果差异很大,说明你的路由逻辑还需要调。这个方法不需要改动线上逻辑,风险最低,效果最直观。