Перейти к содержимому

Конфигурация маршрутизации

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

Поле Тип По умолчанию Значение
defaultProvider string "openai" Последний провайдер, используемый, если ни одно более раннее правило модели не совпало. Должен называть включённого настроенного провайдера.
combos? Record<string, OcxComboConfig> {} Виртуальные модели combo/<id>, построенные из упорядоченных целей provider/model.

opencodex разрешает запрошенную модель в следующем порядке:

  1. Канонический combo/<id> или настроенный алиас combo. Канонические id проверяются до алиасов.
  2. Явное пространство имён <provider>/<model>, где префикс называет настроенного провайдера.
  3. Голый id нативного семейства OpenAI, например gpt-*, o1-*, o3-* или o4-*, направляемый через канонического включённого провайдера openai.
  4. Точное совпадение с defaultModel провайдера.
  5. Известный префикс семейства моделей провайдера.
  6. Точное совпадение с моделью в настроенном списке models провайдера.
  7. defaultProvider с сохранением запрошенного id модели.

Отключённые провайдеры исключаются. Явное пространство имён отключённого провайдера завершается ошибкой, а не переходит к следующим правилам. Для правил, которые могут совпасть с несколькими провайдерами, записи проверяются в порядке их добавления в JSON. Поэтому используйте явные пространства имён, если голая модель может быть неоднозначной.

Каждый ключ combo — это id, соответствующий шаблону [A-Za-z0-9][A-Za-z0-9._-]{0,63}. Он всегда доступен напрямую как combo/<id> и может также предоставлять один alias. Алиасы должны быть уникальны, не могут занимать пространство имён combo/ и не могут использовать зарезервированные голые нативные семейства, например gpt-*, o1-*, o3-*, o4-* или codex-*.

Ключ Тип По умолчанию Значение
targets { provider: string; model: string; weight?: number }[] required Упорядоченные конкретные маршруты. weight находится в диапазоне 1–10000 и по умолчанию равен 1.
strategy? "failover" | "round-robin" "failover" Стратегия выбора. Порядок целей задаёт приоритет failover; веса формируют плавный взвешенный round-robin.
stickyLimit? number 1 Число успешных запросов, удерживаемых в одной партии round-robin. Диапазон 1–100.
defaultEffort? "low" | "medium" | "high" | "xhigh" | "max" | "ultra" | null unset Применяется, только если вызывающая сторона не задала effort, а выбранная цель объявляет эту ступень.
alias? string Необязательный публичный id модели вместо канонического slug в селекторе.
{
"defaultProvider": "openai",
"combos": {
"coding": {
"targets": [
{ "provider": "anthropic", "model": "claude-sonnet-5" },
{ "provider": "openrouter", "model": "qwen/qwen3-coder-plus" }
],
"strategy": "failover",
"defaultEffort": "high",
"alias": "coding-primary"
}
}
}

Поведение стратегий, повторяемые ошибки, cooldown, ограничения шифрованных задач v2 и команды управления описаны в разделе Combos.

Combo остаётся доступной для прямой маршрутизации, даже если её нельзя вывести в списке. ocx sync, /v1/models и селектор Codex показывают её, только когда у каждой цели есть возможности, которые можно пересечь:

  • положительный contextWindow, полученный из live-метаданных, подсказок registry или полей провайдера modelContextWindows / contextWindow; и
  • непустое пересечение inputModalities, при этом отсутствие значения у участника трактуется как ["text"].

Голый id relay без метаданных контекста или цели с непересекающимися модальностями исключают combo из каталога. Sync выводит итоговое предупреждение, а дашборд помечает её как Needs attention. Добавьте метаданные контекста, согласуйте модальности или выберите модели с обнаруживаемыми совместимыми возможностями.