Retry policy

Retry policy

适用范围

在以下情况使用此页面:

  • 调查出站提供程序调用中的重试行为

默认重试策略适用于所有出站提供程序调用(模型、嵌入等):

默认重试策略

  • 最大重试次数:3
  • 初始退避:1 秒
  • 最大退避:60 秒
  • 退避乘数:2

可重试错误

以下错误会触发重试:

  • 网络错误(连接超时、ECONNRESET 等)
  • 5xx 服务器错误
  • 429 速率限制(在尊重 Retry-After 标头的情况下)
  • 特定的提供程序错误(例如 Anthropic 的 5xx)

不可重试错误

以下错误不会触发重试:

  • 4xx 客户端错误(不包括 429)
  • 身份验证错误(401、403)
  • 无效请求错误(400)
  • 配额错误(在提供程序未提供重试信息的情况下)

退避行为

  • 第一次重试在初始错误后等待 1 秒
  • 后续重试将等待时间加倍(1s → 2s → 4s → …)
  • 最大等待时间上限为 60 秒
  • 如果提供程序返回 Retry-After 标头,则使用该值

配置

重试策略目前硬编码在运行时中,无法通过配置覆盖。这是为了确保在提供程序中断时的稳定行为。

提供程序特定行为

某些提供程序可能有特殊处理:

  • OpenAI:尊重 Retry-After 标头进行速率限制
  • Anthropic:5xx 错误会触发重试
  • 本地提供程序(Ollama 等):网络错误仍会触发重试

日志记录

在启用详细日志记录的情况下,重试会记录为:

  • retry: attempt 1/3, backing off 1000ms
  • retry: attempt 2/3, backing off 2000ms
  • 最终成功或失败也会记录

故障转移与重试

重试发生在故障转移之前。这意味着:

  1. 提供程序尝试操作
  2. 失败 → 重试(最多 3 次)
  3. 所有重试用尽 → 故障转移到下一个模型/配置文件(如果配置)

这确保了在尝试更广泛的故障转移之前,在模型或提供程序上尝试瞬态恢复。

相关文档