Зачем вообще маршрутизировать
Поставить весь конвейер доставки на одного провайдера — это риск для бизнеса, а не технический вкус:
- Его простой останавливает вашу работу. Лежит его API — стоят ваши агенты.
- Нет переговорной позиции по цене. Нет альтернативы — нечем торговаться.
- Улучшения проходят мимо. Прорывы случаются в разных лабораториях и в разное время.
- Разным задачам нужны разные модели. Роли, которая читает абзац требований, не нужна та модель, что пишет вашу авторизацию.
Есть и вторая причина, а для части организаций она единственная важная: вы решаете, где происходит вычисление. Подключить можно всё, что говорит на общем API, включая модели на вашем собственном железе, — то есть стек может вообще не зависеть от внешнего сервиса.
Поэтому в списке не только западные лаборатории. GigaChat (Сбер) и Yandex AI Studio отвечают через тот же шлюз, с тем же переключением при сбое и тем же учётом по организациям, что и всё остальное, — это важно, если ваши пользователи в России, а очевидные провайдеры оттуда недоступны или не оплачиваются.
Шлюз Forge стоит между каждым ходом агента и провайдером, который на него отвечает. Агенты говорят на одном языке; шлюз переводит для того, кто на другом конце.
Как он выбирает
У каждой организации есть упорядоченный список провайдеров, и порядок в нём определяют две вещи:
- Предпочтение — задаёте вы. Кого вы предпочли бы при прочих равных.
- Здоровье — считает Forge. Скользящая картина того, как провайдер вёл себя на самом деле: как часто ошибался в последнее время, как давно и сколько держится стабильно.
Когда приходит ход, Forge берёт предпочитаемого вами провайдера из тех, кто сейчас здоров. Если вызов не удался — спускается по списку к следующему, и прогон продолжается. Тот, кто начал сбоить, используется реже; тот, кто продержался стабильно достаточно долго, возвращает себе место. Один плохой вечер не списывает провайдера навсегда.
У каждой организации есть ещё и назначенный запасной — он исключён из обычной ротации и включается, только когда отказали все остальные. Представляйте его парашютом, а не самолётом.
Закрепление
Иногда нужно меньше выбора, а не больше.
Закрепить прогон. Все ходы одного прогона обслуживает одна модель — тогда ревьюер читает работу, сделанную из тех же допущений, что и у разработчика.
Закрепить пул машин. Группе исполнителей можно разрешить брать работу только для определённого провайдера или региона. Так закрывают требование «персональные данные не покидают этот регион» — и так же выкатывают нового провайдера сначала на небольшую долю трафика.
Где имеет смысл тратить
У ролей разные потребности, и у каждой может быть своё умолчание. Схема, к которой приходит большинство команд:
- Продакт-менеджер → быстрая и дешёвая: он читает и раскладывает требования.
- Архитектор → самая сильная модель, что у вас есть.
- Разработчик → самая сильная, что у вас есть; здесь основная тяжесть.
- Тестировщик и ревьюер → сбалансированная модель, надёжная на структурированном выводе.
Задать это можно по ролям или правилами в списке провайдеров организации.
Что вы получаете
Всё перечисленное уже работает в продакшене.
- Упорядоченный список провайдеров у каждой организации и назначенный запасной
- Автоматическое переключение, понижение по здоровью и возврат обратно
- Закрепление провайдера за отдельным прогоном или отдельной ролью
- Пулы машин, ограниченные одним провайдером или регионом
- Интерфейс: список провайдеров, выбор провайдера на прогон, фильтр прошлых прогонов по тому, кто отвечал
Попробовать
Если вы уже пользуетесь Forge, зайдите в настройки организации и добавьте второго провайдера за текущим. Forge будет отправлять всё основному, пока что-нибудь не сломается, переключится без ошибки у агента и вернётся к основному, когда тот снова здоров. Смысл в том, что вы этого не заметите: переключение видно потом в истории прогона, а не во время него.