跳到主要内容
版本:最新版(未发布)

模型执行回退

状态: 已实现 · 创建日期: 2026-08-10

问题​

端点重试和被动异常剔除可以选择同一逻辑模型的另一副本。它们不能安全切换到另一逻辑模型,因为提供商翻译、凭证、上下文限制、成本策略、输出格式和会话连续性可能变化。

已实现的边界​

pkg/fallback 执行编排器在模型选择之后运行。它拥有有界的跨模型尝试,而不重新匹配语义决策。

每次尝试记录:

  • 逻辑模型和物理端点;
  • 可安全重试的失败类别;
  • 响应字节是否已提交;
  • 提供商请求标识符;
  • 观察到的 token 或成本用量;
  • 会话和对话身份;以及
  • 剩余尝试次数和先前访问过的模型。

回退候选必须由已匹配路由声明为兼容。编排器不能扩大决策的模型池。

所有权​

层职责
信号和决策选择预期路由和候选策略。
Selection 和路由学习选择初始逻辑模型。
数据面可靠性在该模型的后端内重试或剔除副本。
执行编排器决定失败的逻辑模型尝试是否可以转到兼容回退。

跨模型回退不是又一次决策 Engine 遍历。

安全规则​

  • 响应字节已提交后不要切换模型。
  • 认证和格式错误的请求失败默认不重试。
  • 上下文窗口或策略失败只能回退到显式兼容的模型。
  • 流式需要预提交边界和声明的部分输出策略。
  • 每次尝试有自己的超时,整条链有截止时间和尝试次数上限;fallback 策略不强制货币成本预算。
  • 回放和计费必须标识每一个尝试过的模型。
  • 切换前应用会话和工具循环连续性保护。

范围与非目标​

本提案覆盖上游执行失败后的逻辑模型变更。它不替代同模型传输重试、熔断、异常剔除或普通语义选择。

已确认的边界​

候选来自匹配决策的硬约束合格模型,不重新运行语义分类,也不扩大候选池。连接失败、超时及允许列表中的 502、503、504 可在响应提交前回退。4xx 默认不重试,但显式允许列表可包括 429;客户端取消永远不重试。已经提交响应或产生不可重放的副作用时不能切换模型。

配置与失败诊断见执行回退教程。

参考资料​