提供者路由
当使用 OpenRouter 作为你的 LLM 提供者时,Hermes Agent 支持 提供者路由 —— 对哪些底层 AI 提供者处理你的请求以及它们的优先级进行细粒度控制。
OpenRouter 会将请求路由到多个提供者(例如 Anthropic、Google、AWS Bedrock、Together AI)。提供者路由可让你在成本、速度、质量之间进行优化,或强制执行特定提供者的使用要求。
配置
在 ~/.hermes/config.yaml 中添加一个 provider_routing 部分:
provider_routing:
sort: "price" # How to rank providers
only: [] # Whitelist: only use these providers
ignore: [] # Blacklist: never use these providers
order: [] # Explicit provider priority order
require_parameters: false # Only use providers that support all parameters
data_collection: null # Control data collection ("allow" or "deny")
提供者路由仅在使用 OpenRouter 时生效。对于直接连接提供者(例如直接连接 Anthropic API)的情况,该配置无效。
选项
sort
控制 OpenRouter 如何为你的请求对可用提供者进行排序。
| 值 | 描述 |
|---|---|
"price" | 按价格最低优先 |
"throughput" | 按每秒生成 token 数最多优先 |
"latency" | 按首次 token 延迟最低优先 |
provider_routing:
sort: "price"
only
提供者名称白名单。设置后,仅使用这些提供者,其他所有提供者均被排除。
provider_routing:
only:
- "Anthropic"
- "Google"
ignore
提供者名称黑名单。这些提供者将永远不会被使用,即使它们是价格最低或速度最快的选项。
provider_routing:
ignore:
- "Together"
- "DeepInfra"
order
明确的优先级顺序。列在前面的提供者优先使用。未列出的提供者作为备用。
provider_routing:
order:
- "Anthropic"
- "Google"
- "AWS Bedrock"
require_parameters
当设置为 true 时,OpenRouter 仅会将请求路由到支持所有请求参数(如 temperature、top_p、tools 等)的提供者。这可避免参数被静默丢弃。
provider_routing:
require_parameters: true
data_collection
控制提供者是否可以使用你的提示进行训练。选项为 "allow" 或 "deny"。
provider_routing:
data_collection: "deny"
实际示例
优化成本
路由到价格最低的可用提供者。适用于高吞吐量使用和开发环境:
provider_routing:
sort: "price"
优化速度
优先选择低延迟提供者,适用于交互式使用:
provider_routing:
sort: "latency"
优化吞吐量
适用于长文本生成场景,此时每秒生成 token 数至关重要:
provider_routing:
sort: "throughput"
锁定到特定提供者
确保所有请求都通过特定提供者,以保证一致性:
provider_routing:
only:
- "Anthropic"
避免特定提供者
排除你不想使用的提供者(例如出于数据隐私考虑):
provider_routing:
ignore:
- "Together"
- "Lepton"
data_collection: "deny"
优先顺序 + 备用方案
优先尝试你偏好的提供者,若不可用则降级使用其他提供者:
provider_routing:
order:
- "Anthropic"
- "Google"
require_parameters: true
工作原理
提供者路由偏好会通过每个 API 调用的 extra_body.provider 字段传递给 OpenRouter API。此机制适用于:
- CLI 模式 —— 配置在
~/.hermes/config.yaml中,启动时加载 - 网关模式 —— 使用相同的配置文件,在网关启动时加载
路由配置从 config.yaml 读取,并在创建 AIAgent 时作为参数传递:
providers_allowed ← from provider_routing.only
providers_ignored ← from provider_routing.ignore
providers_order ← from provider_routing.order
provider_sort ← from provider_routing.sort
provider_require_parameters ← from provider_routing.require_parameters
provider_data_collection ← from provider_routing.data_collection
你可以组合多个选项。例如,按价格排序,但排除某些提供者并要求参数支持:
provider_routing:
sort: "price"
ignore: ["Together"]
require_parameters: true
data_collection: "deny"
默认行为
当未配置 provider_routing 部分时(默认情况),OpenRouter 使用其自身的默认路由逻辑,通常会自动平衡成本与可用性。
提供者路由控制的是 OpenRouter 内部的子提供者如何处理你的请求。若需在主模型失败时自动切换到完全不同的提供者,请参阅 备用提供者。