Агенты в продакшене на функциях и маршрутах Inquir
Каждый инструмент — отдельная функция в духе Lambda в своём контейнере: вызов через API-Gateway с аутентификацией и секретами в рабочем пространстве, слои под тяжёлые SDK, по желанию тёплые пулы под всплески, пайплайны, если шаг не укладывается в HTTP.
Нагрузка и где ломается
Что агентам реально нужно
Один ответ модели — только верхушка. В проде агенты ходят в закрытые данные, пишут в учётные системы, передают эскалации людям и соблюдают ограничения — у каждого шага должны быть обработка сбоев и повторы.
Без нормального бэкенда побочные эффекты уезжают в промпт или браузер — там их почти нельзя ни проконтролировать, ни отозвать.
Где костыли не спасают
Хрупкие схемы
Мощные инструменты на устройстве пользователя не подходят для регулируемых данных или жёстко заблокированных ноутбуков.
Один большой сервер смешивает обновления кода и логи всех сценариев — дежурствам больнее, чем с изолированными инструментами.
Как помогает Inquir
Инструменты в Inquir
Функция на инструмент сосредотачивает зависимости и риск при публикации правок; в консоли видна история именно этого вызова.
Те же Node, Python и Go, что и в остальной платформе. Тёплые пулы — по желанию под частые вызовы — подбирайте по нагрузке.
Что получаете
Опорные кирпичи
Маршруты с проверкой доступа
Разные инструменты — разные учётные данные.
Продолжение в фоне
Длинные шаги — в пайплайн, если пользователь не может ждать.
Структурные логи
Связывайте решение модели с результатом инструмента.
Что делать дальше
Как строить инструменты агента на Inquir
Спланировать инструменты
Схемы входов и выходов в JSON.
Реализовать
Хендлеры по возможности предсказуемы.
Наблюдать
Сигналы по ошибкам инструмента, а не только по сессии чата.
Пример кода
Компактный хендлер инструмента
Тело POST в JSON приходит строкой в event.body; ответ { statusCode, body } для HTTP-интеграций.
export async function handler(event) { const id = JSON.parse(event.body || '{}').id; const row = await db.findById(id); return { statusCode: 200, body: JSON.stringify({ row }) }; }
Когда подходит
Когда подходит
Когда это уместно
- Многошаговые агенты
- Доступ инструментов к закрытым данным
Когда лучше не трогать
- Разовые ответы модели без побочных эффектов
FAQ
Вопросы и ответы
Инструменты должны быть отдельными HTTP-функциями?
В продакшене обычно да — проще изоляция, меньше риск при публикации новой версии и понятнее логи, чем у монолита.
Где хранить секреты?
В секретах рабочего пространства с подстановкой в окружение — ключи не в промптах и не в клиентском бандле.
Streaming / SSE для пользователя?
Stream (SSE) к клиенту — через API-Gateway; связь orchestrator → tool чаще остаётся обычным JSON request/response — так проще retries и idempotency.