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

При использовании 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")
Маршрутизация провайдеров работает только при использовании OpenRouter. Она не действует при прямых подключениях к провайдерам (например, при прямом подключении к Anthropic API).

Опции

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-вызове. Это относится к обоим режимам:

Конфигурация маршрутизации считывается из 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 использует собственную логику маршрутизации по умолчанию, которая обычно автоматически балансирует затраты и доступность.

Совет: Маршрутизация провайдеров vs. Запасные модели Маршрутизация провайдеров управляет тем, какие внутренние провайдеры OpenRouter обрабатывают ваши запросы. Для автоматического переключения на совершенно другого провайдера при сбое основной модели см. Запасные провайдеры.