30秒快速回答
模型路由(LLM Routing)是一种让应用根据每次请求的内容、难度和预算,自动选择最合适大模型的技术。不再把所有请求都发给最贵最强的模型,而是”简单问题用小模型,难题才上大模型”。一个设计良好的路由系统能在保持 95% 性能的同时,节省 85% 的成本。
核心价值:它是 AI 应用从”能用”走向”用得起”的关键基础设施。
为什么需要模型路由?
单模型部署的痛点
2024 年到 2025 年初,大多数 AI 应用的架构很简单:所有请求统一发往 GPT-4 或 Claude。这很快暴露了三个致命问题:
| 问题 | 具体表现 | 后果 |
|---|---|---|
| 成本失控 | 简单分类任务也走 GPT-4,每次调用 $0.03 | 月账单轻松破千刀 |
| 延迟过高 | 大模型推理延迟 2-5 秒,简单问题也要等 | 用户体验极差 |
| 单点故障 | 唯一依赖的模型挂了,整个应用不可用 | 没有降级方案 |
路由的核心思想
把问题想象成”快递分拣”:一封信不需要用专机运送,一瓶水也不需要冷链物流。同理——
用户请求
│
▼
┌──────────────┐
│ 模型路由器 │ ← 判断:这个问题有多难?预算多少?
└──────┬───────┘
│
┌────┼────┬──────┐
▼ ▼ ▼ ▼
小模型 中模型 大模型 专业模型
(免费/极快) (便宜/快) (贵/强) (垂直领域)
数据证明
UC Berkeley 和 Anyscale 联合发布的 RouteLLM(ICLR 2025)给出了令人信服的数据:
- 用矩阵分解路由器,仅 26% 的请求需要走 GPT-4,其余用开源小模型处理
- 在 MMLU 基准上,保持了 GPT-4 95% 的性能,成本降低 85%
- MMLU 测试集成本节省 45%,GSM8K 数学测试节省 35%
模型路由的核心技术
1. 基于分类的路由(Classifier-based Routing)
训练一个轻量分类器,判断请求的难度等级,然后分发给对应模型。
实现代码示例(使用 RouteLLM 的矩阵分解方法):
from openai import OpenAI
import numpy as np
# 假设你已训练好路由矩阵 W(这里用简化版)
W = np.load("router_matrix.npy")
def route_request(prompt: str, embedding_model) -> str:
# 1. 获取 prompt 的嵌入向量
emb = embedding_model.encode(prompt)
# 2. 计算路由分数
scores = W @ emb
# 3. 根据分数选择模型
if scores[0] > 0.7: # 高难度
return "gpt-4o"
elif scores[0] > 0.3: # 中等难度
return "gpt-4o-mini"
else: # 低难度
return "llama-3-8b"
# 使用路由器
model_choice = route_request("翻译这段文字:Hello World", embedder)
print(f"路由到: {model_choice}") # → llama-3-8b
2. 级联路由(Cascade Routing)
这是目前生产环境最成熟的方案。思路很简单:先试便宜的,不行再升级。
请求 → 小模型 → 置信度低? → 中模型 → 还是低? → 大模型
↓ ↓
返回结果 返回结果
def cascade_route(prompt: str, threshold: float = 0.85):
# 第一步:尝试便宜模型
response = call_model("gpt-4o-mini", prompt)
# 检查置信度(通过 logprobs 或自定义评估)
if response.confidence >= threshold:
return response
# 第二步:降级到强模型
print(f"置信度 {response.confidence} < {threshold},升级到旗舰模型")
return call_model("gpt-4o", prompt)
3. LLM-as-Judge 路由
用一个廉价 LLM 充当”法官”,先分析问题再决定路由。这是 2026 年最流行的轻量方案。
ROUTER_PROMPT = """你是一个路由专家。根据用户问题,判断它属于哪个难度等级。
难度等级说明:
- easy: 翻译、简单问答、文本摘要、格式化
- medium: 代码生成、逻辑推理、中等长度写作
- hard: 复杂数学、多步推理、专业领域分析、长文档理解
只回复 easy / medium / hard,不要其他内容。
用户问题:{query}"""
def llm_judge_route(query: str):
router = OpenAI()
response = router.chat.completions.create(
model="gpt-4o-mini", # 路由器本身用廉价模型
messages=[{"role": "user", "content": ROUTER_PROMPT.format(query=query)}],
max_tokens=10
)
level = response.choices[0].message.content.strip()
# 映射到具体模型
model_map = {
"easy": "llama-3.1-8b",
"medium": "gpt-4o-mini",
"hard": "gpt-4o"
}
return model_map.get(level, "gpt-4o-mini")
三种方案对比
| 方案 | 推理开销 | 路由精度 | 灵活性 | 适用场景 |
|---|---|---|---|---|
| 分类路由 | 极低(嵌入计算) | 中等 | 需训练 | 请求量大、类型固定 |
| 级联路由 | 可能多一次调用 | 高 | 高 | 对质量要求极高的场景 |
| LLM-as-Judge | 一次廉价LLM调用 | 中高 | 最高 | 快速落地、迭代中项目 |
AI Gateway:路由之上的完整控制层
模型路由是 AI Gateway 的核心能力之一。2026 年,任何严肃的 LLM 应用都运行在 AI Gateway 之后。
Gateway 的全景架构
┌──────────────────────────┐
App ───▶│ AI Gateway │
│ · 认证 & 限流 │
│ · 模型路由 & 降级 │───▶ Anthropic
│ · 语义缓存 │───▶ OpenAI
│ · 成本追踪 │───▶ Google / vLLM
│ · 可观测性 │───▶ Together
└──────────────────────────┘
一个 Gateway 统一暴露 OpenAI 兼容 API,你的应用只需改 base_url,代码零改动。
主流 Gateway 方案对比
| 方案 | 类型 | 核心优势 | 适用团队 |
|---|---|---|---|
| LiteLLM | 开源自托管 | 130+ 模型提供商、成本追踪、速率限制 | 需要完全控制的中大型团队 |
| Portkey | 托管/开源 | 零配置即用、内置 A/B 测试、缓存 | 快速启动的中小团队 |
| OpenRouter | 托管 | 200+ 模型、统一计费、无需管理 API Key | 独立开发者、原型验证 |
| Helicone | 观测层 | Request 日志、成本面板、团队仪表盘 | 已有应用、只需观测的团队 |
10 分钟接入 LiteLLM
pip install litellm
from litellm import completion
# 配置路由策略(litellm 自动处理)
import litellm
litellm.set_verbose = True
# 方式1:直接指定模型
response = completion(
model="gpt-4o",
messages=[{"role": "user", "content": "解释量子计算"}]
)
# 方式2:用同一个接口切模型(改一行)
response = completion(
model="claude-3-5-sonnet-20240620",
messages=[{"role": "user", "content": "解释量子计算"}]
)
# 方式3:配置 fallback 列表
response = completion(
model="gpt-4o", # 首选
fallbacks=["claude-3-5-sonnet-20240620", "gemini-1.5-pro"], # 降级链
messages=[{"role": "user", "content": "解释量子计算"}]
)
语义缓存:路由的加速器
Gateway 的另一大杀器是语义缓存。不等同于精确匹配,而是用嵌入相似度判断两个问题是否语义相同:
用户A: "Summarize the quarterly report" → 缓存命中 ✓
用户B: "Give me a summary of the quarterly report" → 语义相同,直接用缓存!
# LiteLLM 的语义缓存配置
litellm.cache = litellm.Cache(
type="redis",
host="localhost",
port=6379,
ttl=3600, # 1小时过期
mode="semantic", # 语义缓存模式
similarity_threshold=0.92 # 相似度阈值
)
生产落地的四个关键决策
1. 模型分层策略
把模型池划分为三层,各司其职:
| 层级 | 代表模型 | 适用任务 | 单次成本(参考) |
|---|---|---|---|
| 轻量层 | Llama 3-8B, DeepSeek-V3 | 翻译、分类、格式化 | ~$0.0001 |
| 主力层 | GPT-4o-mini, Claude Haiku | 代码生成、写作、推理 | ~$0.001 |
| 旗舰层 | GPT-4o, Claude Sonnet | 复杂分析、多步推理 | ~$0.03 |
2. 路由粒度
不要只按”难度”路由。生产环境建议至少考虑三个维度:
- 任务类型:代码用 Claude,写作用 GPT,翻译用小模型
- 用户优先级:付费用户优先走旗舰模型,免费用户走轻量
- 实时负载:高峰期自动降低路由门槛,保证吞吐
3. 成本追踪
没有追踪的路由等于没路由。每个请求至少记录:
request_id, user_id, routed_model, actual_model,
tokens_in, tokens_out, cost, latency_ms, fallback_used
4. A/B 测试路由策略
# 使用 Portkey 的 A/B 测试能力
headers = {
"x-portkey-virtual-key": "your-key",
"x-portkey-strategy": "ab-test-v1" # A/B 测试配置
}
# 50% 流量走路由方案,50% 直走 GPT-4o
# 一周后看效果对比:成本、延迟、用户满意度
总结
- 模型路由不是可选的优化,而是 AI 应用规模化的必修课
- RouteLLM 证明:用 26% 的 GPT-4 调用即可保持 95% 的性能
- AI Gateway(LiteLLM / Portkey)是路由落地的成熟基础设施
- 生产落地的核心是:分层策略 + 多维度路由 + 成本追踪 + 持续 A/B 测试
延伸阅读:
- RouteLLM 论文(ICLR 2025)
- LiteLLM 官方文档
- 什么是 MCP 协议?
- 什么是 A2A 协议?
- 什么是 Agent 记忆系统?