hubris

Роутинг

Цепочки резервных моделей в кабинете — создание, условия переключения, подключение по имени route/…, логи и статистика.

Цепочка — это виртуальная модель с именем route/<идентификатор>: основная модель и до четырёх резервов. Если основная отвечает ошибкой провайдера или не начинает ответ вовремя, запрос уходит к следующей модели внутри того же вызова — без ретраев и второй ноды на вашей стороне. Всё живёт на странице Роутинг.

Как устроен сам каскад и что происходит с картинками и файлами — в Model Fallbacks. Здесь — про кабинет: куда нажимать и что произойдёт.

Создание цепочки

  1. Откройте Роутинг → «Создать цепочку».
  2. Дайте название — оно только для списка в кабинете, символы любые: «Прод-агент», «Дешёвые батчи».
  3. Идентификатор подставится из названия автоматически (prod-agent, deshevye-batchi), его можно поправить: строчная латиница, цифры и дефис, от 2 до 40 символов. Именно он уйдёт в параметр model с префиксом route/.
  4. Выберите основную модель — откроется каталог с поиском, тот же, что в чате, — и нажмите «Создать»: откроется страница цепочки.

Идентификатор уникален в пределах вашего кабинета. Чужую цепочку с таким же именем ваш ключ не увидит, а свою — никто другой: в общий каталог цепочки не попадают.

Страница цепочки

Цепочка. Шаг 1 — основная модель, дальше резервы по порядку. «Добавить резерв» открывает выбор модели из каталога с поиском; стрелками меняется порядок, крестиком шаг убирается. У каждого шага показано, что модель принимает на вход — текст, картинки, файлы: возможности берутся из каталога автоматически, руками их настраивать не нужно. Изменения применяются по кнопке «Сохранить».

Условия переключения. Три переключателя:

УсловиеКогда срабатывает
429Провайдер ответил, что лимит запросов исчерпан
5xxСбой на стороне провайдера, включая его модерацию содержимого
Таймаут первого байтаМодель приняла запрос, но за указанное число секунд не начала отвечать

Все три работают только до первого байта ответа: начатый поток не прерывается и не отправляется заново. Снятый переключатель означает, что по этой причине цепочка дальше не пойдёт — клиент получит ошибку как при прямом вызове.

Название и идентификатор. Оба можно менять. Смена идентификатора ломает клиентов, у которых старое имя прописано в коде, — сначала обновите их, потом переименовывайте.

Подключение. Готовый пример: меняется только model. Кнопка копирования — рядом с кодом.

За 30 дней. Запросы через цепочку, сколько из них ушло на резерв (и доля), расход, дата последнего переключения.

Выключить / Удалить. Выключенная цепочка отвечает 404 model_not_found, настройки сохраняются — удобно на время разбирательств. Удаление необратимо: имя перестаёт работать сразу, логи прошлых запросов остаются.

Подключение

Укажите имя цепочки вместо модели — работает везде, где принимается model: /v1/chat/completions, /v1/messages, SDK OpenAI и Anthropic, LangChain, n8n, cURL.

curl -s https://api.hubris.pw/v1/chat/completions \
  -H "Authorization: Bearer sk-gw-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "route/prod-agent",
    "messages": [{"role": "user", "content": "Привет"}]
  }'
from openai import OpenAI

client = OpenAI(base_url="https://api.hubris.pw/v1", api_key="sk-gw-...")
ROUTE = "route/prod-agent"  # имя цепочки со страницы «Роутинг»

resp = client.chat.completions.create(
    model=ROUTE,
    messages=[{"role": "user", "content": "Привет"}],
)
print(resp.model)  # какая модель ответила на самом деле

В ответе поле model — модель, которая реально ответила. Списание — по её обычной цене; цепочка ничего не добавляет.

В n8n и IDE, которые тянут список моделей через GET /v1/models, ваши цепочки появляются в выпадающем списке рядом с обычными моделями (owned_by: "hubris") — отдельной настройки не нужно.

Логи и статистика

В Логах запрос через цепочку помечен значком у имени модели: зелёный — ответила основная, жёлтый — было переключение. В подробностях запроса видно, какая цепочка запрошена и почему пропущен шаг: «лимит провайдера (429)», «не начала ответ вовремя», «не принимает вложения запроса».

Отфильтровать журнал по цепочке можно двумя способами: кнопкой «Логи цепочки» на странице цепочки или через «Фильтр» → «Цепочка» в самих логах. Фильтр учитывает и запросы, ушедшие на резерв, — они помечены вашей цепочкой, а не моделью, которая ответила.

Цепочка из одного шага — тоже цепочка: так удобно завести стабильное имя для интеграций и менять модель под ним без правок в коде клиентов.

Что дальше

  • Model Fallbacks — как работает каскад, картинки и файлы, разовый массив models без сохранённой цепочки.
  • Ключи и проекты — лимиты и защита ключей, которыми вызывают цепочки.
  • Логи — журнал запросов с фильтром по цепочке.

Обновлено: