提供商路由
当你使用 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
启用后,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 内部这些子提供商如何处理你的请求。如果你希望在主模型失败时自动切换到完全不同的提供商,请参阅 备用提供商。