О продукте
SayIt Agent Engine
Голосовой и текстовый агент поверх того сайта или приложения, которое у вас уже работает. Он не заменяет его и не требует переписывать сервисы: он превращает фразу клиента в вызов ваших существующих эндпоинтов — с проверками, подтверждением и журналом.
Что он делает
Принимает обращение на естественном языке — голосом или текстом. Относит его к одному действию из каталога, который заполнили вы. Достаёт из фразы значения параметров, недостающие обязательные спрашивает, проверяет политики и лимиты, спрашивает подтверждение и вызывает ваш API. Всё, что при этом произошло, записывает в неизменяемый журнал.
Ключевое ограничение. Модель не сочиняет операции и не выбирает адреса. Она делает единственное: относит фразу к одному из действий закрытого каталога. Ответ, которого в каталоге нет, отбрасывается; при низкой уверенности клиенту показывается меню вместо догадки.
Путь запроса
- Речь в текст. Распознавание работает на вашем оборудовании. Числа, продиктованные словами, разбирает отдельный разборщик: «пятьдесят один двадцать восемь» — это 5128, а не «50 1 28».
- Определение действия. Сначала прямые совпадения с примерами из каталога, затем модель — и только в пределах каталога.
- Сбор параметров. Каждый параметр ищется в шести источниках по правилам, заданным администратором.
- Уточнение. Обязательный параметр не найден — агент задаёт вопрос, заданный администратором, и ждёт ответа. Не больше трёх кругов.
- Проверки. Политики, лимиты, белый список, аварийный выключатель.
- Подтверждение. До явного «да» состояние не меняется.
- Вызов и запись. Цепочка вызовов к вашим эндпоинтам, результат клиенту, полная трасса в журнал.
Откуда берутся значения
| Источник | Что это | Пример |
|---|---|---|
| Из фразы | Значение прозвучало в обращении | «на 4355» → cardRef |
| Из разговора | Названо на предыдущем шаге сессии | «а теперь разблокируй её» |
| Из профиля | Данные клиента, известные вашей системе | его основной счёт, его адрес доставки |
| Из предыдущего вызова | Ответ первого запроса цепочки | идентификатор карты по её последним цифрам |
| Константа | Задана в конструкторе | код канала обслуживания |
| Вычисление | Выводится из других значений | «за неделю» → две даты |
Распознаватели значений
Для каждого параметра администратор выбирает способ распознавания: последние четыре цифры карты, полный номер, счёт, сумма, валюта, телефон, количество, дата, перечисление из списка, выражение или свободный разбор моделью. Смысл в отсечении: значение, не прошедшее свой распознаватель, дальше не идёт.
Это не теоретическая осторожность. Без такой проверки ответ «не помню» на вопрос о номере карты подставлялся в адрес запроса как есть — распознаватель отвергает его, и агент переспрашивает.
Конструктор действий
Действие описывается цепочкой вызовов к вашим эндпоинтам. Для каждого параметра задаются:
- обязателен он или нет — необязательный просто не подставляется;
- описание — что это за значение;
- комментарий — заметка для того, кто будет править это через полгода;
- вопрос — что агент спросит, если значения не окажется;
- распознаватель и, при необходимости, список допустимых значений или выражение.
Всё это редактируется в интерфейсе. Выкладка новой версии приложения для добавления операции не нужна.
Импорт сайта
Каталог не обязательно заполнять руками. Дайте движку ссылку — он откроет сайт в браузере, пройдёт по разделам, найдёт формы и запишет, какими вызовами страницы получают данные. Из этого собираются готовые действия с примерами фраз: остаётся проверить и поправить, а не описывать всё с нуля.
По умолчанию обход только смотрит: переходит по ссылкам и заполняет поисковые формы. Нажатие кнопок, которые меняют данные, включается отдельной галочкой — прогон идёт по живому сайту, и «Оплатить» на нём означает ровно то, что написано.
Журнал
Записи связаны хеш-цепочкой: каждая содержит хеш предыдущей. Удалить или подменить строку в середине нельзя — расходится вся цепочка после неё, и это видно проверкой.
В записи: исходная фраза, выбранное действие и уверенность, каждое значение с указанием источника, запросы к вашим сервисам и их ответы, кто и когда подтвердил операцию. Карты, счета, телефоны и почта маскируются.
Что нужно для развёртывания
- Контур. Сервер внутри вашей сети. Обращение во внешний облачный сервис заблокировано в коде: приложение не стартует, если адрес инференса не принадлежит внутренней сети.
- Оборудование. Видеокарта под модель распознавания намерений и под речь. Конкретная конфигурация зависит от ожидаемого числа обращений в сутки — считаем под ваши цифры.
- Хранилище. PostgreSQL: каталог действий, сессии, журнал, кеш.
- Интеграция. Описание эндпоинтов, которые агент будет вызывать, и способ аутентификации к ним.
Чего он не делает
Не принимает решений за вас: политики, лимиты и права остаются вашими и применяются к каждому вызову. Не выполняет операцию без подтверждения. Не работает с действиями, которых нет в каталоге. Не отправляет данные наружу.
Устройство изнутри — по шагам, с трассой вызовов и журналом. Или короткая презентация на двенадцать слайдов.