Google вынес выбор модели агента из кода в API Gateway

Иллюстрация: Google вынесла выбор модели агента в API Gateway

Многие люди уверены: если агент то зовёт дешёвую модель, то сильную — в коде неизбежно живут три разных клиента, ключи и домашний прокси. Им кажется, иначе никак.

Точнее, иначе уже можно. Google вынесла выбор модели из кода в управляемый шлюз — API Gateway. Один вход. Имя модели в настройках. Дальше шлюз сам решает, куда стукнуть.

Это ещё не «навсегда и для всех». Но смысл сдвига понятен: вместо своего процесса-посредника — управляемый край с одним адресом.

Почему всем сразу нужен зоопарк SDK в коде агента? Почему никто не хочет один вход и таблицу имён моделей сбоку? Почему хайп всегда про «какая модель умнее», а не про то, кто таскает ключи между окнами?

Ну … ключи таскаете вы. Пока выбор модели сидит в приложении, вы — курьер. Вынесли выбор в шлюз — курьер уже не вы.

Что именно пустили в шлюз

Схема: что открыли в публичном предпросмотре маршрутизации моделей

В начале августа Google открыла публичный предпросмотр маршрутизации запросов к языковым моделям в API Gateway. Анонс — в блоге для разработчиков, фиксация в заметках о релизе.

Вход принимает запрос в привычной форме чата OpenAI. На лету перекладывает его в схему бэкенда и отдаёт на модели внутри платформы агентов Google — Gemini, Claude или OpenAI OSS-GPT через Vertex / Model Garden.

В примерах документации бэкенды такие: google/gemini-3.5-flash-lite, anthropic/claude-opus-4-7, openai/gpt-oss-120b-maas. Всё на одном хосте aiplatform.googleapis.com (или одном региональном). Claude и OSS-GPT здесь идут через Vertex, не как «три чужих облака в одном роутере».

Независимые сводки той же недели — getaibook и AI Insiders — подтверждают дату и форму входа. Соседние релизы недели (балансировщик с сессиями, оценки агентов) — другие продукты. Герой этой статьи — только маршрутизация моделей.

Один вход, выбор по имени модели

Схема: один вход шлюза и выбор бэкенда по имени модели

Клиент шлёт обычный запрос с сообщениями — как к openai-совместимому чату. Шлюз сам перекладывает запрос в схему бэкенда и подставляет токен доступа платформы агентов.

Приложение логинится к Gateway, не к каждому поставщику моделей. Ротация секретов бэкенда — без правок клиента. Ну … это и бесило больше всего, когда ключи жили в трёх SDK сразу.

В публичном предпросмотре правило выбора одно: поле «model» в JSON. Нет совпадения в таблице роутера — уходит на запасной defaultModel. Маршрутизации «по цене» или «по задержке» пока нет: только имя модели в конфиге.

Сюрприз формата: вход говорит на схеме OpenAI; Gemini в примере — один из бэкендов рядом с Claude, не «нативный» запрос от клиента. Спрашивается — какой смысл тащить три клиента, если один формат уже приняли сами?

Все просто: пока выбор модели сидит в коде, вы — курьер между SDK. Вынесли в шлюз — курьер уже не вы.

Как это собирают в конфиге

Чеклист: как собрать маршрутизацию моделей в конфиге API Gateway

Нужен OpenAPI 3.x с расширениями Google: backends плюс таблица роутеров моделей, а на операции POST — указатель роутера. Старый OpenAPI 2.0 / Swagger не поддерживаются. Поставить роутер на корень пути или на не-POST нельзя.

Все бэкенды одного роутера обязаны делить один hostname и одну схему. Это не маршрутизация на чужие облака вне Vertex / платформы агентов.

Жизненный цикл шлюза жёсткий. Нельзя «дописать» маршрутизацию моделей на уже задеплоенный gateway без неё. Нельзя снять роутинг с gateway, где он уже есть. Нужен новый конфиг API и новый экземпляр. В одной спецификации нельзя смешивать операции с роутером моделей и обычные бэкенды Google.

Адрес предпросмотра — на *.run.app; брать URL только после статуса ACTIVE. Для деплоя — роль администратора API Gateway; у сервисного аккаунта шлюза — право пользоваться AI Platform. Модели должны быть заранее выложены как открытые модели по запросу в Model Garden. Подробности: настройка и обзор.

Где предпросмотр ещё кусается

Статус — публичный предпросмотр: без гарантий уровня SLA; поверхность конфига может меняться. Так и пишут независимые разборы недели.

  • Только текстовый JSON в openai-форме. Потоковая отдача ответа — да. Потоковая отправка запроса, gRPC, WebSockets и живой Gemini Live — нет. Максимальный таймаут шлюза — 3600 секунд.
  • Контроль периметра VPC и Private Service Connect — не поддерживаются.
  • Баг предпросмотра: если в теле запроса нет поля model, шлюз обрабатывает запрос криво вместо явной ошибки. Поле нужно слать всегда.
  • В логах есть hostname бэкенда, но нет точной атрибуции «какая именно модель ответила» — все бэкенды на одном хосте. Структурированные логи решения роутера — «в будущем».
  • Ошибки роутера в логах: model_router_application_error, _timeout, _upstream_error, _unavailable.
  • Для openai-совместимого бэкенда подставить короткий alias вместо валидного id издателя (например openai/gpt-oss-120b-maas) — получить 400 Malformed publisher model.

Стек рядом: шлюз можно держать отдельно (лимит частоты + учёт токенов) или связать с Agent Gateway для контроля исходящего трафика, а API Gateway оставить под динамический роутинг. Apigee — соседний слой спектра, не синоним этой фичи.

Что сделать руками, если пробуете

  1. Не ждать, что роутинг «включат» на старом gateway — планировать новый конфиг API и новый экземпляр.
  2. Держать один hostname для всех бэкендов роутера; не смешивать роутинг моделей и обычные бэкенды в одном OpenAPI.
  3. Всегда слать model в JSON; запасной путь — defaultModel.
  4. Проверять, что нужные модели уже выложены в Model Garden; брать URL только после ACTIVE.
  5. Не рассчитывать на VPC-периметр, чужие облака вне одного хоста платформы агентов и на точную атрибуцию модели в логах — этого в предпросмотре нет.

Куда смотреть дальше

Ритм агентов, Make и Cursor — в канале Ковчег и в MAX. Если нужен каркас под автоматизацию с нейросетями без зоопарка SDK — обучение Cursor + Make + AI.

Первичный анонс: Google Developers Blog — unified API for AI model routing. Документация: обзор, настройка, заметки о релизе.