Human-in-the-Loop Architecture: коли людина підтверджує рішення агента

Керований архітектурний шар, який переводить ризикові дії в режим погодження людиною перед фактичним виконанням.
На цій сторінці
  1. Ідея за 30 секунд
  2. Проблема
  3. Рішення
  4. Як працює Human-in-the-Loop Architecture
  5. У коді це виглядає так
  6. Як це виглядає під час виконання
  7. Коли підходить — і коли ні
  8. Підходить
  9. Не підходить
  10. Типові проблеми та відмови
  11. Як поєднується з іншими патернами
  12. Чим це відрізняється від Supervisor Agent
  13. Коротко
  14. FAQ
  15. Що далі

Ідея за 30 секунд

Human-in-the-Loop Architecture — це керована схема, де система залучає людину перед виконанням ризикової дії.

Агент може запропонувати action, але фінальне рішення для критичних кроків приймає людина: approve, reject або revise.

Це не ручне керування кожним кроком. Людина підключається лише там, де ризик справді високий.

Коли потрібна: коли дії агента можуть змінити стан, витратити гроші, зачепити чутливі дані або створити юридичний ризик.

LLM не має самостійно виконувати критичні side effects (зміни стану). Вона лише пропонує дію, а система переводить її в контрольований процес погодження.


Проблема

Без Human-in-the-Loop система часто потрапляє в одну з крайностей:

  • або агент діє занадто автономно;
  • або команда вручну перевіряє майже все і втрачає швидкість.

Типові збої без чіткого HITL-шару:

  • ризикова дія виконується без погодження;
  • не видно, хто і чому схвалив дію;
  • складно відкотити або пояснити наслідки помилки;
  • процес ескалації відрізняється між командами і стає хаотичним.

У production це перетворюється на інциденти, повільні релізи або слабкий аудит.

Рішення

Додати Human-in-the-Loop Architecture як явну межу погодження (approval boundary) між рішенням агента і фактичним виконанням дії.

Цей шар визначає:

  • які дії йдуть без погодження;
  • які дії вимагають підтвердження людиною;
  • як обробляти approve, reject, revise і timeout.

Аналогія: як подвійний підпис у фінансових операціях.

Система може підготувати платіж, але для великої суми потрібне підтвердження відповідальної людини.

Human-in-the-Loop працює так само: важливі кроки не виконуються автоматично.

Як працює Human-in-the-Loop Architecture

Human-in-the-Loop Architecture — це керований шар між Agent Runtime і виконанням дій, який переводить критичні кроки в режим погодження людиною.

Diagram
Опис повного флоу: Detect → Escalate → Review → Enforce → Resume

Detect
Runtime або policy-шар визначає, що дія ризикова і потребує погодження.

Escalate
Система формує запит на погодження: що саме хоче зробити агент, чому, які ризики і який контекст.

Review
Людина приймає одне рішення: approve, reject або revise (схвалити із змінами).

Enforce
Після рішення система або виконує дію через Tool Execution Layer, або повертає reject/revise у Runtime.

Resume
Runtime продовжує цикл із результатом погодження і фіксує причину в аудиті.

Такий цикл дозволяє зберегти швидкість автоматизації і контроль над критичними діями.

У коді це виглядає так

PYTHON
class HumanInTheLoopArchitecture:
    def __init__(self, policy, approval_queue, tool_execution):
        self.policy = policy
        self.approval_queue = approval_queue
        self.tool_execution = tool_execution

    def execute_action(self, action, context):
        decision = self.policy.check(action=action, context=context)
        mode = decision.get("mode")

        if mode == "allow":
            return self.tool_execution.execute(action=action, context=context)

        if mode == "require_approval":
            ticket_id = self.approval_queue.create(
                action=action,
                context=context,
                reason_code=decision.get("reason_code", "approval_required"),
            )

            # Simplified synchronous example for illustration.
            review = self.approval_queue.wait(ticket_id=ticket_id, timeout_s=300)
            if review is None:
                return {"ok": False, "reason_code": "approval_timeout"}

            status = review.get("status")
            if status == "approved":
                approved_action = review.get("action_override", action)
                return self.tool_execution.execute(action=approved_action, context=context)

            if status == "revise":
                return {
                    "ok": False,
                    "reason_code": "approval_revision_required",
                    "feedback": review.get("feedback", ""),
                }

            return {"ok": False, "reason_code": "approval_rejected"}

        return {"ok": False, "reason_code": decision.get("reason_code", "policy_denied")}

У цьому прикладі wait(..., timeout_s=300) показаний для наочності.
У production HITL частіше працює асинхронно: система створює approval ticket, завершує поточний run зі статусом pending_approval, а потім відновлює процес після рішення людини.

Як це виглядає під час виконання

TEXT
Запит: "Експортуй базу клієнтів у зовнішню CRM і надішли лист усім контактам"

Step 1
Agent Runtime: формує action -> export_customers + send_campaign_email
HITL Gate: classify -> require_approval (high_risk_data_export)

Step 2
Система створює approval ticket з контекстом і причиною
Human: revise -> дозволити лише сегмент "active_customers", без масової розсилки

Step 3
Tool Execution Layer: виконує тільки погоджену дію
Runtime: повертає результат + reason_code в трейс

Human-in-the-Loop не блокує автоматизацію повністю. Він додає контроль у точках реального ризику.

Коли підходить — і коли ні

Human-in-the-Loop Architecture корисна там, де ціна помилки висока і потрібна відповідальна людина в критичних кроках.

Підходить

СитуаціяЧому Human-in-the-Loop Architecture підходить
Є незворотні або дорогі дії (видалення, списання, експорт)Система не виконає критичний крок, доки людина не підтвердить рішення.
Потрібен комплаєнс і відповідальний аудит рішеньЄ явний слід: хто погодив, що погодив, з якою причиною і результатом.
Потрібно дати агенту автономію, але в межах ризикових гейтівНизькоризикові кроки автоматизуються, високоризикові — проходять через людину.

Не підходить

СитуаціяЧому Human-in-the-Loop Architecture не підходить
One-shot read-only сценарій без змін стану і високого ризикуГейт погодження додасть затримку і складність без практичної користі.
Система має відповідати за секунди і не може чекати на людинуАсинхронне погодження людиною може порушити вимоги до швидкості відповіді.

У таких випадках часто достатньо policy-gates без ручного погодження:

PYTHON
decision = policy.check(action, context)
if decision["mode"] == "allow":
    execute(action)

Типові проблеми та відмови

ПроблемаЩо відбуваєтьсяЯк запобігти
Черга погодженьЧерга погоджень росте, а run-и зависаютьRisk-tier правила, SLA на рев'ю, черга пріоритетів і fallback-процес
Сліпе погодженняРев'юер схвалює дії без реальної перевіркиОбов'язкові reason_code, короткий чеклист і вибірковий post-audit
Approval fatigueРев'юери механічно тиснуть approve через надмірну кількість заявокКращий risk-tiering, batching low-risk кейсів і quality thresholds перед ескалацією
Неповний контекст у заявціЛюдина не бачить ризики і приймає випадкове рішенняСтандартизований approval payload: actor, action, resource, risk, budget, diff
Зависання після timeoutСистема чекає погодження занадто довгоЯвний timeout + default action: deny або safe_fallback
Непослідовні рішення різних рев'юерівОднакові кейси обробляються по-різномуPlaybook, шаблони рішень і калібрування політик на основі логів

Стабільний HITL-шар потребує не лише кнопки "Approve", а й чіткої операційної дисципліни.

Як поєднується з іншими патернами

Human-in-the-Loop Architecture працює як керований контрольний шар поверх базових механізмів виконання.

  • Agent Runtime — Runtime веде цикл, а HITL вирішує, які кроки потребують людини.
  • Tool Execution Layer — після погодження дія виконується через контрольований tool gateway.
  • Policy Boundaries — policy rules визначають, коли саме вмикається require_approval.
  • Hybrid Workflow Agent — HITL часто вбудовується у workflow commit-кроки для високого ризику.
  • Orchestration Topologies — у multi-agent системах HITL застосовується до окремих гілок або фінального merge-кроку.

Інакше кажучи:

  • Policy Boundaries визначають що ризикове
  • Human-in-the-Loop Architecture визначає як саме людина підтверджує або блокує цю дію

Чим це відрізняється від Supervisor Agent

Supervisor AgentHuman-in-the-Loop Architecture
Хто приймає критичне рішенняПереважно сам supervisor-агент за правиламиЛюдина-рев'юер у точках require_approval
РівеньПоведінковий патерн агентаАрхітектурний контрольний шар процесу виконання
Що даєАвтоматизований policy-нагляд між крокамиФормальне людське підтвердження для ризикових дій
Типовий ризикПомилка моделі в оцінці політикиОпераційна затримка через чергу погоджень

Supervisor Agent і HITL можна поєднувати: supervisor робить попередній фільтр, а людина погоджує лише найризиковіші кроки.

Коротко

Коротко

Human-in-the-Loop Architecture:

  • ставить людину в критичні точки виконання
  • блокує небезпечні дії до явного погодження
  • фіксує рішення, причину і результат в аудиті
  • балансує автоматизацію і відповідальність у production

FAQ

Q: Чи означає HITL, що кожну дію має підтверджувати людина?
A: Ні. Практичний підхід: тільки high-risk дії йдуть на погодження, решта виконується автоматично.

Q: Що краще для fail-safe: timeout = allow чи timeout = deny?
A: Для ризикових write-дій зазвичай використовують fail-closed: timeout => deny або безпечний fallback.

Q: Чи можна в HITL не лише схвалювати, а й змінювати дію?
A: Так. Режим revise дозволяє людині підтвердити дію з обмеженнями (сума, сегмент, scope).

Q: Коли краще обрати Supervisor Agent замість HITL?
A: Коли потрібен швидкий автоматизований контроль політик без ручного втручання на кожному ризиковому кроці.

Що далі

Людина в контурі зменшує ризик. Наступний крок — зрозуміти, як це поєднати з технічними межами системи:

  • Policy Boundaries — які дії дозволяти, блокувати або відправляти на approval.
  • Hybrid Workflow Agent — де працює deterministic workflow, а де — bounded agent-рішення.
  • Orchestration Topologies — як розкласти рішення між кількома агентами.
  • Production Stack — як зібрати це в керовану production-архітектуру.
⏱️ 8 хв читанняОновлено 8 березня 2026 р.Складність: ★★★
Інтегровано: продакшен-контрольOnceOnly
Додай guardrails до агентів з tool-calling
Зашип цей патерн з governance:
  • Бюджетами (кроки / ліміти витрат)
  • Дозволами на інструменти (allowlist / blocklist)
  • Kill switch та аварійна зупинка
  • Ідемпотентність і dedupe
  • Audit logs та трасування
Інтегрована згадка: OnceOnly — контрольний шар для продакшен агент-систем.
Автор

Цю документацію курують і підтримують інженери, які запускають AI-агентів у продакшені.

Контент створено з допомогою AI, із людською редакторською відповідальністю за точність, ясність і продакшн-релевантність.

Патерни та рекомендації базуються на постмортемах, режимах відмов і операційних інцидентах у розгорнутих системах, зокрема під час розробки та експлуатації governance-інфраструктури для агентів у OnceOnly.