Как агент отвечает по вашим данным
Агент не «выучивает» ваши документы и не хранит их в голове. При каждом вопросе он заново ищет подходящий кусок текста и отвечает строго по нему. Понимание этого механизма объясняет почти всё поведение агента — и почему он иногда не находит очевидное.
Что происходит при загрузке документа
Документ разбивается на фрагменты — куски по несколько абзацев. Фрагменты делаются с нахлёстом: конец одного повторяет начало следующего. Это нужно, чтобы факт, оказавшийся на стыке, не разрезало пополам и он нашёлся целиком.
Каждый фрагмент превращается в набор чисел, описывающий его смысл. Близкие по смыслу тексты дают близкие наборы — так поиск находит «сколько стоит почистить зубы» по фрагменту про «гигиеническую чистку», хотя ни одно слово не совпало.
Что происходит во время звонка
- Клиент задаёт вопрос, речь переводится в текст.
- Вопрос превращается в такой же набор чисел.
- Платформа находит несколько ближайших фрагментов из вашей базы.
- Найденные фрагменты вместе с вопросом уходят в языковую модель с жёсткой установкой: отвечать только по этому тексту.
- Модель формулирует ответ, он озвучивается.
Ключевой момент — четвёртый. Модель не отвечает «из головы»: ей передают ваши фрагменты и запрещают выходить за их пределы. Поэтому агент называет ваши цены, а не средние по рынку.
Заземление и защита от выдумок
Ответ, построенный на найденном фрагменте, называется заземлённым — у него есть источник, и в карточке звонка видно, какой именно документ его дал.
Если подходящих фрагментов не нашлось или они слишком далеки по смыслу, агент не станет сочинять. Он скажет, что не может ответить, и — если так настроен сценарий — предложит перевести на человека.
Строгость этой проверки регулируется в ноде «Ответ по базе знаний». Выше строгость — меньше выдумок, но больше отказов на пограничных вопросах. Ниже — наоборот. Подробности — Нода «Ответ по базе знаний».
Что из этого следует практически
Поиск идёт по смыслу, а не по словам. Не нужно перечислять в документе все возможные формулировки вопроса. Нужно, чтобы факт был написан ясно и полно.
Фрагмент должен быть самодостаточным. Агент видит найденный кусок, а не весь документ. Если в прайсе написано «Чистка — 4500», а слово «зубов» встречается только в заголовке страницей выше, фрагмент про чистку окажется бессмысленным.
Плохо:
Терапия Лечение — от 3500 Пломба — от 4200
Хорошо:
Терапия Лечение кариеса — от 3500 ₽ Установка пломбы — от 4200 ₽
Свежесть базы — ваша ответственность. Агент отвечает по тому, что загружено. Подняли цены — обновите документ, иначе агент месяц будет называть старые.
Дубли вредят. Если цена услуги указана в трёх документах по-разному, агент найдёт любой из них. Один факт — одно место.
Чего механизм не умеет
Считать. «Сколько будет три чистки со скидкой 10%» — не его задача. Он находит и пересказывает, а не вычисляет.
Сопоставлять разбросанное. Если чтобы ответить, нужно свести данные из пяти разных документов, ответа не будет. Сведите их в один заранее.
Читать таблицы со сложной вёрсткой. Многоуровневые шапки, объединённые ячейки, сноски — при извлечении текста это превращается в кашу. Прайс лучше оформлять простыми строками «услуга — цена».
Понимать картинки. Прайс скриншотом или сканом — это для платформы пустая страница. Нужен текстовый документ.
Куда дальше
- Чем наполнить базу знаний — какие документы загружать.
- Импорт сайта — как работает обход страниц.
- Агент отвечает «не знаю» — разбор причин.