Маршрутизация провайдеров
Если в роли LLM-провайдера у вас выступает OpenRouter, Hermes Agent умеет управлять маршрутизацией провайдеров — тонко контролировать, какие именно ИИ-провайдеры обрабатывают ваши запросы и в каком порядке к ним обращаться.
OpenRouter раскидывает запросы по множеству провайдеров: Anthropic, Google, AWS Bedrock, Together AI и другим. Маршрутизация даёт рычаг под нужную задачу — где-то важнее цена, где-то скорость или качество, а иногда нужно жёстко зафиксировать конкретного провайдера.
Трафик, идущий через Nous Portal, по-прежнему учитывает настройки маршрутизации и приоритета для каждой модели. Подписчикам Portal к тому же даётся 10% скидки на провайдеров с потокенной тарификацией.
Конфигурация
Добавьте секцию provider_routing в файл ~/.hermes/config.yaml:
provider_routing:
sort: "price" # Как ранжировать провайдеров
only: [] # Белый список: использовать только этих провайдеров
ignore: [] # Чёрный список: никогда не использовать этих провайдеров
order: [] # Явный порядок приоритета провайдеров
require_parameters: false # Только провайдеры, поддерживающие все параметры
data_collection: null # Управление сбором данных ("allow" или "deny")
Маршрутизация провайдеров работает только с OpenRouter. При прямом подключении к провайдеру (например, напрямую к API Anthropic) она ни на что не влияет.
Опции
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
Как это работает
Настройки маршрутизации передаются в API OpenRouter через поле extra_body.provider при каждом обращении. Работает это в обоих режимах:
- Режим CLI — настраивается в
~/.hermes/config.yaml, загружается при старте - Режим шлюза — тот же файл конфигурации, загружается при запуске шлюза
Конфигурация маршрутизации читается из config.yaml и передаётся параметрами при создании AIAgent:
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_routing:
sort: "price"
ignore: ["Together"]
require_parameters: true
data_collection: "deny"Поведение по умолчанию
Если секция provider_routing не задана (вариант по умолчанию), OpenRouter применяет собственную логику маршрутизации — обычно она сама балансирует между стоимостью и доступностью.
Маршрутизация управляет тем, какие суб-провайдеры внутри OpenRouter обработают запрос. Если же нужен автоматический переход на совсем другого провайдера в случае отказа основной модели, смотрите раздел Запасные провайдеры.