Перейти к основному содержимому

Утверждения

HITL-процесс

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

Когда срабатывает HITL

Ответ уходит на HITL, если выполнено хотя бы одно условие:

  1. Низкая уверенность — RAG confidence < 0.7.
  2. Триггерное слово — сообщение пользователя или ответ содержит настроенное триггерное слово (например, конфлікт, суд, штраф, звільнення, lawsuit, termination).
  3. Новое взаимодействие — сотрудник впервые попал на конкретный intent.
  4. Доверие ещё не набрано — intent не дошёл до порога автономности.
  5. Стохастический сэмплинг — даже автономные intents отправляют часть ответов (по умолчанию 10%) на HITL для текущего контроля качества.
  6. Обнаружена инъекция — в сообщении пользователя или в RAG-контексте найдены паттерны prompt injection.

Поток статусов утверждения

pending → approved   (send to user)
→ rejected (discard, log reason)
→ edited (content modified)
→ escalated (routed to higher role)

Действия

Утвердить

Утверждает ответ AI как есть. Ответ ставится в очередь на отправку в канал.

POST /api/v1/approvals/:id/approve

Утвердить с правкой

Утверждает изменённую версию ответа. editedContent заменяет оригинал.

POST /api/v1/approvals/:id/approve
Body: { "editedContent": "Modified response text" }

Отклонить

Отклоняет ответ — он не отправляется. Утверждающий может приложить комментарий с причиной.

POST /api/v1/approvals/:id/reject
Body: { "reason": "Inaccurate information about policy X" }

Эскалировать

Перенаправляет утверждение на пользователя с более высокой ролью (например, с approver на dept_head).

POST /api/v1/approvals/:id/escalate
Body: { "escalatedToId": "<user-id>", "reason": "Legal question, needs dept head review" }

Обновление матрицы доверия

Когда утверждение approved:

  • successfulCount intent-а увеличивается.
  • Если successfulCount >= threshold (по умолчанию 5), isAutonomous становится true.
  • Следующие сообщения с этим intent могут обходить HITL (с учётом samplingRate).

Подробности — в разделе Auto-Bypass.

Просмотр утверждения

Детали утверждения включают:

  • Исходный ответ AI.
  • Использованные RAG-источники (чанки, документы, скоры).
  • Классифицированный intent.
  • Confidence score.
  • Контекст разговора.
GET /api/v1/approvals/:id

Журнал аудита

Все действия по утверждениям пишутся в систему аудита:

  • действия approve, reject, escalate;
  • актор (утверждающий пользователь);
  • timestamp;
  • любые правки и комментарии.

Пакетное утверждение

Обрабатывайте несколько утверждений одним вызовом API — удобно в пиковые часы.

Эндпоинт

POST /api/v1/approvals/batch

Запрос

{
"decisions": [
{ "approvalId": "approval-1", "action": "approve" },
{ "approvalId": "approval-2", "action": "approve", "editedContent": "Modified response" },
{ "approvalId": "approval-3", "action": "reject", "reason": "Inaccurate" }
]
}

Ограничения

  • Максимум 50 решений на запрос.
  • Каждое решение обрабатывается независимо — возможны частичные сбои.
  • Требуется право canApprove.

Ответ

Возвращает результаты по каждому решению со статусом успех/ошибка:

{
"results": [
{ "approvalId": "approval-1", "status": "success" },
{ "approvalId": "approval-2", "status": "success" },
{ "approvalId": "approval-3", "status": "success" }
]
}

Сценарий использования

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


Автоматический обход (матрица доверия)

Матрица доверия даёт AI-ассистенту постепенную автономию. По мере того как утверждающие проверяют ответы по конкретным intents, система учится — какие intents можно безопасно отправлять автоматически.

Как это работает

Модель матрицы доверия (IntentTrust)

У каждой комбинации namespace + intent есть своя запись доверия:

ПолеПо умолчаниюОписание
successfulCount0Количество утверждённых ответов
threshold5Сколько approvals нужно для автономности
isAutonomousfalseВключена ли автоматическая отправка
samplingRate0.1Доля ответов, которые всё равно уходят на HITL (10%)

Последовательность решения об автономности

1. Message received
2. Intent classified (vector similarity)
3. Check confidence fallback:
a. Confidence < 0.7 → FORCE HITL
b. Trigger word detected → FORCE HITL
c. First interaction for this intent → FORCE HITL
4. If fallback triggered → create Approval, wait for human
5. Check trust matrix:
a. Not autonomous → HITL
b. Autonomous + random() > samplingRate → AUTO-SEND
c. Autonomous + random() <= samplingRate → HITL (sampling)

Fallback по уверенности

Реализация: src/channels/bypass.ts.

Три условия всегда отправляют на HITL, даже для автономных intents:

  1. Низкая уверенность — RAG confidence < 0.7, система не уверена в ответе.
  2. Триггерные слова — настраиваемые ключевые слова для чувствительных тем (задаются через INTENT_TRIGGER_WORDS).
  3. Новое взаимодействие — первое сообщение сотрудника, классифицированное этим intent.

Стохастический сэмплинг

Даже если intent полностью автономный, часть ответов (по умолчанию 10%) случайно уходит на HITL. Это даёт:

  • постоянный контроль качества;
  • обнаружение дрейфа;
  • сигнал для continuous training.

samplingRate настраивается отдельно для каждого intent.

Пример роста доверия

Intent: "leave_policy"
Namespace: "hr"

Day 1: 0/5 approved → HITL for all
Day 2: 3/5 approved → HITL for all
Day 3: 5/5 approved → autonomous, 90% auto-send
Day 30: 150 total → autonomous, 90% auto-send (with 15 sampled HITL reviews)

API

Просмотр матрицы доверия

GET /api/v1/intents/trust?namespaceId=<id>

Возвращает все intent trust-записи для namespace. Требуется право canManageNamespaces.

Сбросить доверие

Чтобы выключить автономность для intent, обновите trust-запись: поставьте isAutonomous: false и successfulCount: 0 через БД (API-эндпоинта пока нет).

Настройка

Триггерные слова задаются через переменную окружения:

INTENT_TRIGGER_WORDS=конфлікт,суд,штраф,звільнення,скарга,позов,conflict,lawsuit,fine,termination,complaint