Beta: LLM 网关处于 Beta 测试阶段。
模型回退功能会在主模型返回您标记为可重试的错误(例如速率限制或提供商中断)时,自动使用一个或多个备用模型配置重试请求。无需在每个智能体中构建重试逻辑,只需在 LangSmith 中一次性定义回退顺序,并通过单个网关路由调用即可。

工作原理

一个回退配置包含:
  • 一个名称:暴露于路由 https://gateway.smith.langchain.com/routes/{name}。客户端调用此 URL,而非特定提供商的路径。
  • 一个或多个回退链:每条链都是一个按优先级顺序排列的模型配置列表,网关会依次尝试。
  • 触发条件:应导致网关转到链中下一个模型的上游 HTTP 状态码。例如,429 表示速率限制,500、502、503、504 表示其他提供商错误。
对于每个请求,网关会:
  1. 根据请求路径确定传输格式,并仅考虑该格式的链(参见传输格式)。
  2. 从这些链中选择一条(参见选择链)。
  3. 调用该链的第一个模型配置。
  4. 如果响应状态码与配置的触发条件匹配,则丢弃该响应并调用链中的下一个模型配置。
  5. 重复此过程,直到某个候选模型返回非触发响应,或者链已遍历完毕——此时,将把最后一个候选模型的响应返回给调用方。
链中的每个配置都可以指向不同的提供商和模型。在首次尝试和任何回退过程中,网关都会使用该候选模型配置的模型名称进行调用,从而替换客户端发送的模型值。客户端的 model 字段仅用于从匹配路径传输格式的链中选择一条使用。如果没有链匹配,网关将使用该传输格式下定义的第一条链作为默认值。

传输格式

每条链要么兼容 OpenAI,要么兼容 Anthropic,因为网关会将相同的请求体转发给链中的每个候选模型: 只有这两种提供商类型可以放入一条链中。为其他提供商(例如 Azure OpenAI 或 Bedrock)保存的模型配置不符合条件。要访问使用 OpenAI API 的主机,请将其保存为 OpenAI 兼容端点并指定其基础 URL。 您调用的路径会选择格式,网关仅考虑该格式的链。任何其他路径都会返回 501 Not Implemented。 单个回退配置可以包含两种传输格式的链,因此一个路由可以同时服务于兼容 OpenAI 和兼容 Anthropic 的客户端。混合格式是可选的:仅包含 OpenAI 兼容链的配置对 /v1/messages 调用会返回 502,而仅包含 Anthropic 兼容链的配置对 /v1/chat/completions 调用会返回 502。

创建回退配置

创建和管理回退配置需要 organization:manage 权限。有关完整的权限细分,请参阅访问控制。
  1. 前往 设置 → 网关 → LLM 网关,然后选择 模型回退 选项卡。
  2. 点击 创建配置。
  3. 输入 配置名称。此名称将成为网关 URL https://gateway.smith.langchain.com/routes/{name} 中的 {name}。
  4. 选择该配置所属的工作区。模型配置是工作区范围的,因此只有该工作区的配置可供添加到链中。工作区之后无法更改——要移动它,需删除并重新创建配置。
  5. 在回退触发条件下,查看应触发回退的 HTTP 状态码列表。该列表预先填充了其他提供商可能返回的临时代码(如 429、500 和 503);您可以根据需要添加或移除代码。
  6. 在模型回退链下,点击 添加链,然后按网关应尝试的顺序添加两到五个模型配置。链中的第一个模型决定了其传输格式;后续只能添加相同格式的配置。网关会按格式对链进行分组,每组中的第一条链即为该格式的默认链,当请求的模型未选择其他链时,网关将使用该默认链。
  7. 点击 创建配置。

发起调用

您可以通过与调用自定义提供商相同的方式调用该路由,使用您想要的传输格式对应的路径:
网关会按顺序尝试所选链中的每个模型配置,直到某个配置的响应不包含触发状态码。每次尝试都会被单独追踪,并计入其对应的消费策略中,因此一个发生回退的请求会为每个尝试过的候选模型记录一次调用。

选择链

一个配置可以包含多个回退链,当不同的模型系列需要不同的回退行为时,这非常有用。在所有匹配请求传输格式的链中,网关会根据请求体中的 model 字段,按以下顺序选择一条链:
  1. 如果 model 匹配某条链的别名,则使用该链。
  2. 否则,如果 model 匹配某条链的主(第一个)模型配置的底层模型名称,则使用该链。
  3. 如果 model 被省略,或与两者都不匹配,则使用该格式的第一条(默认)链。
别名是可选的,在创建配置时按链设置。它是一个面向调用方的名称,因此客户端可以请求 "model": "heavy" 而无需知道其背后具体是哪个模型。 链中的每个模型配置都可以指向不同的主机,因此一条链可以在同一模型的不同部署之间(例如从主端点切换到备用端点)进行故障转移,而无需将单个主机作为故障点。 例如,一个包含三条链的配置:
  • 一个 "model": "gpt-5.5" 的 /v1/chat/completions 请求将使用链 1,该链会在 OpenAI、Azure OpenAI 和自托管端点之间进行故障转移。
  • 一个 "model": "gpt-4o-mini" 的 /v1/chat/completions 请求将使用链 2,该链会在 OpenAI 和 Fireworks 之间进行故障转移。
  • 一个模型名称无法识别或被省略的 /v1/chat/completions 请求将使用该格式的默认链,即链 1。
  • 无论其 model 字段是什么,任何 /v1/messages 请求都将使用链 3,因为它是唯一的 Anthropic 兼容链。链 1 和链 2 在该路径上永远不符合条件。

后续步骤