GoRouter

Модели, endpoints и провайдеры

Как найти модель, выбрать endpoint и управлять маршрутизацией.

В каталоге можно сравнить модели по цене, контексту и поддерживаемым возможностям. На странице модели указаны доступные провайдеры, их тарифы и настройки маршрутизации.

Выбор модели

Список моделей для генерации текста и изображений:

curl "https://gorouter.ru/api/v1/models?output_modalities=text,image"

Автоматический выбор провайдера для указанной модели:

{
  "model": "deepseek/deepseek-v4-flash-0731",
  "messages": [{"role": "user", "content": "Привет"}],
  "max_tokens": 1024
}

Важные параметры

  • /models без фильтра возвращает текстовые модели.
  • /embeddings/models, /images/models и /videos/models возвращают модели нужной модальности.
  • output_modalities=decisions возвращает модели для структурированных решений. Их вызов описан в Decisions.
  • Без provider.sort и provider.order провайдер выбирается автоматически с учётом цены и доступности. Модель остаётся той, которую вы указали.
  • При ошибке провайдера разрешено переключение на другого подходящего провайдера той же модели. Ограничения запроса, приватности и бюджета действуют для всех вариантов.

Выбор стратегии и провайдера

Настройки передаются в объекте provider. Автоматическому режиму соответствует отсутствие этого объекта или "provider": {}.

НастройкаПоведение
"sort": "price"Сначала провайдеры с меньшей ценой.
"sort": "throughput"Приоритет скорости генерации.
"sort": "latency"Приоритет меньшей задержки.
"order": ["deepinfra", "fireworks"]Указанный порядок; затем остальные подходящие провайдеры, если разрешено переключение.
"only": ["deepinfra/fp8"]Только перечисленные провайдеры или варианты endpoint.
"ignore": ["fireworks"]Исключить перечисленных провайдеров.
"allow_fallbacks": falseОтключить автоматическое переключение.

Например, для приоритета цены добавьте в запрос:

{
  "model": "deepseek/deepseek-v4-flash-0731",
  "messages": [{"role": "user", "content": "Привет"}],
  "max_tokens": 1024,
  "provider": { "sort": "price" }
}

Выбор стратегии сам по себе не отключает переключение при ошибках. only ограничивает все попытки, включая запасные. При allow_fallbacks: false вместе с order используются только указанные в нём провайдеры. Если подходящих вариантов не осталось, запрос завершится ошибкой. После начала выдачи ответа GoRouter не запускает генерацию повторно.

Маршрутизация доступна для Chat Completions, Responses, embeddings, Decisions и изображений через OpenRouter. Фиксированные модели и специализированные API речи, транскрибации и видео используют маршрут, доступный для конкретной модели.

Резерв и фактическая стоимость

GoRouter учитывает доступный баланс, политику долга и расходные лимиты. Для текста начальный резерв покрывает оценку входа и начала ответа по самому дорогому из допустимых вариантов, затем увеличивается по мере генерации. Итоговое списание рассчитывается по фактическому использованию и провайдеру. Неиспользованная часть резерва освобождается после расчёта.

Провайдеры должны поддерживать применённый лимит выходных токенов. Лимит может быть уменьшен до доступного бюджета; при разрешённом долге остаток баланса сам по себе не уменьшает явно заданный лимит. Без явного лимита выбирается конечная граница по доступным средствам. Подробнее — текстовая генерация. В веб-чате стратегия по умолчанию — «Автоматически»; сохранённые настройки существующих чатов продолжают действовать. На странице модели можно скопировать ID провайдера для явного выбора в запросе.

Ответ

Каталог возвращает ID, архитектуру, поддерживаемые параметры, провайдеров и отображаемые цены. Используйте поле id без изменений.

Latest-алиасы

ID вида ~author/family-latest выбирает актуальную модель семейства. Например:

{
  "model": "~deepseek/deepseek-v4-flash-latest",
  "messages": [{"role": "user", "content": "Привет!"}],
  "max_tokens": 256
}

Такие ID поддерживаются в Chat Completions, Responses и веб-чате. Перед резервированием средств GoRouter получает цель из alias_target.slug каталога OpenRouter и фиксирует конкретную модель для этого запроса. При смене версии уже выполняющийся запрос продолжает работать с прежней моделью.

В каталоге сохраняется исходный id алиаса, а поле alias_target содержит { slug, name } текущей модели. Цены, контекст, параметры и endpoints относятся к целевой модели; model_id внутри endpoint содержит конкретный ID. В ответах генерации поле model также содержит фактически использованную модель. Для воспроизводимости отправляйте её ID напрямую.

Для latest-алиасов при обязательных рассуждениях значения reasoning.effort: "none", reasoning.enabled: false, reasoning.max_tokens: 0 и reasoning_effort: "none" преобразуются в минимальный поддерживаемый уровень; нулевой reasoning-бюджет удаляется. Конкретные ID сохраняют строгую семантику. Наценка и ручные скидки берутся из настроек выбранного алиаса, а фактическая стоимость — у его цели.

Алиас и цель должны быть включены в локальном каталоге. Новые модели появляются после штатной синхронизации. Неизвестная или отключённая цель возвращает 404 model_not_found; при недоступности свежего соответствия возвращается 503 model_resolution_unavailable, при отсутствии тарификационного контракта — 503 billing_unbounded. Просроченное соответствие и другие модели не используются как запасной вариант. Недоступные алиасы временно исключаются из списков выбора.

Уровни рассуждений

Доступные значения reasoning.effort зависят от выбранной модели. GoRouter строит переключатель веб-чата по полю reasoning.supported_efforts из каталога и не добавляет уровни, которых модель не объявила. Полная шкала OpenRouter отображается слева направо по возрастанию: minimal, low, medium, high, xhigh, max; конкретная модель может поддерживать только часть этих значений. Для необязательной модели крайним слева дополнительно показывается «Выкл.».

  • Массив supported_efforts задаёт точный список доступных уровней.
  • Значение null означает поддержку всей шкалы.
  • Отсутствие supported_efforts означает, что модель не предоставляет выбор effort. Если она принимает общий объект reasoning, веб-чат показывает только включение и выключение рассуждений.
  • default_effort задаёт уровень, выбираемый по умолчанию при включении рассуждений.
  • default_enabled задаёт исходное состояние. Если поле не опубликовано, остальные reasoning-возможности всё равно учитываются; обязательная модель считается включённой.
  • При mandatory: true рассуждения обязательны, поэтому веб-чат не показывает возможность их выключить.

В мультимодельном чате reasoning настраивается отдельно для каждого экземпляра модели. Выбранный уровень применяется к следующей генерации.

Ошибки и ограничения

  • 404 model_not_found означает, что модель выключена или временно недоступна.
  • GoRouter не обещает поддержку параметра, которого нет в supported_parameters модели.

На этой странице