Inquir Compute · agentic-воркфлоу

Бэкенд agentic-воркфлоу для многошаговых AI-агентов

Agentic-воркфлоу требуют больше, чем эндпоинты инструментов: durable-оркестрация между планированием, вызовами инструментов, валидацией, human-in-the-loop и очисткой — с повторами на шаг, трассировками на ход модели и секретами вне промпта.

Обновлено: 2026-06-23

Суть ответа

Бэкенд agentic-воркфлоу для многошаговых AI-агентов. Каждый шаг воркфлоу — serverless-функция: plan, call-tool, validate, notify, approve. Пайплайны связывают шаги с повторами, ветвлением и durable-состоянием — упавший шаг обогащения повторяется без перезапуска планирования модели.

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

  • Многошаговые агенты с инструментами, валидацией и уведомлением людей
  • Воркфлоу с durable-состоянием, повторами на шаг или approval-gates

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

  • In-memory state machine теряет прогресс при рестарте. Нет durable-чекпоинта между вызовами инструментов, аудита для compliance и паузы на human approval без самописной обвязки.
  • Прямые вызовы инструментов из оркестратора смешивают трафик модели с ключами БД и внешних API в одной среде — сложнее разграничить доступ и ротировать секреты.

Почему agentic-воркфлоу нужен отдельный бэкенд

Один цикл LLM с inline-инструментами работает в демо. В проде agentic-воркфлоу длятся минуты или часы: исследование, действие, проверка, эскалация, уведомление. При падении шага четыре нужен повтор только его — не весь диалог с начала.

Без отдельного бэкенда оркестрация, выполнение инструментов и побочные эффекты делят один процесс. Один плохой деплой или утечка памяти роняет все воркфлоу агента.

Где ломается лёгкая оркестрация агентов

In-memory state machine теряет прогресс при рестарте. Нет durable-чекпоинта между вызовами инструментов, аудита для compliance и паузы на human approval без самописной обвязки.

Прямые вызовы инструментов из оркестратора смешивают трафик модели с ключами БД и внешних API в одной среде — сложнее разграничить доступ и ротировать секреты.

Serverless-функции и пайплайны как agentic-слой

Каждый шаг воркфлоу — serverless-функция: plan, call-tool, validate, notify, approve. Пайплайны связывают шаги с повторами, ветвлением и durable-состоянием — упавший шаг обогащения повторяется без перезапуска планирования модели.

Вызовы инструментов идут через authenticated-маршруты шлюза с секретами на функцию. Оркестратор видит структурированный JSON; платформа даёт изоляцию, тёплые пулы и историю выполнения по шагам.

Паттерны бэкенда agentic-воркфлоу

Durable-многошаговые прогоны

Шаги пайплайна сохраняют состояние между ходами модели. Продолжение после сбоя без повтора завершённых шагов.

Инструменты как функции шлюза

Каждый инструмент — authenticated HTTP-эндпоинт в изолированном контейнере с scoped-секретами — не inline-код в оркестраторе.

Human-in-the-loop

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

Ветвление и fan-out

Маршрутизация по выходу инструмента, confidence или политике — без вложенных if/else в монолите.

Как собрать бэкенд agentic-воркфлоу на Inquir

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

1

Определить шаги воркфлоу

Сопоставьте каждое действие агента с функцией или шагом пайплайна: plan, tool-call, validate, notify, approve.

2

Подключить инструменты к шлюзу

Одна функция на инструмент с API-ключом и секретами workspace. Структурированный JSON обратно в оркестратор.

3

Связать шаги в пайплайн

Durable-прогоны: повторы на шаг, ветвление по выходу инструмента, ожидание approval и полная история.

Agentic-воркфлоу: plan → tool → validate → notify

Оркестратор вызывает инструменты шлюза синхронно для быстрых шагов; долгая или retry-heavy работа — в пайплайне.

orchestrators/research-agent.mjs (durable orchestrator)
exports.orchestrator = async function* (ctx) {
  const { query, runId } = ctx.getInput();

  // Step 1: search — retries 3x with exponential backoff on failure
  const searchResults = yield ctx.callActivityWithRetry(
    'search-docs',
    { maxNumberOfAttempts: 3, backoffCoefficient: 2, firstRetryIntervalInMilliseconds: 1000 },
    { query }
  );

  // Step 2: generate draft — single attempt, deterministic
  const draft = yield ctx.callActivity('generate-draft', { query, searchResults });

  // Step 3: human approval gate — wait up to 24h for external event
  const approved = yield ctx.waitForExternalEvent('Approval', 86_400_000);
  if (!approved) return { runId, status: 'rejected', draft };

  // Step 4: durable timer — wait 5 min before publishing (rate-limit guard)
  yield ctx.createTimer(new Date(Date.now() + 5 * 60 * 1000));

  // Step 5: publish result
  const published = yield ctx.callActivity('publish-result', { runId, draft });
  return { runId, status: 'published', url: published.url };
};
activities/search-docs.mjs (gateway tool function)
export async function handler(event) {
  // API key auth enforced at the gateway route before this code runs
  const { query } = JSON.parse(event.body || '{}');
  const results = await searchInternalDocs(query); // DB_URL from workspace secrets
  return { statusCode: 200, body: JSON.stringify({ results, count: results.length }) };
}
api/start-research.mjs (HTTP entry point)
export async function handler(event) {
  const { query, runId } = JSON.parse(event.body || '{}');
  if (!query) return { statusCode: 400, body: JSON.stringify({ error: 'query required' }) };
  // Start the durable orchestrator — returns HTTP 202 with status/event/terminate URIs
  const { instanceId } = await global.durable.startNew('research-agent', undefined, { query, runId });
  return { statusCode: 202, body: JSON.stringify({ instanceId, status: 'started' }) };
}

Когда уместен бэкенд agentic-воркфлоу

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

  • Многошаговые агенты с инструментами, валидацией и уведомлением людей
  • Воркфлоу с durable-состоянием, повторами на шаг или approval-gates

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

  • Одноходовый чат с одним вызовом инструмента без побочных эффектов

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

Чем отличается от бэкенда tool calling?

Tool calling — отдельные HTTP-эндпоинты на инструмент. Agentic-воркфлоу добавляет durable-оркестрацию: многошаговые пайплайны, ветвление, human approval и чекпоинты между ходами модели.

Можно ли использовать LangGraph или CrewAI?

Да. Оставьте свой фреймворк оркестрации; направляйте вызовы инструментов на маршруты Inquir, durable-шаги — в пайплайны через global.durable.startNew().

Что при падении шага пайплайна?

Шаг повторяется по политике пайплайна. Завершённые шаги не перезапускаются. В истории видно, какой шаг упал, сколько было повторов и текст ошибки.