temporality
ENИзменить страницу↗
Работа с агентом

Формы и подтверждения

Как агент задаёт человеку структурированные вопросы: карточки в чате, кнопка в мессенджере, форма в браузере по одноразовой ссылке — и как всё это валидируется.

Когда агенту не хватает данных или нужно подтверждение значимого действия, он задаёт вопрос человеку (ask_human). Вопрос доезжает туда, где человеку удобно: в чат карточкой с полями, в мессенджер кнопкой, в крайнем случае — текстом со ссылкой.

#Откуда берутся формы

Агент описывает вопрос декларативно — JSON-схемой полей:

{
  "question": "Параметры релиза billing-service?",
  "schema": {
    "type": "object",
    "properties": {
      "channel":  { "type": "string", "enum": ["canary", "stable"], "title": "Канал" },
      "version":  { "type": "string", "minLength": 5, "title": "Версия" },
      "window":   { "type": "array", "minItems": 2, "maxItems": 2,
                    "items": { "type": "string", "format": "date" }, "title": "Окно" },
      "confirm":  { "type": "boolean", "title": "Подтверждаю выкат" }
    },
    "required": ["channel", "version", "confirm"]
  }
}

Поддерживаются: строки (с перечнем вариантов, длиной, регуляркой), целые и дробные числа с границами, булевы флаги, массивы (мультивыбор и диапазоны дат), форматы даты/времени/почты/ссылки и маскированный ввод. Лимиты — 20 полей и 8 КБ на схему: форма — это вопрос человеку, а не база данных.

Сервер проверяет ответ по той же схеме до возобновления задачи — некорректное значение не возобновит работу, а вернётся агенту как ошибка.

#Где человек видит форму

Во встроенном чате — карточка прямо в диалоге: варианты кнопками, свободный ответ, полный набор полей для форм. Появляется в момент вопроса, закрывается автоматически при ответе.

Вопрос агента в чате

В Matrix — HTML-карточка: таблица полей с форматами и обязательностью, ответ текстом в комнате по шаблону поле: значение, либо кнопка «Заполнить форму».

В Telegram — вопрос и inline-кнопка «Заполнить форму»: тап открывает форму в браузере.

Универсальный путь — по кнопке из любого мессенджера открывается хостед-форма: отдельная минималистичная страница по одноразовой ссылке. Ей не нужен аккаунт в системе — ссылка и есть доступ, ровно к одному вопросу, на ограниченный срок. Заполнил, отправил, закрыл.

Ссылки выдаются с сроком жизни и умирают вместе с вопросом: отвечено, отменено или истекло — форма больше не принимает. Один вопрос — одна отправка.

#Что происходит после ответа

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

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

#Если оценочный контур не готов

Применение предложений эволюции агента охраняется оценочным гейтом (см. Эволюция и качество). Если у агента ещё нет оценочных кейсов, применить можно с письменным обоснованием — обход фиксируется в журнале аудита. Это осознанный баланс: человек прочитал предложение и берёт решение на себя, система лишь требует оставить след.