Provider Routing

使用 OpenRouter 作为 LLM provider 时,Hermes Agent 支持 provider routing(提供商路由)——对哪些底层 AI provider 处理你的请求以及如何排列优先级进行精细控制。

OpenRouter 将请求路由到多个 provider(例如 Anthropic、Google、AWS Bedrock、Together AI)。Provider routing 让你可以针对成本、速度、质量进行优化,或强制指定特定 provider。

配置

在 ~/.hermes/config.yaml 中添加 provider_routing 部分:

provider_routing:
  sort: "price"           # 如何对 provider 排序
  only: []                # 白名单:仅使用这些 provider
  ignore: []              # 黑名单:永不使用这些 provider
  order: []               # 显式 provider 优先级顺序
  require_parameters: false  # 仅使用支持所有参数的 provider
  data_collection: null   # 控制数据收集("allow" 或 "deny")
INFO

Provider routing 仅在使用 OpenRouter 时生效。直接连接 provider(例如直接连接 Anthropic API)时无效。

选项

sort

控制 OpenRouter 如何对可用 provider 排序。

值说明
"price"最便宜的 provider 优先
"throughput"每秒 token 数最高的 provider 优先
"latency"首 token 延迟最低的 provider 优先
provider_routing:
  sort: "price"

only

Provider 名称白名单。设置后,仅使用这些 provider,其余全部排除。

provider_routing:
  only:
    - "Anthropic"
    - "Google"

ignore

Provider 名称黑名单。这些 provider 永远不会被使用,即使它们提供最低价格或最快速度。

provider_routing:
  ignore:
    - "Together"
    - "DeepInfra"

order

显式优先级顺序。列在前面的 provider 优先使用,未列出的 provider 作为备选。

provider_routing:
  order:
    - "Anthropic"
    - "Google"
    - "AWS Bedrock"

require_parameters

设为 true 时,OpenRouter 仅路由到支持请求中所有参数(如 temperature、top_p、tools 等)的 provider,避免参数被静默丢弃。

provider_routing:
  require_parameters: true

data_collection

控制 provider 是否可将你的 prompt(提示词)用于训练。可选值为 "allow" 或 "deny"。

provider_routing:
  data_collection: "deny"

实用示例

优化成本

路由到最便宜的可用 provider,适合高频使用和开发场景:

provider_routing:
  sort: "price"

优化速度

优先选择低延迟 provider,适合交互式使用:

provider_routing:
  sort: "latency"

优化吞吐量

适合长文本生成,token 每秒速率至关重要的场景:

provider_routing:
  sort: "throughput"

锁定特定 Provider

确保所有请求都通过特定 provider 处理,以保证一致性:

provider_routing:
  only:
    - "Anthropic"

排除特定 Provider

排除不希望使用的 provider(例如出于数据隐私考虑):

provider_routing:
  ignore:
    - "Together"
    - "Lepton"
  data_collection: "deny"

带备选的优先顺序

优先尝试首选 provider,不可用时回退到其他 provider:

provider_routing:
  order:
    - "Anthropic"
    - "Google"
  require_parameters: true

工作原理

Provider routing 偏好通过每次 API 调用的 extra_body.provider 字段传递给 OpenRouter API,适用于以下两种模式:

  • CLI 模式 — 在 ~/.hermes/config.yaml 中配置,启动时加载
  • Gateway 模式 — 同一配置文件,gateway 启动时加载

路由配置从 config.yaml 读取,并在创建 AIAgent 时作为参数传入:

providers_allowed  ← 来自 provider_routing.only
providers_ignored  ← 来自 provider_routing.ignore
providers_order    ← 来自 provider_routing.order
provider_sort      ← 来自 provider_routing.sort
provider_require_parameters ← 来自 provider_routing.require_parameters
provider_data_collection    ← 来自 provider_routing.data_collection
TIP

可以组合使用多个选项。例如,按价格排序,同时排除某些 provider 并要求参数支持:

provider_routing:
  sort: "price"
  ignore: ["Together"]
  require_parameters: true
  data_collection: "deny"

默认行为

未配置 provider_routing 部分时(默认情况),OpenRouter 使用其自身的默认路由逻辑,通常会自动在成本和可用性之间取得平衡。

Provider Routing 与 Fallback Models

Provider routing 控制 OpenRouter 内部的子 provider 如何处理你的请求。若需要在主模型失败时自动故障转移到完全不同的 provider,请参阅 Fallback Providers。