指南
模型回退
回退机制是在某个模型、路由或提供商路径不可用时,保持应用可用的方法。
回退机制是在某个模型、路由或提供商路径不可用时,保持应用可用的方法。
回退策略应该用于可靠性,而不是隐藏不确定性。一个合格的回退策略应让工程、产品和支持团队都能知道应用何时使用了次级路径,以及用户体验发生了什么变化。
良好的回退模式
- 主模型加一个更低成本的替代方案
- 主高端模型加一个稳定的基线模型
- 每个工作负载对应一个路由族,并设有文档化的应急出口
推荐设计
| 决策 | 建议 |
|---|---|
| 范围 | 按工作负载定义回退,不要给整个应用设置一个全局回退 |
| 兼容性 | 优先选择同一 API 家族、同一请求体形状的回退 |
| 触发条件 | 临时失败可以重试;无效请求或鉴权失败不应当通过回退掩盖 |
| 可见性 | 每次回退都记录工作负载、主模型、回退模型、状态和原因 |
| 用户体验 | 判断是否需要向用户展示降级提示,尤其是付费档位 |
策略示例
| 工作负载 | 主模型 | 回退 | 允许触发条件 |
|---|---|---|---|
| 支持聊天 | 高端聊天模型 | 稳定基线聊天模型 | 临时 5xx、超时或上游不可用 |
| 批量抽取 | 低成本抽取模型 | 同家族基线模型 | 临时供应商失败 |
| 代码助手 | 更强的代码模型 | 不在无提示时回退 | 对质量敏感的付费流程 |
| 图片理解 | 支持视觉的模型 | 同家族视觉模型 | 仅临时供应商失败 |
应避免的做法
- 无感知的回退,在没有可观测性的情况下改变输出质量
- 跨越不兼容请求形态的回退链
- 把回退当作真正权限检查的替代品
实用的回退策略
- 为每个工作负载选择一个主模型。
- 在同一兼容家族中选择一个回退模型。
- 用同类请求体验证回退模型。
- 记录每一次回退事件。
- 在内部仪表盘中清楚展示降级行为。
- 对用户可见流程启用回退前,先评估回退输出质量。
错误处理边界
| 错误类别 | 是否回退 | 原因 |
|---|---|---|
400 无效请求 | 否 | 必须先修正请求体 |
401 缺少或无效 key | 否 | 这是鉴权问题 |
403 模型不可用或策略限制 | 通常否 | 先检查权益,不要直接改变行为 |
429 速率或额度限制 | 视情况 | 先退避重试;只有策略允许时才回退 |
5xx 或超时 | 通常可以 | 临时失败是最常见的回退触发条件 |
何时不应回退
在以下情况不要无声回退:
- 用户为特定服务等级付费
- 请求包含其他路由无法支持的提供商特定功能
- 计费或合规边界会发生变化