提供者路由
當使用 OpenRouter 作為你的 LLM 提供商時,Hermes Agent 支持 提供者路由 —— 對哪些底層 AI 提供者處理你的請求以及它們的優先級進行細粒度控制。
OpenRouter 會將請求路由到多個提供者(例如 Anthropic、Google、AWS Bedrock、Together AI)。提供者路由可讓你在成本、速度、質量之間進行優化,或強制執行特定提供者的使用要求。
配置
在 ~/.hermes/config.yaml 中添加一個 provider_routing 部分:
provider_routing:
sort: "price" # providers如何排名
only: [] # 白名單:只使用這些providers
ignore: [] # 黑名單:永遠不要使用這些providers
order: [] # 顯式 provider 優先級順序
require_parameters: false # 僅使用支持所有參數的providers
data_collection: null # 控制數據收集(“0”或“1”)
提供者路由僅在使用 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 內部的子提供者如何處理你的請求。若需在主模型失敗時自動切換到完全不同的提供者,請參閱 備用提供者。