# 10.4 模型选择与路由策略：Model Routing 与 Cascading

在 AI 工程中，“One Model Fits All” 是一个谎言。 为了在质量、成本和延迟之间找到最优解，需要构建一个 **Model Router（模型路由器）**。

## 10.4.1 模型分层

与其把路由策略绑定到某一个短期型号，不如先按模型家族分层：

| Tier       | 模型家族         | 擅长             | 成本  | 延迟 |
| ---------- | ------------ | -------------- | --- | -- |
| **S-Tier** | **Opus 类**   | 复杂推理、难例处理、深度规划 | $$$ | 慢  |
| **A-Tier** | **Sonnet 类** | 编程、数据分析、通用生产任务 | $$  | 中  |
| **B-Tier** | **Haiku 类**  | 简单分类、提取、翻译、聊天  | ¢   | 快  |

这样写的好处是：即使未来版本号更新，你的路由思想也不需要跟着重写。

## 10.4.2 静态路由

最简单的路由，是按任务类型做规则分发：

```python
def route_request(task_type, prompt):
    if task_type == "coding":
        return call_sonnet_family(prompt)
    elif task_type == "summarization":
        return call_haiku_family(prompt)
    elif task_type == "creative_writing":
        return call_opus_family(prompt)
```

**优点**：实现简单，可预测性强。 **缺点**：对边界样本不够灵活，容易把本可由便宜模型处理的请求错误升级。

## 10.4.3 动态路由

更进一步的做法，是先让一个轻量 Router 对请求复杂度做判断，再决定是否升级模型。

**Router Prompt**：

> “评估以下用户请求的复杂度（Level 1-5）。 Level 1-2：日常问候、简单事实查询 -> Route to Haiku family Level 3-4：编程、逻辑推理、文档分析 -> Route to Sonnet family Level 5：极端复杂的规划、证明或高风险难例 -> Route to Opus family”

动态路由的关键，不是“预测得多聪明”，而是：

* Router 的判断成本必须足够低；
* Router 的误判代价必须可控；
* 升级路径要可观测、可复盘。

## 10.4.4 级联降级：Cascading / Fallback

这是一种“不仅要便宜，还要兜底”的策略：默认先尝试便宜模型，失败了再升级。

**Coding Task Workflow**：

1. **Attempt 1**：先用 **Haiku 类模型** 尝试写代码。
2. **Verify**：运行单元测试或静态检查。
   * 如果通过 -> Return。
   * 如果失败 -> 进入下一步。
3. **Attempt 2**：把失败代码、报错信息和约束条件一起交给 **Sonnet 类模型**。
4. **Fix**：由更强模型修复，再进入下一轮验证。

这种策略的核心价值不在某一个固定百分比，而在于：

* 把简单流量拦在便宜模型；
* 仅让复杂样本触发升级；
* 用验证环节决定是否升级，而不是凭主观感觉升级。

如果你要做收益测算，应使用自己的业务数据统计：

```
综合成本
= 低成本模型命中率 × 低成本路径成本
+ 升级率 × 升级后总成本
```

## 10.4.5 A/B Testing 与 Evals

如何知道路由策略是否有效？需要建立 **Evals（评估体系）**。

* 构建一组覆盖真实业务分布的 Golden Dataset。
* 分别让不同模型家族执行同一批任务。
* 记录质量、成本、时延、升级率和失败率。
* 画出 **Pareto Frontier（帕累托前沿）**，找到“质量下降可接受、成本下降明显”的甜蜜点。

评估路由策略时，至少要看 5 个指标：

* 首次成功率
* 综合成本
* P95 延迟
* 升级率
* 人工接管率

***

到目前为止，已经把模型“榨干”了：既让它干复杂的活，又通过各种手段压低成本。 但在这个过程中，是否忽略了什么？ 当 AI 变得越来越强大，越来越便宜，它会不会失控？它会不会被坏人利用？ **Safety（安全）** 不仅仅是设一道防火墙，它是 AI 产品的生命线。

➡️ [第十一章：安全与伦理](/claude_guide/di-si-bu-fen-shi-zhan-pian/11_safety.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yeasy.gitbook.io/claude_guide/di-si-bu-fen-shi-zhan-pian/10_optimization/10.4_selection.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
