模型路由(Model Routing) 是一种智能调度策略:当系统拥有多个可用的大语言模型(或同一模型的不同变体)时,根据当前请求的特点(任务类型、预算、延迟要求、输入长度等),动态选择最合适的一个模型来执行推理。它类似于 API 网关层面的负载均衡或服务路由,但决策维度更丰富,包括质量、成本、速度、安全等。
一、为什么需要模型路由?
| 痛点 | 说明 | 路由解决 |
|---|---|---|
| 成本爆炸 | 最强模型(如 GPT-4)价格是轻量模型的 10~100 倍 | 简单任务走便宜模型 |
| 延迟敏感 | 大模型推理慢,小模型快 | 实时场景选小模型 |
| 能力差异 | 有的模型擅长推理,有的擅长创意,有的支持超长上下文 | 匹配任务与特长 |
| 安全合规 | 某些场景必须用本地部署模型(数据不出域) | 按数据等级路由 |
| 负载均衡 | 单一模型有速率限制 | 多模型分担流量 |
二、模型路由的核心决策维度
| 维度 | 说明 | 示例 |
|---|---|---|
| 任务类型 | 分类、摘要、推理、创作、代码、翻译... | 摘要用 Mixtral,推理用 GPT-4 |
| 输入长度 | 短文本 vs 长文档 | 长文档用支持 1M token 的模型 |
| 所需质量 | 高精度需求 vs 可容忍错误 | 医疗问答用高级模型,闲聊用普通模型 |
| 延迟要求 | 实时交互(<500ms) vs 批处理(小时级) | 客服机器人用小模型 |
| 成本预算 | 每次调用花费的金额上限 | 内部工具用开源模型 |
| 数据安全 | 是否包含 PII/敏感信息 | 敏感数据路由到私有化模型 |
| 输出格式 | 是否需要结构化 JSON / 函数调用 | 选择支持 function calling 的模型 |
| 语言支持 | 某些非英语模型效果更好 | 中文任务路由到国产模型 |
三、模型路由的典型实现方式
1. 基于规则的路由(最简单)
预定义规则,如 if-else 或配置表。
python
def route_by_length(prompt, max_tokens_needed):
if len(prompt) < 2000 and max_tokens_needed < 500:
return "gemma-2b" # 短文本用小模型
else:
return "claude-3-sonnet"
2. 基于分类器的路由
训练一个轻量级分类器(如 BERT-mini),识别用户意图或任务类型,输出推荐模型。
python
intent = classifier.predict(user_query) # "code_generation", "summarization", ...
model_map = {
"code_generation": "deepseek-coder",
"summarization": "gpt-3.5-turbo"
}
3. 语义路由(Semantic Routing)
将用户请求向量化,在向量数据库中匹配已标注的"请求原型",找到最相似场景对应的模型。
python
query_vec = embed(user_query)
similar_scene = vector_db.search(query_vec, top_k=1)
model = scene_to_model[similar_scene.id]
4. LLM-as-a-Router
用一个小型(但足够聪明)的 LLM 来决定路由。把候选模型的能力描述和用户请求一起发给路由器 LLM,让它输出应该调用哪个模型。
python
router_prompt = f"""
用户请求: {user_query}
可选模型:
- gpt-4: 擅长复杂推理、代码、长上下文,价格高
- gpt-3.5: 通用,速度快,价格中等
- gemma-2b: 极快,便宜,适合简单问答
请输出最适合的模型名称。
"""
model_name = small_llm.generate(router_prompt)
5. 动态成本/性能仲裁
结合实时监控数据(当前队列长度、平均延迟、剩余配额),自动调节路由比例。
python
if queue_time > 500ms:
weight_small_model = 0.9 # 临时提高小模型使用率
四、真实案例:OpenRouter 或 Unify
OpenRouter 是一个模型路由市场,用户一次调用,它自动选择最佳模型(基于成本、速度、质量)。Unify 提供统一的 API,底层可以配置路由策略(如"最低成本"或"最高质量")。
企业自建模型路由的典型架构:
text
用户请求 → 网关 → 路由决策模块 → 模型A/模型B/模型C → 结果返回
↑
分类器/规则/LLM路由
五、一个完整的例子
场景:一个企业智能客服系统,集成了三个模型:
- GPT-4:高质量,慢,贵($0.03/1k tokens)
- GPT-3.5:平衡($0.001/1k tokens)
- 本地 TinyLLaMA:免费,快,质量一般
路由规则:
- 输入 > 8000 token → 走 GPT-4(因为只有它支持长上下文)
- 关键词包含"合同、法律、赔偿" → 走 GPT-4(高精度需求)
- 用户是 VIP 用户 → 走 GPT-4
- 简单问候如"你好" → 走 TinyLLaMA
- 其他情况 → 走 GPT-3.5
代码示意:
python
def route(user_request, user_tier, input_length):
if input_length > 8000:
return "gpt-4"
if any(word in user_request for word in ["合同", "法律", "赔偿"]):
return "gpt-4"
if user_tier == "vip":
return "gpt-4"
if len(user_request) < 20:
return "tiny-llama"
return "gpt-3.5"
六、模型路由的挑战
| 挑战 | 说明 |
|---|---|
| 路由模型本身成本 | 如果用一个 LLM 做路由,每次请求会增加延迟和费用 |
| 冷启动 | 对新模型或突发流量缺乏历史数据,难以决断 |
| 评估难度 | 如何定义"最合适"?需要质量、成本、速度的联合优化目标 |
| 模型版本变化 | 模型更新后质量/成本变化,路由策略需动态调整 |
| 回退机制 | 路由选择的模型不可用(超限、宕机)时,必须有备用计划 |
七、总结
模型路由 = 智能选址 :在多个候选模型之间,根据任务特征、成本预算、性能要求 等因素,动态选择最优的"施工队"来执行任务。它是构建经济、高效、可扩展的 AI 应用的必备组件。