跳到主要内容

02-路由Fallback与降级

核对日期:2026-05-13。

不稳定项:模型能力、模型价格、供应商限流、区域可用性、SLA、上下文长度和安全策略变化较快;路由规则上线前必须结合最新 eval、账单和压测数据复核。

1. 学习目标

本专题解决一个生产系统最常见的问题:模型调用失败、变慢、变贵或质量退化时,系统如何继续可控运行。

学完后你应该能做到:

  • 设计基于任务、风险、成本、延迟和 eval 的模型路由。
  • 区分 retry、fallback、熔断和降级。
  • 识别哪些任务可以自动 fallback,哪些任务必须停止或转人工。
  • 为 429、timeout、provider down、质量退化和成本异常设计响应策略。
  • 把路由变化纳入 trace、监控和发布门禁。

2. 路由不是“便宜优先”

模型路由要回答:这个任务在当前约束下最适合哪个模型和链路

核心维度:

维度例子风险
任务类型分类、摘要、RAG、代码、Agent不同任务能力差异大
风险等级低风险草稿 vs 合同审查高风险不能随意降级
质量门槛eval 通过率、引用准确率无 eval 的路由不可控
延迟要求聊天首 token、后台批处理实时和离线策略不同
成本预算免费用户、企业租户预算不能压倒安全
上下文长度短文本、长文档、多轮历史长上下文成本高
区域合规数据驻留、跨境限制合规优先级高
可用性provider 状态、限流路由要感知故障

低风险任务可以做成本优先;高风险任务必须质量和安全优先。

3. 路由表模板

任务风险默认模型Fallback禁止 fallback门禁
文本分类small-fastmedium分类准确率
FAQ 摘要mediumqueued-small摘要覆盖率
RAG 问答mediumsearch-only未评测弱模型引用支持率、拒答准确率
合同审查stronghuman_review弱模型自动接管漏报率、安全负例
Agent 工具规划strongstop_escalate任意模型接管轨迹 eval、工具安全

注意:fallback 不一定是另一个模型,也可以是搜索结果、排队、人工审核或停止任务。

4. Retry、Fallback、熔断和降级

机制解决问题适用条件主要风险
Retry瞬时失败、短暂 429幂等、低副作用请求重复扣费、放大故障
Fallback默认链路不可用备用链路经过评测质量或格式变化
Circuit Breaker上游持续失败错误率超过阈值误伤可用链路
Degradation保留核心功能非核心能力故障或预算超限用户体验下降

判断顺序:

错误是否可重试?
-> 请求是否幂等?
-> fallback 是否经过评测?
-> 任务是否高风险?
-> 是否应降级或转人工?

5. 429 和限流处理

上游 429 不应被简单当作服务失败。

策略:

  • 短请求:指数退避重试。
  • 长任务:进入队列。
  • 低优先级任务:延后执行。
  • 高优先级任务:切换同等级备用 provider。
  • 高风险任务:如果没有同等级备用,停止并提示人工处理。

用户提示要说明状态:

当前系统繁忙,任务已进入队列。你可以稍后查看结果,或缩短输入后重试。

不要把供应商内部错误、配额细节或密钥状态暴露给用户。

6. 熔断策略

熔断用于阻止系统持续请求故障上游。

指标:

  • 错误率。
  • timeout 比例。
  • P95/P99 延迟。
  • 429 比例。
  • schema 失败率。
  • safety block 异常。

熔断状态:

closed -> open -> half_open -> closed

设计原则:

  • 按 provider、model、region、feature 分维度熔断。
  • half-open 只放小流量探测。
  • 熔断事件必须进告警和变更记录。
  • 熔断恢复后继续观察质量和成本。

7. 降级方式

场景降级
RAG 生成失败返回检索结果和引用,不生成总结
rerank 不可用使用 hybrid top k,并提示置信度降低
强模型不可用高风险任务转人工,低风险任务排队
Agent 工具失败停止 loop,输出当前状态和下一步
成本超预算缩短上下文、限制输出、排队或审批
安全告警关闭写入工具,仅保留只读问答

好的降级不是“装作没事”,而是明确告诉用户系统现在能做什么、不能做什么。

8. 质量退化路由

模型没有报错,也可能质量退化。

来源:

  • 模型版本变化。
  • Prompt 变更。
  • RAG 索引变化。
  • provider 隐式更新。
  • 上下文裁剪策略变化。

监控:

  • 每日抽样 eval。
  • 用户负反馈率。
  • 引用通过率。
  • schema 失败率。
  • 人工审核拒绝率。

处理:

  • 自动降低灰度比例。
  • 回滚 prompt 或路由规则。
  • 高风险功能切人工审核。
  • 将失败样例加入回归集。

9. 工程案例

9.1 客服草稿生成

风险:中等。

策略:

  • 默认使用中模型。
  • 上游 timeout 时重试一次。
  • 仍失败则返回知识库检索结果和草稿模板。
  • 不自动切到未评测小模型。

9.2 合同风险审查

风险:高。

策略:

  • 默认强模型。
  • 模型失败时转人工,不自动弱模型接管。
  • 输出永远是“风险提示草稿”,不能当最终法律意见。
  • 灰度和回滚由评测门禁控制。

9.3 活动高峰 RAG 问答

风险:低到中。

策略:

  • 热点问题走权限感知缓存。
  • rerank 服务异常时使用 hybrid top k。
  • 生成超时时返回搜索结果。
  • 提示“当前为降级结果,建议查看引用原文”。

10. 常见反模式

反模式表现后果修正
失败就换便宜模型没有质量约束高风险输出错误fallback 绑定 eval
无限 retry一直重试 429成本和延迟爆炸最大次数和退避
降级不告知用户悄悄换能力误用低置信结果明示降级状态
熔断维度太粗全站切断 provider可用性下降按模型/功能熔断
不记录路由原因无法复盘调参靠猜trace 记录 route_reason

11. 练习

设计一个模型路由策略,覆盖:

  • FAQ 问答。
  • 代码解释。
  • 合同风险审查。
  • Agent 工具规划。

要求写出默认模型、fallback、禁止 fallback 场景、降级提示、回滚阈值。

12. 验收题

  1. 为什么 fallback 不一定是切换到另一个模型?
  2. 高风险任务为什么不能自动降级到弱模型?
  3. 429、timeout、schema failed 分别应该如何处理?
  4. 熔断应按哪些维度做?
  5. 如何发现“模型没报错但质量退化”?
  6. trace 中应该记录哪些路由字段?