Как построить workflow с контрольными точками человека

Ссылка скопирована

В human in the loop AI-сценарии контроль человека — это не фраза в промпте. Система должна остановиться, сохранить состояние, показать вход и предложение AI, дождаться решения и только потом выполнить действие.

Ниже — практический разбор «human in the loop AI»: что нужно на входе, какие ограничения задать, как проверить результат и какой сделать следующий шаг.

Обложка

Как подойти к задаче без лишней магии

Что бы я делал, если бы AI сам готовил коммерческое предложение, назначал скидку и отправлял его клиенту. Я бы разделил подготовку и исполнение: модель предлагает, человек подтверждает конкретный payload.

Ошибка, которую я бы сразу убрал: Если approval живёт в длинном запущенном workflow, таймаут или перезапуск может потерять состояние. Надёжнее разделить сохранение предложения и продолжение после решения.

Визуал 01

Что подготовить и какой результат ждать

  • На выходе: Сотрудник проверяет только рискованные случаи, а после перерыва workflow продолжает работу с того же места.
  • Определите действия, которые требуют approval: отправка, возврат, удаление, публикация, изменение прав и финансовые операции.
  • Сохраните исходные данные и права доступа отдельно от результата, чтобы можно было проверить, что сделал human-in-the-loop workflow.
  • Остановите сценарий на approval, отклоните действие, одобрите его через несколько минут и проверьте журнал.

Соберите approval, который можно проверить

  1. Разделите предложение и выполнение

    AI создаёт draft_action, workflow показывает его человеку, а отдельный шаг Execute запускается только после approve.

    Проверьте: Кнопка approve не просто меняет статус, а является условием выполнения.

    Если не сработало: Уберите write-инструмент из AI и оставьте его только в финальной ветке.

  2. Сохраните состояние

    Запишите run_id, action, payload, requester, approver, status и expires_at. Для сложного согласования используйте Wait node или webhook resume.

    Проверьте: После перерыва можно продолжить тот же run_id.

    Если не сработало: Разделите workflow на start и resume, а не держите долгий процесс в памяти.

  3. Покажите человеку контекст

    В карточке approval должны быть исходный запрос, найденные данные, предложение AI, риск и кнопки approve/reject/ask_more.

    Проверьте: Решение можно принять без поиска по пяти системам.

    Если не сработало: Сократите экран до данных, которые меняют решение.

  4. Обработайте отказ и таймаут

    Reject отправляет задачу владельцу или возвращает draft на правку. Истёкший expires_at не должен автоматически выполнять действие.

    Проверьте: Отклонённый запрос не уходит клиенту и виден в журнале.

    Если не сработало: Добавьте ежедневный список зависших согласований.

Визуал 02

Состояния, которые я бы завёл

Минимальная state machine: received → drafted → waiting_approval → approved/rejected → executed → failed. В записи храните input_snapshot, proposed_action, reviewer_id, reviewed_at, rejection_reason и execution_id. После approved workflow ещё раз проверяет, что вход не устарел.

Для письма или изменения CRM разделите две операции: первая сохраняет draft и отправляет кнопку подтверждения, вторая по approval_id выполняет действие. Так процесс переживает перезапуск и не отправляет повторно.

  • Reject должен объяснять причину, а не просто обнулять статус.
  • Для низкой уверенности делайте review_required, а не бесконечный цикл уточнений.

Что должно быть на экране согласования

Покажите исходный текст, предложенный результат, изменяемые поля, ссылку на источник, риск и кнопки approve/reject. Если человек не может понять решение за минуту, экран перегружен или AI принёс слишком мало контекста.

Две цепочки вместо зависшего workflow

Workflow A: `Trigger → Get context → AI draft → Validate → proposal_id → action_hash → Save approval → Slack/Gmail`. Workflow B: `Approval webhook → Verify approver → Get proposal → Compare action_hash → Check expiry → Execute once → Audit log`.

Состояния: `pending → approved/rejected/edited → executed/failed/expired`. В записи храните `proposal_id`, `target_id`, `payload`, `action_hash`, `state_version`, `approver_role`, `expires_at`, `rejection_reason` и `execution_id`.

{
  "action": "send_quote",
  "target_id": "deal_456",
  "payload": {"amount": 150000, "discount": 10},
  "requires_approval": true,
  "expires_at": "2026-08-05T12:00:00Z"
}

Что человек должен увидеть

Получатель, сумму, скидку, изменяемые поля, предпросмотр текста, источник данных и время истечения. Кнопка не должна исполнять действие прямо из URL: она передаёт только `proposal_id`, а сервер заново проверяет роль, hash и статус `executed`.

Что должно измениться после настройки

Сотрудник проверяет только рискованные случаи, а после перерыва workflow продолжает работу с того же места.

Визуал 03

Почему «human in the loop» часто существует только на словах

Запускать до подготовки входных данных

Считать approval текстовой инструкцией в prompt.

Давать лишние права

Не хранить состояние между стартом и подтверждением.

Не проверять пограничные случаи

Показывать сотруднику только итог без исходного запроса.

Оставлять сбой без владельца

Автоматически выполнять действие после таймаута.

Когда согласование требует отдельного состояния

Подключайте специалиста, если approval касается денег, юридических действий, нескольких ролей или долгих процессов с большим объёмом состояний.

Что должно быть на экране подтверждения

Кому подходит этот способ работы с human-in-the-loop workflow?

В human in the loop AI-сценарии контроль человека — это не фраза в промпте. Система должна остановиться, сохранить состояние, показать вход и предложение AI, дождаться решения и только потом выполнить действие.

С чего начать, если всё пока делается вручную?

Определите действия, которые требуют approval: отправка, возврат, удаление, публикация, изменение прав и финансовые операции.

Как проверить, что настройка не навредит?

Остановите сценарий на approval, отклоните действие, одобрите его через несколько минут и проверьте журнал.

Что делать при непонятном результате?

Сохраните состояние в таблице или базе и поставьте срок эскалации, чтобы зависший approval не потерялся.

AI-агенты и интеграции

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

Обложка
AI-агенты и интеграции 8 мин чтения

Что такое AI-агент и где он реально полезен малому бизнесу

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

информационныйЧитать ↗
Обложка
AI-агенты и интеграции 8 мин чтения

AI-агент, чат-бот или обычная автоматизация: что выбрать бизнесу?

Сравниваем стоимость, контроль, автономность и риски трёх подходов.

коммерческийЧитать ↗
Обложка
AI-агенты и интеграции 7 мин чтения

Как собрать базу знаний для AI-помощника

Готовим источники, правила ответа, актуальность и тестовые вопросы.

коммерческийЧитать ↗
Обложка
AI-агенты и интеграции 8 мин чтения

Как подключить AI к файлам, CRM, календарю и почте

Планируем права доступа и события интеграции до выбора конкретного инструмента.

коммерческийЧитать ↗

Показать все статьи