Skip to content

跳到主要内容

本页总览

使用 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 部分:

yaml
provider_routing:

  sort: "price"           # 如何对 provider 排序

  only: []                # 白名单:仅使用这些 provider

  ignore: []              # 黑名单:永不使用这些 provider

  order: []               # 显式 provider 优先级顺序

  require_parameters: false  # 仅使用支持所有参数的 provider

  data_collection: null   # 控制数据收集("allow" 或 "deny")

信息

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

选项

sort

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

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

  sort: "price"

only

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

yaml
provider_routing:

  only:

    - "Anthropic"

    - "Google"

ignore

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

yaml
provider_routing:

  ignore:

    - "Together"

    - "DeepInfra"

order

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

yaml
provider_routing:

  order:

    - "Anthropic"

    - "Google"

    - "AWS Bedrock"

require_parameters

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

yaml
provider_routing:

  require_parameters: true

data_collection

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

yaml
provider_routing:

  data_collection: "deny"

实用示例

优化成本

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

yaml
provider_routing:

  sort: "price"

优化速度

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

yaml
provider_routing:

  sort: "latency"

优化吞吐量

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

yaml
provider_routing:

  sort: "throughput"

锁定特定 Provider

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

yaml
provider_routing:

  only:

    - "Anthropic"

排除特定 Provider

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

yaml
provider_routing:

  ignore:

    - "Together"

    - "Lepton"

  data_collection: "deny"

带备选的优先顺序

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

yaml
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 时作为参数传入:

text
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

提示

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

yaml
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

Unofficial documentation. Source: hermes-agent.nousresearch.com