Маршрутизация и фолбэки

Автоматическая отказоустойчивость и фильтрация провайдеров

KodikRouter передаёт models[], route и provider upstream-агрегаторам OpenRouter/KodikRouter. Они выполняют fallback по собственной политике. Шлюз не повторяет запрос между отдельными локально настроенными провайдерами. Прямые подключения без поддержки маршрутизации отклоняют эти настройки с 400, а не выполняют fallback.

Fallback chain

json
{
  "model": "anthropic/claude-sonnet-4",
  "messages": [{ "role": "user", "content": "Summarize this article." }],
  "route": "fallback",
  "models": [
    "anthropic/claude-sonnet-4",
    "openai/gpt-4o",
    "google/gemini-2.5-flash"
  ]
}

Цепочка передаётся выбранному upstream. Для проверки переключения нужен воспроизводимый сбой первой модели на стороне агрегатора. Заголовок X-KodikRouter-Provider показывает настроенный upstream шлюза; конечного провайдера проверяйте по метаданным ответа агрегатора, если они присутствуют. Локальные 402/429 не запускают эту цепочку, и начавшийся SSE-поток автоматически не перезапускается.

Фильтрация провайдеров

json
{
  "model": "openai/gpt-4o",
  "messages": [{ "role": "user", "content": "Hi" }],
  "provider": {
    "only":   ["openai", "anthropic"],
    "ignore": ["azure"],
    "allow_fallbacks": true
  }
}
only
string[]
Белый список провайдеров
ignore
string[]
Исключить провайдеров
allow_fallbacks
boolean
Разрешать запасные модели в цепочкеdefault: true

kodikrouter/auto

Укажите kodikrouter/auto как model— шлюз сам выберет оптимальную модель под запрос (по цене/качеству). Полезно для демо и прототипов.

Приоритет при фолбэках
Порядок важен: первая модель в models[] — основная. Остальные — в порядке убывания приоритета. Для cost-sensitive сценариев ставьте дешёвые модели первыми.