Skip to content

E6 · 如何选择和切换不同模型? - Model Routing ​

所属知识库:Agent 全栈技术地图
所属领域:01 · AI
所属章节:03 · 如何使用和管理 AI 模型? - Model Engineering
文档类型:技术原理与工程实践研究
版本:v2.0
更新日期:2026 年 10 月 27 日
核心问题:什么是模型路由?为什么不能把所有任务固定交给同一个模型?如何依据任务能力、质量、成本、延迟、隐私与可用性选择模型?静态路由、规则路由、动态路由、级联和学习式路由分别如何工作?如何建立模型能力注册表、设计路由决策、处理故障切换和版本漂移,并通过离线与在线实验验证路由是否真正优于固定模型?

专题导读 ​

随着 AI 应用从单一模型调用发展为复杂的 Agent 工作流,如何根据不同任务的需求选择合适的模型,成为影响系统质量、成本与运行效率的重要问题。

本篇围绕 Model Routing(模型路由)展开研究,从模型能力差异与任务需求出发,系统分析质量、成本、延迟、可用性和数据安全等因素如何影响模型选择,并深入解释静态路由、规则路由、动态评分、级联调用与学习式路由等主要技术策略的工作机制。

在工程实践部分,研究如何通过 Model Registry 管理模型能力与版本,如何构建可复用的模型路由服务,以及如何实现故障切换、降级恢复、预算控制和运行监测。同时,通过一个研究型 Agent 的多模型路由案例,展示任务分类、模型筛选、决策执行与结果验证的完整过程,并进一步讨论如何利用离线评测、A/B 测试和灰度发布判断路由策略是否真正优于固定模型方案。

最终帮助读者理解模型路由如何成为 Agent System 中连接模型能力、任务需求与资源管理的重要基础设施。

一、研究定位:路由解决的究竟是什么问题? ​

模型 API 让应用能够调用模型,但并没有回答一个更高层次的问题:在多个可用模型之间,系统应当把某项任务交给谁? 同一项工作,使用大型推理模型可能获得更高的复杂任务成功率,却产生更高费用和更长等待;使用轻量模型可能节约预算,却在需要严格论证或复杂工具规划的任务上出现错误。随着 Agent 工作流包含分类、检索查询生成、抽取、综合分析、审核等不同环节,“所有步骤固定一个模型”往往不再是理想设计。

Model Routing(模型路由)是一个在任务执行前或执行过程中,根据任务需求、候选模型的能力和运行状态,选择模型、部署实例或调用路径的决策机制。它既包括“选择哪一类模型”,也可能包括“同一模型的多个部署节点之间如何分配请求”。但这两者需要明确区分:前者是能力与质量路由,后者是部署层流量调度;系统可能同时使用两级路由。

模型路由并不是一个神奇的“最优模型识别器”。它依赖任务特征、历史评估、能力声明、成本信息和实时遥测。没有数据或明确约束的路由只是经验规则;即使使用学习算法,也无法保证每个单独请求都选中事后看来最好的模型。

本篇以研究型 Agent System 为贯穿场景,讨论从简单规则到可学习路由的演进,并回答一个可检验的问题:在质量下限和治理约束不被突破的前提下,路由是否降低了单位有效任务的成本或延迟?

1.1 与其他专题的边界 ​

专题主要问题本篇关系
E1 Model API如何发送请求、接收响应、处理通信错误路由选择结果由 API 适配器执行
E3 Context Window上下文长度、Token 预算与压缩路由必须检查输入是否适配候选模型
E4 Structured Outputs如何生成并验证结构化结果路由必须检查 Schema/JSON 能力与兼容性
E5 Function Calling模型如何提出工具调用,Runtime 如何执行路由必须检查工具协议及调用能力
E7 Model Deployment模型在哪里运行、如何提供服务路由使用部署端点和运行状态
E8 Inference Optimization如何改善推理吞吐、延迟和资源效率路由利用性能数据,但不替代推理优化
M8 Model Evaluation如何衡量模型能力与误差路由的质量估计需要评测数据

二、把路由理解为受约束的决策问题 ​

路由首先筛除不合格的候选模型,然后才在合格候选中优化目标。这个顺序比直接给所有模型算一个综合分更可靠。

假设任务 x 需要读取 40,000 Token 文档、返回符合指定 Schema 的 JSON,涉及禁止跨境处理的数据,并要求 4 秒内返回。某模型即使便宜、综合评测分数高,只要不满足数据驻留或结构化输出能力,就不应进入候选集。合规、安全、必需模态、上下文长度、协议支持通常属于硬约束;价格、延迟、质量偏好则可能是优化目标,也可能被业务设为硬阈值。

定义任务 x 的可用模型集合:

text
Eligible(x) = { m ∈ M |
    capability(m, x) = true
    ∧ governance(m, x) = true
    ∧ health(m) = acceptable
    ∧ estimated_cost(m, x) ≤ budget(x)
    ∧ estimated_latency(m, x) ≤ deadline(x)
}

在可行集合中,一种可解释的策略是:

text
在 estimated_quality(m, x) ≥ quality_floor(x) 的前提下,
选择 estimated_total_cost(m, x) 最小的模型。

也可以最小化加权损失:

m∗(x)=arg⁡minm∈Eligible(x)[λcC^(m,x)+λlL^(m,x)+λrR^(m,x)]

其中 Ĉ 是预估费用,Ĺ 是预估延迟,R̂ 是预测质量不足或失败的风险。权重并不是“科学常数”,需要根据实际业务效用和数据标定;不同量纲应先归一化或转化为共同的业务损失单位。对于必须满足的质量与隐私要求,不应仅依赖一个低权重惩罚项,而应明确作为硬约束。

2.1 质量不是一个普适的单一分数 ​

同一个模型在事实抽取、中文长文写作、代码生成、数学推理、工具参数生成上的表现可能不同。质量应该表示为条件估计 Q(m | task_type, language, context_length, tool_use, schema, ...),而不是一个脱离任务的“综合能力 95 分”。离线基准、供应商公开榜单、历史生产数据和人工审核数据的测量对象不同,不应直接混用。

还必须区分模型输出质量与业务任务成功率。例如,一篇研究报告写得流畅,不代表引用真实、论证有效;一份 JSON 通过 Schema 校验,不代表抽取事实正确。路由器应优化任务级指标,而不只是文字相似度或模型自评。

2.2 为什么不能把质量、价格、速度简单排成名次? ​

候选模型通常构成 Pareto 权衡:A 便宜但慢,B 快但贵,C 质量高但昂贵。若模型 B 在所有关心的维度都不劣于 A,并至少一个维度更优,则 A 被 B 支配;否则两者可能都在 Pareto 前沿。不存在脱离工作负载、约束和价格版本的通用最优模型。

三、任务特征:路由器依据什么做决定? ​

实际系统应把自然语言请求转成稳定的任务描述符,再做路由。最初可以依靠工作流节点本身的已知类型,避免每次再调用一个 LLM 分类。只有当任务类型不明确时,才引入轻量分类器或学习式路由器。

json
{
  "task_id": "research-20261027-001",
  "stage": "evidence_extraction",
  "input_modality": ["text"],
  "language": "zh",
  "estimated_input_tokens": 12000,
  "requires": {"structured_output": true, "tool_calling": false},
  "data_class": "internal",
  "allowed_regions": ["approved-region"],
  "quality_floor": 0.90,
  "max_cost_usd": 0.08,
  "deadline_ms": 5000,
  "policy_version": "router-policy-2026-10-27"
}

以上字段是自定义应用数据结构,不是任何服务商的标准 API。quality_floor 需要说明对应的任务指标与估计方法,否则数字本身没有意义。estimated_input_tokens 应由与目标模型匹配的 Token 估计方法计算;不同模型 Tokenizer 可能不同,不能假定字符数等于 Token 数。

任务特征可分为四组:第一组是语义与难度(分类、抽取、总结、推理、代码、视觉);第二组是接口要求(Schema、工具调用、长上下文、流式输出);第三组是业务约束(隐私、地区、预算、截止时间);第四组是运行上下文(前一步失败原因、当前候选模型健康度、会话状态、剩余工作流预算)。

难度判断容易产生循环依赖:如果要先用昂贵模型判断任务难度,路由可能省不了钱。因此应优先使用低成本信号,例如工作流阶段、输入长度、关键词规则、历史相似任务统计,必要时才使用单独的路由模型。

四、Model Registry:把模型能力变成可治理的数据 ​

模型注册表不是一串模型名称,而是模型选择的能力、约束、部署与版本事实源。至少要区分逻辑模型、具体版本和部署实例。

text
Logical Model(能力档位)
  └── Model Version(固定版本/快照)
        ├── Deployment A(供应商/区域/凭据/限额)
        └── Deployment B(另一供应商或区域)

一个合理的注册条目包括:logical_id、provider、provider_model_id、revision、endpoint、region、allowed_data_classes、modalities、context_limit、structured_output_support、tool_call_support、pricing_version、rate_limit、status、eval_profile_version 和 last_verified_at。某些字段来自官方声明,某些来自内部测试,某些来自实时监控;必须保留来源类型和核验时间。

4.1 能力声明与实测能力不能混为一谈 ​

模型宣称支持工具调用,只能证明存在某种协议能力;它在你所用的 Schema、长上下文或多轮任务上的成功率,仍需通过测试确定。注册表最好拆为:

  1. 静态元数据:提供商、版本、协议、许可、地区;
  2. 经验证能力:Schema 通过率、工具调用正确率、任务集得分;
  3. 动态遥测:错误率、429 频率、P95 延迟、队列等待;
  4. 治理状态:允许、灰度、冻结、退役;
  5. 证据元数据:评测集版本、采样窗口、更新时间、置信区间。

不要把过去某一天的 P95 延迟写成永久不变的模型属性。价格、限额和能力也可能随供应商版本、账户等级与地区变化,必须记录生效条件。

4.2 版本固定与逻辑别名 ​

fast、balanced、strong 这样的逻辑别名方便业务层使用,但别名映射应在配置中心受控变更。关键任务应尽可能锁定可用的具体模型版本;若供应商只提供动态别名,则应通过回归测试和变更记录管理漂移。版本切换必须支持灰度、回滚与历史决策重放。

五、六类路由策略:从规则到学习 ​

5.1 静态路由:按工作流节点固定模型 ​

例如“文档语言识别 → 轻量模型;深度研究 → 强模型;格式检查 → 规则程序”。优点是简单、可解释、容易控制;缺点是无法根据单次任务难度与模型健康度自适应。这是应当首先建立的基线,不是落后的方案。

5.2 规则路由:显式条件决策 ​

text
if data_class == 'restricted': use approved_local_pool
elif requires_vision: use vision_capable_pool
elif stage == 'simple_extract' and tokens < threshold: use economical_pool
else: use general_pool

规则路由适合边界清楚、审计要求高、数据量有限的系统。缺点是规则膨胀、阈值僵化,以及难以捕捉“表面很短但推理很难”的请求。规则优先级必须清晰:治理硬约束 > 能力要求 > 业务质量阈值 > 成本优化。

5.3 动态评分路由:预测每个候选的效用 ​

路由器估计 P(success | x,m)、费用和延迟,然后按约束选取模型。可用手工权重、回归模型、梯度提升树或专门的轻量分类器。关键不在算法名字,而在训练标签质量、数据分布、校准能力与线上漂移。

如果训练样本只记录“原路由实际选中的模型结果”,就缺少其他候选模型的反事实结果,会产生选择偏差。可以对经脱敏的任务子集进行多模型离线评估,或采用受控探索与倾向评分校正;不应把未经校正的生产日志直接当成全模型监督数据。

5.4 级联路由:先低成本尝试,必要时升级 ​

级联不是一次性选择,而是分阶段决策:先调用便宜模型,使用可信的质量信号判断是否接受;若不满足要求,再升级到更强模型。经典研究 FrugalGPT 探讨了以模型级联等方法优化成本与质量的方向;RouteLLM 则研究利用偏好数据学习强弱模型间的路由。两者均不能证明某个具体生产系统必然节约成本,仍须按自己的任务分布评估。[R1][R2]

text
请求 → 小模型 → 验证器/质量估计器
                  ├─ 满足接受条件 → 返回
                  └─ 不满足 → 强模型 → 验证 → 返回或人工处理

对于简单 JSON 抽取,可以使用 Schema 校验、必填字段与外部事实核对作为接受信号;对于开放式战略分析,单靠“模型说自己有信心”通常不够可靠,应使用独立评测器、人工抽检或任务级证据检查。可验证性越弱,级联越难安全地停止。

设首级模型成本 c_s,升级模型成本 c_l,升级概率 p,验证器成本 c_v,则在简化假设下:

E[Ccascade]=cs+cv+pcl

只有当 c_s+c_v+p c_l < c_l 时,级联才比直接调用强模型便宜;还需比较级联质量。若强模型成本为 0.15 美元、小模型 0.01、验证 0.005,升级率 30%,则期望成本为 0.01+0.005+0.3×0.15=0.06 美元,比强模型直调的 0.15 美元低 60%。这是纯教学算例,不包含缓存、失败重试、计费舍入与实际 Token 分布。

延迟也不能简单理解为“更快”:需要升级的请求必须等待两次串行调用。假设小模型 0.5 秒、验证 0.1 秒、强模型 2.7 秒,则升级路径约 3.3 秒,可能比直接强模型的 2.7 秒慢;因此必须监控 P95/P99 与截止时间,而非只看平均成本。

5.5 学习式路由:Bandit、偏好模型与在线探索 ​

学习式路由可以通过任务特征预测候选模型的偏好胜率,也可以采用上下文 Bandit 在探索与利用之间取舍。RouteLLM 的研究展示了基于偏好数据训练强弱模型路由器的路径。[R2]

但上线门槛更高:探索会产生额外费用和潜在质量风险;历史反馈可能延迟到达;“用户点赞”不一定等于事实正确;模型更新会让旧标签失效。对高风险任务,应限制探索范围,并将隐私与质量阈值置于探索策略之外。Bandit 不适合没有明确可测回报或无法承担探索失败代价的场景。

5.6 Ensemble 与投票:不等于普通路由 ​

多个模型并行生成,再投票、交叉审查或综合,是多模型集成。它可以提高某些任务的鲁棒性,但通常增加调用量与成本。路由的核心是选择路径,集成的核心是组合多个输出;两者可以结合,但不应混为同一种机制。多个模型存在相关性错误时,投票也不一定更准确。

六、成本、延迟与可用性如何估计? ​

6.1 真实成本应包括整个工作流 ​

单次调用费用可近似写为:

C=Tin106Pin+Tout106Pout+Cextra

其中 P_in/P_out 是每百万 Token 的价格,C_extra 包括适用时的缓存、工具、批处理或其他服务费用。路由阶段尚不知道实际输出 Token,因此必须估计分布,并在完成后记录实际消耗。模型供应商的计费项目、缓存计费和价格单位并不完全一致,上式只是抽象核算框架。

对 Agent System,真正重要的是 cost_per_successful_task:包括路由器、重试、升级、验证、工具调用和失败返工,而不是只比较第一次模型请求的标价。

6.2 延迟不是单一数字 ​

至少区分 TTFT(首 Token 时间)、end-to-end latency(完整结果耗时)、P50/P95/P99(延迟分位数)、队列等待和工作流总完成时间。流式生成可能改善用户的首次反馈体验,却不一定减少完成整项任务的时间。官方延迟优化资料强调减少不必要请求、并行独立工作以及不把所有问题都交给 LLM。[R3]

6.3 限额和排队会改变最优选择 ​

一个理论上最快的模型,如果当前处于限流或排队状态,实际体验可能最差。路由器应同时跟踪 RPM、TPM、并发上限、近期 429、超时率与冷却状态。官方 API 限额文档指出,请求数和 Token 数等多个维度可能分别构成约束,并要求针对可重试错误进行有界退避处理。[R4]

6.4 估计值必须带不确定性 ​

如果某模型在某类任务只有 8 个样本,观测成功率 100% 不意味着真实成功率就是 100%。工程上应记录样本数、时间窗口、置信区间或保守估计。对数据稀疏任务,可回退到更稳定的基线策略,而不是过度相信高方差评分。

七、贯穿案例:三类任务、三种模型的研究 Agent 路由 ​

以下全部数字均为假设值,用于演示方法,而非真实模型测评:

模型档位抽取质量总结质量推理质量每任务预估费用预估延迟
Small0.910.72不支持该任务档位$0.01500ms
Balanced0.960.870.77$0.041100ms
Strong0.980.940.93$0.152700ms

假设要求任务质量至少 0.80,且预算、时限允许,则抽取选择 Small,总结选择 Balanced,复杂推理选择 Strong。若抽取任务提高质量阈值到 0.95,则 Small 被排除,选择 Balanced。若复杂推理预算上限只有 $0.02,则应明确拒绝或升级审批,而不是静默降低质量。

7.1 工程实现:可运行的离线路由器 ​

配套文件 E6-model-router-demo.py 使用 Python 标准库实现 Task、Model、eligible()、choose() 与 cascade()。关键决策逻辑如下:

python
def eligible(task, models):
    return [m for m in models if
        m.healthy
        and task.kind in m.kinds
        and (not task.require_json or m.json)
        and m.cost <= task.max_cost
        and m.latency_ms <= task.max_latency_ms
        and (task.sensitivity != 'local_only' or m.region == 'local')]

def choose(task, models, min_quality=.80):
    options = [m for m in eligible(task, models)
               if m.quality.get(task.kind, 0) >= min_quality]
    if not options:
        raise NoEligibleModel('No model meets all constraints')
    return min(options, key=lambda m: (m.cost, m.latency_ms, m.name))

这个示例已执行,不依赖任何第三方 SDK。完整代码和 8 项断言见配套文件。断言覆盖:抽取、推理、总结、提高质量阈值、级联接受与升级、敏感数据本地部署约束、预算不足时拒绝。它只验证策略逻辑,不证明模拟的质量数字具有外部效度。

7.2 从模拟器走向真实系统还缺什么? ​

需要将模拟 Model 替换为真实注册表记录;将 choose() 输出映射到具体的 API Adapter;增加超时、限流、幂等性、追踪 ID 和结果验证;用真实任务集估计每个模型的质量分布;加入价格版本和 Token 预测;最后才能进行线上试验。不要直接把示例中的假设质量值用于生产。

八、Fallback、Failover、质量升级与重试:四件不同的事 ​

机制触发原因典型动作主要风险
Retry 重试暂时性超时、可重试限流/服务错误同一路径有界重试重复计费、重复执行、放大故障
Failover 故障切换当前部署节点不可用切到同模型的健康部署区域、凭据、状态不一致
Fallback 备选降级/切换首选模型或服务不可用切到兼容的备选模型质量、Schema、工具能力变化
Escalation 质量升级首级输出不满足接受标准切到更强模型重做或继续额外成本和串行延迟

注意不同框架可能将 fallback 一词同时用于故障切换与模型替换;工程文档应明确自己的语义。

8.1 一个可审计的状态机 ​

text
RECEIVED
   ↓
POLICY_CHECK ── 不合规 ──► REJECTED
   ↓
CANDIDATE_FILTER ── 无合格候选 ──► NEEDS_APPROVAL / FAILED
   ↓
SELECTED ──► INVOKING
                  ├─ 成功 ──► VALIDATING ──► ACCEPTED
                  │                      └─ 不合格 ──► ESCALATE
                  ├─ 可重试错误 ──► RETRY_WAIT ──► INVOKING
                  ├─ 节点故障 ──► FAILOVER_CHECK ──► INVOKING
                  └─ 不可恢复错误 ──► FAILED

每次切换前都应重新检查硬约束,特别是隐私、地区、工具调用、Schema 与上下文容量。跨供应商模型即使接受类似 JSON 消息,也可能在工具协议、拒绝表示、流式事件、参数名称、推理内容和计费上不同;适配器应做语义转换与兼容性测试,而不只是改 model 字符串。

8.2 错误分类与有界重试 ​

429 可能表示临时限流,也可能涉及额度与账户限制,不能对所有 4xx 一律重试。认证失败、权限不足、无效请求通常应停止并上报;超时、临时不可用和明确可重试限流可考虑指数退避与随机抖动。应遵循服务端 Retry-After(若存在且有效),并限制总重试次数、总耗时与总预算。还要避免 SDK 内部重试与网关重试叠加,形成乘法式请求风暴。[R4]

若请求可能产生副作用,必须结合 E5 的幂等性设计;模型生成本身与外部工具执行的重试语义不同。对于已经流式返回部分内容的请求,切换模型还涉及输出一致性,不能简单把新模型结果拼接在旧结果后面。

8.3 Circuit Breaker 与恢复 ​

断路器根据滚动窗口的错误率或连续失败数,暂时停止向异常部署发送请求;冷却后通过少量探测恢复。健康状态应针对部署实例而不是笼统针对整个模型名称。LiteLLM 的官方路由文档提供了加权选择、基于限额和延迟的策略、冷却、回退等具体实现,说明这些能力通常属于路由网关层而非模型本身。[R5]

九、模型路由的系统架构 ​

text
Agent / Application
      │ TaskDescriptor + PolicyContext
      ▼
Routing Gateway
  ├─ Policy Engine:数据治理、权限、预算
  ├─ Task Profiler:阶段、长度、模态、难度
  ├─ Model Registry:能力、版本、部署、价格
  ├─ Evaluator/Scorer:任务级质量估计
  ├─ Runtime Health:延迟、错误、限额
  ├─ Route Planner:过滤、评分、选择、级联
  └─ Audit Logger:记录候选、决策、结果
      │
      ▼
Provider Adapters / Deployment Pool
  ├─ Provider A
  ├─ Provider B
  └─ Self-hosted Endpoint
      │
      ▼
Result Validator → Agent Runtime / Workflow

业务 Agent 应表达任务意图和约束,而不需要自行管理供应商凭据、价格表与健康状态。Router 负责模型选择与调用路径;Agent Runtime 负责任务状态、工具权限、工作流编排和结果消费。对于复杂系统,可以将路由策略与网关执行分离,便于版本治理和独立回归测试。

9.1 多 Agent 的路由不是“每个 Agent 绑定一个最强模型” ​

研究 Agent、写作 Agent、审核 Agent 的任务分布不同;即使是同一 Agent,不同阶段也可能使用不同模型。一个实际策略可以是:资料去重由确定性程序处理,结构化抽取由经济模型完成,复杂论证由强模型处理,事实审核由独立验证流程完成。对于关键审核环节,不能仅因两个模型名称不同就假定错误独立;应设计证据核验与人工抽检。

9.2 会话亲和性与状态兼容 ​

多轮对话可能依赖模型特有的工具调用格式、隐藏推理状态或上下文缓存。跨模型切换时,应只传递可移植、已授权、已验证的会话状态,并明确哪些信息无法迁移。会话亲和性可减少切换成本,但也可能导致某部署故障时无法快速迁移,因此需要定义解除亲和的条件。

9.3 治理优先于“聪明路由” ​

高敏感数据不能因为便宜而发送到未获批准的供应商;不允许工具执行的任务不能因模型支持工具就自动开放工具;失败时也不能绕过权限规则。若没有满足条件的候选,应明确失败、请求审批或延后处理,而不是违反硬约束完成请求。

十、如何证明路由优于固定模型? ​

这是本篇最关键的验收问题。路由器多了一层复杂度与潜在错误,必须证明收益。实验至少比较:

  • Baseline A:固定经济模型——衡量最低成本与质量损失;
  • Baseline B:固定强模型——衡量高质量基线与成本;
  • Baseline C:静态工作流分配——衡量简单工程策略;
  • Candidate:动态/级联路由——衡量新增复杂度是否有价值。

10.1 离线评测:同一任务集上的配对比较 ​

建立按任务类型、难度、语言、输入长度、模态、敏感级别分层的代表性数据集。尽可能对同一输入运行多个候选模型,记录任务级结果、Token 消耗、延迟与错误。对开放式研究任务,需定义人工评分 Rubric 或独立证据检查;对结构化抽取,区分 Schema 合格率、字段准确率和业务成功率。

每条记录至少包含 task_id、dataset_version、prompt_version、model_revision、router_policy_version、quality_label、cost、latency、failure_reason。固定评测集可以保证可比性,但需要额外留出时间后移样本和新任务样本,避免过拟合旧题。

10.2 评价指标与反例 ​

指标含义必须注意的陷阱
Task Success Rate达到业务验收条件的任务比例不能用模型自评替代事实核验
Cost / Successful Task总成本除以成功任务数不能漏掉重试、验证和路由器费用
P50/P95/P99 Latency端到端响应分布平均值可能掩盖升级路径的尾延迟
Escalation Rate级联升级比例过低可能意味着错误接受劣质结果
False Accept Rate低质量结果被验证器接受的比例是级联安全性的关键指标
Constraint Violation违反隐私、地区、预算等约束次数关键约束应接近零容忍
Fallback Success Rate首选失败后成功恢复的比例不代表恢复结果质量与原方案相同
Route Stability相似任务路由决策稳定程度不应为了稳定牺牲适应故障的能力

10.3 数字算例:为什么只看平均成本会误判? ​

假设 1,000 项任务中,固定强模型成功 930 项、总费用 $150;某路由策略成功 900 项、总费用 $65。前者每成功任务成本约 $0.161,后者约 $0.072。路由看起来省钱,但成功率从 93% 降到 90%。如果业务规定成功率不得低于 92%,该路由不能通过验收,无论成本节约多大。以上数字仅用于解释指标,不是实际实验结果。

对关键业务还应计算错误的不对称损失:错误批准付款、泄露敏感信息、生成错误引用的代价,可能远高于一次 API 费用。用同一个简单“成功/失败”标签不足以覆盖所有风险。

10.4 在线验证:影子流量、A/B 与渐进发布 ​

**Shadow Traffic(影子流量)**可以将经允许的数据复制给候选策略评估,而不让候选结果影响用户;它会产生额外费用和潜在数据共享风险,必须经过隐私与合规检查。A/B Test 应随机分流并记录实验单元,避免同一用户在两种策略间频繁切换造成干扰。Canary 先放少量流量,设置质量、成本、错误率与延迟的自动回滚阈值。

在线实验应同时关注总体效果与分层效果:某策略整体节约 30%,却可能对长中文文档或高难度推理任务造成显著损害。应监测样本比例失衡、数据分布漂移、供应商版本变化和流量高峰对结果的影响。没有统计把握时,不应把微小差异解释成确定性收益。

10.5 实验流程 ​

text
明确业务质量下限与预算
  → 固定数据集/评分标准/模型版本
  → 对比固定模型和静态路由基线
  → 离线配对评估动态/级联策略
  → 失败案例分析与阈值校准
  → 影子流量检查
  → 小流量 A/B / Canary
  → 质量/成本/尾延迟/合规联合验收
  → 灰度扩量与持续回归

十一、失败模式:为什么一个看似合理的路由器会变差? ​

分类器误判。 短文本也可能是复杂数学题;长文本也可能只是简单提取。解决办法是引入任务级错误分析和保守回退,而不是只用长度分类。

路由振荡。 两个部署的瞬时延迟互相追逐,导致请求频繁切换。可以使用平滑窗口、滞回阈值、最小驻留时间和冷却策略;但不能以稳定为由忽视持续故障。

数据污染与评估泄漏。 训练路由器的偏好数据与验收数据高度重合,离线成绩虚高。应隔离训练、校准、验收与时间后移测试集。

模型版本漂移。 供应商升级模型或调整默认行为,历史质量分数失效。需要版本记录、变更触发回归、异常监测与可回滚映射。

错误的置信度。 模型生成的“我有 95% 把握”不一定经过校准,不能直接作为接受级联结果的证据。验证器本身也需要误差分析。

隐性成本。 复杂路由增加分类、验证、影子流量、缓存失效和运维费用。必须核算总成本。

供应商依赖与接口漂移。 跨供应商工具协议、结构化输出、限额与数据政策不同,Fallback 可能把一个成功的协议调用变成语义错误。

安全降级。 故障时将敏感任务转给未批准的外部服务,属于治理失败,而不是高可用性成功。

十二、实施路线:从单模型到生产路由 ​

阶段一:建立固定模型基线。 记录任务类型、成功率、费用、P95 延迟和失败原因。没有基线,不要直接上线复杂动态路由。

阶段二:建立 Registry 与适配层。 把逻辑模型、具体版本、部署、能力、价格与治理状态分开。统一请求/响应契约,保留原始供应商错误以便排查。

阶段三:加入硬约束和静态规则。 先确保隐私、地区、工具、Schema、上下文与预算约束可靠执行,完成失败关闭(fail closed)逻辑。

阶段四:增加健康感知与受控切换。 实施有界重试、冷却、故障转移、兼容性检查、日志与告警。

阶段五:基于离线数据优化。 使用分层评估决定是否引入动态评分或级联;只有在验证器可靠且收益明确时才增加复杂度。

阶段六:小流量上线并持续复核。 建立灰度、回滚、漂移检测、成本预警和周期性模型重新评估机制。

十三、常见误区与核心结论 ​

  1. 误区:路由就是选最便宜的模型。 正确做法是先满足硬约束与质量下限,再优化成本和延迟。
  2. 误区:公开排行榜第一就适合所有任务。 路由必须使用与你的任务分布匹配的评估。
  3. 误区:一个高置信度数值足以决定是否升级。 接受信号需要校准,并应结合外部可验证条件。
  4. 误区:Fallback 就是把模型名换一下。 跨模型切换必须重新验证协议、治理、质量与上下文兼容性。
  5. 误区:动态路由天然优于静态规则。 如果额外开销超过收益,简单规则可能更好。
  6. 误区:降低平均 API 单价就意味着系统更省钱。 应比较包含重试、验证、失败返工的每成功任务成本。
  7. 误区:模型路由器能替代 Agent Runtime。 路由决定使用哪个模型;工具执行、权限、状态和编排仍属于 Runtime/系统职责。

结论:模型路由的本质是一个有约束、有证据、有反馈的系统决策过程。可靠路线通常从明确的业务基线、模型能力注册表和简单规则开始,逐步引入健康感知、级联和学习式路由。路由是否成功,最终应由任务级质量、成本、尾延迟、可用性与治理合规共同证明。

十四、研究资料、核验记录与局限 ​

14.1 本次在线核验的主要资料 ​

  • [R1] Chen et al., FrugalGPT: How to Use Large Language Models While Reducing Cost and Improving Performance (2023), 原始研究入口:https://arxiv.org/abs/2305.05176。用于说明级联/模型组合的研究方向;本文不直接迁移论文中的性能数字。
  • [R2] Ong et al., RouteLLM: Learning to Route LLMs with Preference Data (2024), https://arxiv.org/abs/2406.18665。用于说明偏好数据训练路由器的方法和研究结果;不将其特定实验收益推广为所有生产环境保证。
  • [R3] OpenAI, Latency Optimization, https://developers.openai.com/api/docs/guides/latency-optimization,2026-10-27 检索。用于延迟构成、减少调用次数、并行及替代 LLM 调用的工程原则。
  • [R4] OpenAI, Rate Limits, https://developers.openai.com/api/docs/guides/rate-limits,2026-10-27 检索。用于限额维度、429、Retry-After、退避与重试边界。具体限额依账户与服务变更,不在本文硬编码。
  • [R5] LiteLLM, Router — Load Balancing, https://docs.litellm.ai/docs/routing,2026-10-27 检索。用于确认网关层的多部署调度、策略、冷却、回退与流量镜像等机制;其配置项会随版本变化,本文不把示例视为永久稳定 API。

核验边界:R2、R3、R4、R5 的在线资料已检索;R1 作为原始论文参考入口列出,本文未对其所有实验细节逐项复核。没有逐一核验所有供应商模型的 2026-10-27 实际价格、可用地区、版本与性能,也没有生产流量实验。因此本文是机制与工程方法研究,不是“2026 最佳模型排行榜”。

14.2 代码验证记录 ​

  • 环境:Python 3,标准库;无外部网络调用。
  • 文件:E6-model-router-demo.py。
  • 已执行:8 项离线断言,全部通过。
  • 已覆盖:硬约束过滤、任务质量阈值、最低成本选择、预算不足拒绝、敏感任务拒绝、级联分支。
  • 未验证:真实 SDK 调用、模型输出质量、生产延迟与价格、并发限流、真实故障切换、分布式状态、在线实验。
  • 演示数据全部是模拟值,不得作为生产选型依据。

14.3 研究日期与维护触发 ​

  • 研究基准日期:2026-10-27。
  • 资料检索日期:2026-10-27。
  • 文档更新日期:2026-10-27。
  • 最新性状态:部分核验(已检索主要官方机制文档和路由研究,未完成逐型号/逐供应商的最新参数与价格核验)。
  • 触发复核:供应商模型版本变更、价格与限额变更、路由框架重大版本、任务分布变化、质量下降、隐私政策或部署区域变更。

十五、与 Agent 全栈技术地图的衔接 ​

向前,本篇依赖 E1 的模型 API 抽象、E3 的上下文与 Token 预算、E4 的输出契约以及 E5 的工具调用能力;向后,它将与 E7 的模型部署端点、E8 的推理性能与成本优化结合。在 Agent System 层,路由器应成为可共享的模型服务组件,而非散落在各个 Agent Prompt 中的“选模型建议”。这种职责分离使模型替换、版本治理、费用核算、审计和质量评估可以独立演进。


研究与验证说明:本文以能够查阅的官方技术文档、原始研究和既有研究稿为基础。文中的三模型数值案例全部为教学假设,不代表任何真实模型的基准成绩、价格或延迟。配套 Python 示例为不依赖网络的可执行路由决策模拟,已在本地执行 8 项断言;没有进行真实模型 API 调用、线上 A/B 测试或生产负载测试。涉及供应商接口和框架功能时,部署前须再次核对对应版本。