配置前的环境检查

  • 应用已有线上流量(月用量 > $50 才有路由价值)
  • 能采样到至少 200 条真实 query
  • 有「主推 GPT-5.5 / Claude 4.7」类多模型聚合端点,或自建 New API 网关

直接走 Anthropic + DeepSeek 双 SDK 也行,但每次切模型就要切 client 实例,代码丑。建议挂一条多模型聚合的网关,一个 key 一个 base_url 调遍 Claude / DeepSeek / GPT,routing 函数只换 model 字段。

OpenRouter 2026 年 5 月文档(访问于 2026-05-19)显示 :floor 后缀的自动路由能省 94%,但代价是质量不可控。手动 routing 平衡可控性,实测 60% 是稳健值。

实现步骤

第 1 步:采样真实 query 并标注

import json

queries = load_recent_queries(limit=500)  # 你的日志读取
for q in queries:
    print(q["prompt"][:200])
    label = input("easy/medium/hard: ")
    q["label"] = label

with open("labeled.jsonl", "w") as f:
    for q in queries:
        f.write(json.dumps(q) + "\n")

人工跑一遍 30 分钟左右出结果。

第 2 步:建路由表

我的实测分布:

类别占比模型单价(输入/输出 per M)
短问答 / 改字符串35%DeepSeek V4 Flash$0.14 / $0.28
代码片段生成30%DeepSeek V4 Flash$0.14 / $0.28
中等代码改造15%Claude Sonnet 4.6$3 / $15
跨文件重构10%Claude Sonnet 4.6 + cache$3 / $15
架构决策 / 安全 audit7%Claude Opus 4.7$5 / $25
大数学 / 复杂推理3%DeepSeek V4 Pro thinking$0.435 / $0.87

70% 走 Flash + 3% 走 Pro thinking = 73% 走 DeepSeek。

第 3 步:实现分类器

import anthropic

GATEWAY = anthropic.Anthropic(
    api_key="sk-relay-xxx",
    base_url="https://gateway.example.com/v1",
)

CATEGORIES = [
    "short_qa", "code_snippet", "code_refactor_small",
    "code_refactor_cross", "architecture", "math_reasoning",
]

CLASSIFY_PROMPT = """Classify the following user query into one of:
short_qa / code_snippet / code_refactor_small /
code_refactor_cross / architecture / math_reasoning.

Respond with ONLY the category name.

Query:
{query}
"""

def classify(query: str) -> str:
    resp = GATEWAY.messages.create(
        model="deepseek-v4-flash",
        max_tokens=10,
        messages=[{
            "role": "user",
            "content": CLASSIFY_PROMPT.format(query=query[:1000])
        }],
    )
    cat = resp.content[0].text.strip().lower()
    return cat if cat in CATEGORIES else "code_snippet"

单次分类 ≈ 50 input tokens + 5 output tokens × DeepSeek Flash 单价 ≈ $0.000008,完全可忽略。

第 4 步:实装路由函数

ROUTING_TABLE = {
    "short_qa":              "deepseek-v4-flash",
    "code_snippet":          "deepseek-v4-flash",
    "code_refactor_small":   "claude-sonnet-4-6",
    "code_refactor_cross":   "claude-sonnet-4-6",
    "architecture":          "claude-opus-4-7",
    "math_reasoning":        "deepseek-v4-pro",
}

def route(query: str) -> str:
    category = classify(query)
    return ROUTING_TABLE[category]

def smart_call(query: str) -> str:
    model = route(query)
    resp = GATEWAY.messages.create(
        model=model,
        max_tokens=2048,
        messages=[{"role": "user", "content": query}],
    )
    return resp.content[0].text

第 5 步:Fallback 链

FALLBACK_CHAIN = {
    "deepseek-v4-flash":  ["claude-sonnet-4-6", "claude-opus-4-7"],
    "claude-sonnet-4-6":  ["claude-opus-4-7"],
    "claude-opus-4-7":    [],
    "deepseek-v4-pro":    ["claude-opus-4-7"],
}

def robust_call(query: str) -> str:
    model = route(query)
    candidates = [model] + FALLBACK_CHAIN.get(model, [])
    last_err = None
    for m in candidates:
        try:
            return GATEWAY.messages.create(
                model=m, max_tokens=2048,
                messages=[{"role": "user", "content": query}],
            ).content[0].text
        except Exception as e:
            last_err = e
            continue
    raise last_err or RuntimeError("All fallbacks exhausted")

第 6 步:灰度 + 量化

10% 流量切到 robust_call,记录:

  • 平均成本/请求(cost_per_call)
  • P95 延迟
  • 用户重试率(同 user_id 5 分钟内重发)
  • 显式 thumbs down 率

3 天数据无显著降级即放 100%。

实测 30 天数据

指标全 SonnetRouting 后
月 API 成本$850$340
月 token 输入280M280M
月 token 输出45M45M
P95 延迟4.1s4.4s(+ 300ms 分类)
重试率3.8%4.1%
Thumbs down1.2%1.4%

成本省 60%,质量指标几乎无差(在统计误差内)。

常见失败原因

现象原因处理
分类总是错prompt 过短加 few-shot examples
Flash 处理 fail rate 高路由表过激把 medium 上调到 Sonnet
Fallback 总用 OpusDeepSeek 上游不稳切中转或自建网关
用户感知质量下降分类正确率 < 85%用 Sonnet 当分类器
成本反而上升重试链长减少 Fallback 深度

安全加固

  • ROUTING_TABLE 单元测试,样本里的标签必须按预期路由
  • 建月度复盘:对比预期分布 vs 实际分布,偏差 > 10% 重新校准
  • DeepSeek 上游故障告警(连续 503),自动临时把 routing_table 全部上调一档
  • 用户配置覆盖:Pro 套餐用户可强制走 Opus,在路由前做 user-level override

跨地区访问

DeepSeek 全球可达,Anthropic 走 主推 GPT-5.5 / Claude 4.7 的低价 API 中转 时差地区延迟稳定。整个 routing 链在欧洲、东南亚、北美三大区域跑过,P95 都在 5 秒内可控。

相关阅读