跳到主要内容
版本:最新版

模型执行回退

状态: 提案 · 创建日期: 2026-08-10

问题​

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

提案​

在模型选择之后引入执行编排边界。它拥有有界的跨模型尝试,而不重新匹配语义决策。

每次尝试记录:

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

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

所有权​

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

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

安全规则​

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

范围与非目标​

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

待决问题​

  • 兼容集在哪里声明?
  • 哪些提供商失败可以安全重放?
  • 失败尝试已消耗 token 时如何对账用量?
  • 哪些流式协议暴露可靠的提交点?
  • 保护状态如何记录由回退驱动的切换?

参考资料​