Маршрутизация провайдеров

Если в роли 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 обработают запрос. Если же нужен автоматический переход на совсем другого провайдера в случае отказа основной модели, смотрите раздел Запасные провайдеры.

ESC