Маршрутизация провайдеров
При использовании OpenRouter в качестве LLM-провайдера, Hermes Agent поддерживает маршрутизацию провайдеров — тонкий контроль над тем, какие базовые AI-провайдеры обрабатывают ваши запросы и как они приоритизируются.
OpenRouter направляет запросы множеству провайдеров (например, Anthropic, Google, AWS Bedrock, Together AI). Маршрутизация провайдеров позволяет оптимизировать затраты, скорость, качество или применять требования к конкретным провайдерам.
Конфигурация
Добавьте секцию provider_routing в ваш ~/.hermes/config.yaml:
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")
Опции
sort
Управляет тем, как OpenRouter ранжирует доступных провайдеров для вашего запроса.
| Значение | Описание |
|---|---|
"price" |
Самый дешёвый провайдер первым |
"throughput" |
Самый быстрый (токенов в секунду) первым |
"latency" |
С наименьшим временем до первого токена первым |
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"
Оптимизация по пропускной способности
Лучше всего подходит для генерации длинных текстов, где важна скорость в токенах в секунду:
provider_routing:
sort: "throughput"
Фиксация на конкретных провайдерах
Гарантировать, что все запросы проходят через конкретного провайдера для единообразия:
provider_routing:
only:
- "Anthropic"
Исключение конкретных провайдеров
Исключить провайдеров, которых вы не хотите использовать (например, из соображений конфиденциальности данных):
provider_routing:
ignore:
- "Together"
- "Lepton"
data_collection: "deny"
Предпочитаемый порядок с запасными вариантами
Сначала пробовать предпочитаемых провайдеров, использовать других, если они недоступны:
provider_routing:
order:
- "Anthropic"
- "Google"
require_parameters: true
Как это работает
Настройки маршрутизации провайдеров передаются в OpenRouter API через поле extra_body.provider в каждом API-вызове. Это относится к обоим режимам:
-
CLI-режим — настраивается в
~/.hermes/config.yaml, загружается при запуске -
Gateway-режим — тот же конфигурационный файл, загружается при запуске gateway
Конфигурация маршрутизации считывается из 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 использует собственную логику маршрутизации по умолчанию, которая обычно автоматически балансирует затраты и доступность.