Inquir Compute logoInquir Compute
Сценарий · Inquir Compute

Агенты в продакшене на функциях и маршрутах Inquir

Каждый инструмент — отдельная функция в духе Lambda в своём контейнере: вызов через API-Gateway с аутентификацией и секретами в рабочем пространстве, слои под тяжёлые SDK, по желанию тёплые пулы под всплески, пайплайны, если шаг не укладывается в HTTP.

Обновлено: 2026-04-20

Суть ответа

Агенты в продакшене на функциях и маршрутах Inquir. Функция на инструмент сосредотачивает зависимости и риск при публикации правок; в консоли видна история именно этого вызова.

Когда подходит и когда нет

  • Многошаговые агенты
  • Доступ инструментов к закрытым данным

На что обратить внимание

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

Что нужно ИИ-агенту в продакшене помимо ответа модели: отдельные HTTP-инструменты, секреты и контроль побочных эффектов

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

Без нормального бэкенда побочные эффекты уезжают в промпт или браузер — там их почти нельзя ни проконтролировать, ни отозвать.

Почему клиентский код и один общий сервер плохо подходят для инструментов агента с закрытыми данными и аудитом

Мощные инструменты на устройстве пользователя не подходят для регулируемых данных или жёстко заблокированных ноутбуков.

Один большой сервер смешивает обновления кода и логи всех сценариев — дежурствам больнее, чем с изолированными инструментами.

Как Inquir Compute оформляет каждый инструмент агента отдельной функцией за API-шлюзом

Функция на инструмент сосредотачивает зависимости и риск при публикации правок; в консоли видна история именно этого вызова.

Те же Node, Python и Go, что и в остальной платформе. Тёплые пулы — по желанию под частые вызовы — подбирайте по нагрузке.

Правила реализации инструментов AI-агента

Одна функция — один инструмент

Разделяйте функции, если зависимости не связаны жёстко. Один инструмент на функцию — риск деплоя минимален, логи привязаны к конкретной возможности.

Проверяйте входные данные, возвращайте структурированный JSON

Отклоняйте невалидные запросы как можно раньше. Возвращайте стабильную JSON-схему, которую оркестратор сможет разобрать без исключений.

Секреты в переменных окружения, не в промптах

Скопируйте ключи API на уровне функции. Ротируйте независимо от версий модели, не трогая шаблоны промптов.

Длинную работу — в задачи или пайплайны

Когда шаг инструмента превышает таймаут шлюза, верните ответ сразу, а обогащение или побочные эффекты продолжите в фоновом пайплайне.

Отслеживайте сбои по каждой конечной точке

Настройте алерты по ошибкам на маршрут инструмента, а не только на сессию чата. Один упавший инструмент должен всплыть в наблюдаемости раньше, чем тихо ухудшит качество агента.

Hot containers for tight tool loops

When the model calls tools in rapid succession, cold-start latency adds up. Enable warm pools for tool functions with steady traffic—measure p95/p99 before and after to validate the gain.

Track failures per tool endpoint

Alert on error rates per tool route, not only per chat session. One failing tool should surface in observability before it silently degrades agent quality.

Как строить инструменты AI-агента на Inquir Compute

1

Описать контракт входных данных инструмента

Задокументируйте обязательные поля, поведение валидации и форму ошибки, которую должен обработать оркестратор.

2

Описать схему вывода и модель доступа

Держите форму ответа стабильной между версиями. Используйте API-ключ на уровне маршрута, чтобы инструменты случайно не оказались открытыми.

3

Описать повторы, идемпотентность и передачу по таймауту

Решите, когда повторять на месте, когда возвращать ID задачи и продолжать через пайплайн, и как ключевать записи, чтобы повторы не создавали дубликатов.

Паттерны хендлера инструмента

Тело POST приходит строкой в event.body. Возвращайте { statusCode, body } для HTTP-маршрутов. Когда работа превышает таймаут — верните ссылку на задачу и продолжите в пайплайне.

tools/lookup.mjs (Node.js 22)
export async function handler(event) {
  const { id } = JSON.parse(event.body || '{}');
  if (!id) return { statusCode: 400, body: JSON.stringify({ error: 'id required' }) };
  // API key auth is enforced at the gateway route — handler assumes authenticated caller
  const row = await db.findById(id);
  if (!row) return { statusCode: 404, body: JSON.stringify({ error: 'not found' }) };
  return { statusCode: 200, body: JSON.stringify({ row }) };
}
tools/classify.py (Python 3.12)
import json, os
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])  # injected from workspace secrets

def handler(event, context):
    body = json.loads(event.get("body") or "{}")
    text = body.get("text")
    if not text:
        return {"statusCode": 400, "body": json.dumps({"error": "text required"})}
    r = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": f"Classify intent of: {text}"}],
    )
    return {"statusCode": 200, "body": json.dumps({"intent": r.choices[0].message.content})}
tools/enrich-async.mjs (async handoff)
export async function handler(event) {
  const { customerId } = JSON.parse(event.body || '{}');
  if (!customerId) return { statusCode: 400, body: JSON.stringify({ error: 'customerId required' }) };
  // Return fast; continue in pipeline — orchestrator polls /jobs/:jobId or receives webhook
  const { instanceId: jobId } = await global.durable.startNew('enrich-customer', undefined, { customerId });
  return { statusCode: 202, body: JSON.stringify({ jobId }) };
}

Когда имеет смысл выносить действия агента в отдельные serverless-функции Inquir

Когда это уместно

  • Многошаговые агенты
  • Доступ инструментов к закрытым данным

Когда лучше не трогать

  • Разовые ответы модели без побочных эффектов

Вопросы и ответы

Инструменты должны быть отдельными HTTP-функциями?

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

Где хранить секреты?

В секретах рабочего пространства с подстановкой в окружение — ключи не в промптах и не в клиентском бандле.

Streaming / SSE для пользователя?

Stream (SSE) к клиенту — через API-Gateway; связь orchestrator → tool чаще остаётся обычным JSON request/response — так проще retries и idempotency.

Inquir Compute logoInquir Compute

Самый простой способ запускать AI-агентов и фоновые задачи без собственной инфраструктуры.

Связаться info@inquir.org

Привет, это команда Inquir Compute. Спроси AI о продукте:

© 2025 Inquir Compute. Все права защищены.