AI Bakery Gateway стоит между вашими клиентами и подключёнными аккаунтами провайдеров. Ваше приложение, агент или инструмент для кода отправляет запрос в формате OpenAI Chat Completions, OpenAI Responses или Anthropic Messages на один адрес; шлюз определяет подходящий аккаунт и модель, вызывает их и переключается на другой вариант, если вызов не удался.
Поток запроса
- Определение модели: конкретное имя модели, логическая модель,
autoили именованный профиль маршрутизации вродеfree-code. - Применение жёстких правил: соответствие возможностей, доказательство бесплатности (в режиме FreeOnly) и бюджет.
- Ранжирование кандидатов: запас квоты, доступность и измеренное качество.
- Резервирование квоты и вызов лучшего по рангу аккаунта.
- Переключение при сбое с записью деталей, достаточных, чтобы объяснить каждое решение постфактум.
Умная маршрутизация, а не round-robin
auto: шлюз оценивает кандидатов по соответствию возможностей, измеренному качеству, доступности, остатку квоты и свежести данных и выбирает один вариант. Вы не называете конкретную модель.- Профили маршрутизации описывают характер задачи, а не имя модели — см. 8 профилей ниже.
- Балансировка с учётом квоты: при нескольких аккаунтах для одной модели трафик идёт туда, где больше свободной квоты, поэтому один аккаунт не исчерпывается, пока другой простаивает.
- Ограниченный failover: запрос проходит по ранжированному списку кандидатов до настроенного лимита попыток и дедлайна на первый токен, поэтому один медленный или недоступный вендор не может заблокировать запрос бесконечно.
- Никаких тихих подмен: запросив конкретную модель, вы получаете именно её или явную ошибку — но никогда незаметную замену на что-то другое.
- Сопоставление эквивалентных моделей: одна и та же модель, предлагаемая двумя вендорами, распознаётся как одна логическая модель и используется как резерв для другой.
Защита бесплатных лимитов
FreeOnly включён по умолчанию: запрос никогда не уйдёт к модели, бесплатность которой шлюз не может подтвердить прямо сейчас. Шлюз постоянно перепроверяет эту картину — перечитывает списки моделей вендоров и пересчитывает «бесплатна ли эта модель для меня», а не полагается на прошлый ответ. Защита от случайных списаний отслеживает то, что одними доказательствами не поймать: если вендор всё же сообщит о списании за модель, которую шлюз считал бесплатной, шлюз прекращает использовать это назначение и поднимает критический алерт. Истекающий пробный кредит (например, у Cerebras) отслеживается, и аккаунт без остатка кредита исключается до того, как получит отказ.
Отказоустойчивость
- Circuit breaker на уровне аккаунта и модели: неработающий узел исключается из ротации на время восстановления, которое зависит от причины сбоя — лимит запросов, таймаут, ошибка авторизации или отзыв модели.
- Собственный
Retry-Afterвендора учитывается. - Безопасность стриминга: запрос может переключиться на другой вариант до первого токена. После первого токена шлюз никогда не меняет модель посреди ответа незаметно.
- Отмена запроса клиентом никогда не засчитывается как сбой провайдера.
- Понятные ошибки:
402означает, что для этого запроса по политике нет подходящей бесплатной модели;503— что прямо сейчас никто не смог обработать запрос;429— что тенант исчерпал собственный бюджет.
Объяснимость и эксплуатация
Каждый ответ содержит заголовки X-Scheduler-Provider, X-Scheduler-Account и X-Scheduler-Model, а также идентификатор запроса. Команда why <id-запроса> утилиты командной строки bakery показывает всех рассмотренных кандидатов, причину их ранжирования и что с ними произошло. Та же CLI покрывает настройку, прямой запрос к модели, список моделей, использование и проверку аккаунта (bakery setup, ask, models, usage, probe, tenants, accounts).
Панель управления в реальном времени (Blazor, на английском и русском) показывает использование, состояние флота и маршрутизацию, страницу Try для тестовых запросов, страницу Connect с готовой к копированию конфигурацией клиентов и мастер настройки. Алерты уходят в webhook, Slack или Telegram, когда бесплатная модель теряется или появляется, модель отзывается или вендор неожиданно выставляет счёт. Включены метрики Prometheus, трассировка OpenTelemetry и готовый дашборд Grafana с правилами алертов. MCP-сервер (bakery-mcp) позволяет MCP-совместимому клиенту — Claude Code, OpenCode, Claude Desktop — напрямую исследовать и диагностировать работающий шлюз.