很多团队一上来就“全量上最贵模型”,效果未必最好,成本却先爆炸。
更稳的做法是:模型分层路由(Tiered Routing)。
一句话: 先判断任务难度,再选模型;必要时再升级模型。
1. 任务分层:先分类,再执行
可把请求分为三层:
- L0 轻问答:寒暄、短解释、改写、摘要
- 用便宜快模型(低成本、低延迟)
- L1 中等任务:结构化输出、普通代码生成
- 用中档模型
- L2 重推理任务:多文件分析、复杂调试、架构权衡、长链路工具调用
- 用高能力模型
这个阶段可以用:
- 规则路由(关键词+长度+是否需要工具)
- 或一个小模型做分类器
2. 升级触发器:便宜模型先跑,但允许“升舱”
即使初始走 L0/L1,也要设置自动升级条件:
- 回答置信度低 / 自我不确定
- 需要多步工具链(检索+代码分析+汇总)
- 首轮答案没达到验收标准
- 用户明确要求“深入分析/最终方案”
命中触发器后,直接把同一任务交给高能力模型重跑。
3. 预算闸门:没有预算控制的公开Agent一定会翻车
建议最少加四个闸门:
- 单次请求 token 上限
- 单用户频率限制
- 每日预算上限(如
$2/day) - 月度硬上限(如
$30/month)
超预算时自动降级:
- 改用便宜模型输出简版
- 或返回“稍后重试/排队”
4. 一个可落地的执行流程
- 收到请求
- 路由器判定层级(L0/L1/L2)
- 用对应模型执行
- 命中升级触发器则升级到高能力模型
- 输出前做验收(事实、完整性、格式)
- 记录日志(模型、token、成本、成功率)
5. 伪代码示例
level = classify(user_query) # L0/L1/L2
model = {
"L0": "cheap-fast",
"L1": "mid",
"L2": "strong-reasoning"
}[level]
result = run(model, user_query)
if need_escalation(result, user_query):
result = run("strong-reasoning", user_query)
if over_budget_today():
result = run("cheap-fast", "请给简版答案:" + user_query)
return result
6. 为什么这套方法有效?
- 成本可控:把“贵推理”留给真正需要的请求
- 体验更快:大多数轻任务拿到更低延迟
- 质量不掉线:复杂问题可升级兜底
这不是“抠成本”,而是工程化能力。
好的 AI 系统,不是永远最强模型,而是永远用“最合适”的模型。