Агент отвечает по-разному, потому что он не выбирает единственно верный ответ из справочника, а составляет текст слово за словом, каждый раз беря следующее слово из распределения вероятностей. Два одинаковых вопроса поэтому почти всегда дают два разных по формулировке ответа. Это не сбой и не признак плохой настройки — это устройство инструмента.
Проблема начинается там, где разными оказываются не слова, а смысл: вчера агент назвал срок доставки три дня, сегодня — пять. Разница между этими двумя случаями и есть предмет разговора с подрядчиком, потому что первый чинить не надо, а второй чинится вполне конкретными инженерными мерами и измеряется числом.
Ниже — механика разброса простыми словами, четыре источника нестабильности, которые остаются даже при самых жёстких настройках, четыре способа сузить разброс до рабочего уровня, расчёт стоимости замера на 150 вопросах и формулировка для критериев приёмки, после которой спор «он отвечает по-разному» решается за час, а не за неделю.
Механика разброса без математики
Модель на каждом шаге оценивает, каким может быть следующее слово, и получает не одно слово, а список кандидатов с вероятностями. Дальше происходит выбор. Если всегда брать самого вероятного кандидата, текст получается предсказуемым, но сухим и склонным зацикливаться. Если иногда брать второго или третьего, текст живее — и именно здесь возникает разброс.
Настройка, которая определяет, насколько охотно модель берёт менее вероятных кандидатов. Ближе к нулю — почти всегда самый вероятный вариант, ответы становятся однообразными и сухими. Выше — больше вариативности и больше риска, что модель уйдёт в сторону. Что спросить у подрядчика: «какое значение стоит у нас, кто и когда его менял и записан ли этот параметр в приёмку».
Для делового агента температуру ставят низкой — от этого выигрывают и точность, и предсказуемость, а вариативность формулировок в ответе клиенту никакой ценности не несёт. Но и нулевая температура не даёт воспроизводимости: она убирает случайность выбора внутри модели и не трогает всё, что происходит вокруг неё.
Схема в чертёжном стиле. Слева фраза-заготовка «Срок доставки составляет...», справа вертикальный список кандидатов следующего слова с полосками вероятностей: «три» — длинная полоска, «от» — средняя, «обычно» — короткая. Под списком горизонтальный ползунок, подписанный «температура: 0 — всегда верхний кандидат, выше — иногда нижние». Ниже подпись: «выбор повторяется на каждом слове, расхождения накапливаются». Все надписи по-русски.
Что меняется даже при нулевой температуре
Подрядчик, который обещает полную воспроизводимость «после выставления температуры в ноль», либо не сталкивался с эксплуатацией, либо упрощает. Четыре источника разброса лежат вне модели и работают независимо от её настроек.
| Источник | Что происходит | Как это выглядит для владельца |
|---|---|---|
| Обновление версии модели | Поставщик выкатывает новую версию, поведение меняется на части запросов | «Всё работало полгода, а в понедельник поехало» — без единой правки с вашей стороны |
| Порядок найденных фрагментов | Поиск по базе знаний возвращает те же документы в другом порядке; модель опирается на верхние | Ответ собран из другого пункта регламента, оба формально существуют |
| Длина истории диалога | Ранние реплики вытесняются из контекста по мере роста переписки | В начале диалога агент помнит условие, к пятнадцатой реплике — уже нет |
| Кэш | Часть запросов отдаётся из сохранённого ответа, часть считается заново | Один и тот же вопрос от двух сотрудников даёт разные ответы в одну минуту |
Он приходит без предупреждения и затрагивает сразу весь поток. Именно поэтому версия модели фиксируется в договоре как параметр эксплуатации, а её смена оформляется как работа: прогон контрольного набора до и после, сравнение долей расхождений, право отката на прежнюю версию. Механику такого прогона мы разбирали в материале про регресс-набор при обновлении.
Четыре способа сузить разброс
Ни один из них не убирает разброс полностью, и подрядчик, обещающий обратное, продаёт вам будущий конфликт. Вместе они сужают его до уровня, на котором расхождения перестают доходить до клиента.
- 1Жёсткий формат ответа
Агент возвращает не свободный текст, а заполненную структуру: поле «ответ», поле «источник», поле «уверенность». Формат проверяется до показа человеку, и всё, что в него не уложилось, уходит на подтверждение. Формулировки внутри полей всё ещё различаются, но набор фактов — уже нет.
- 2Ответ только по найденному фрагменту со ссылкой
Модель не пересказывает то, что помнит, а отвечает по конкретному куску документа и указывает, по какому именно. Это одновременно убирает большую часть выдумок и делает расхождения видимыми: если два ответа разные, сразу понятно, что нашлись разные источники, а не «модель передумала».
- 3Детерминированный слой правил для типовых вопросов
Часы работы, статус заказа, реквизиты, стоимость по прайсу — это данные, а не рассуждение: они отдаются правилом, минуя модель. Ответ становится одинаковым по определению, а заодно дешевле и быстрее. Как разделить поток между правилами и моделью, разобрано в статье про гибридную архитектуру.
- 4Фиксация версии модели
В договоре и в настройках указывается конкретная версия, а не «актуальная модель поставщика». Обновление становится плановой работой с прогоном контрольного набора, а не сюрпризом понедельника.
Сравнение двух колонок. Левая «Свободный ответ»: три разных по длине абзаца на один вопрос, подпись «сравнивать можно только на глаз». Правая «Структурированный ответ»: три одинаковые карточки с полями «ответ: 3 рабочих дня», «источник: регламент доставки, п. 2.4», «уверенность: высокая», подпись «расхождение видно по полю, а не по тексту». Внизу общая подпись: «формулировки разные, факты одинаковые». Чертёжный стиль, надписи по-русски.
Как замерить разброс, а не спорить о нём
Один запрос, заданный дважды, не доказывает ничего — ни подрядчику, ни вам. Замер делается прогоном набора типовых вопросов дважды подряд с подсчётом доли ответов, разошедшихся по смыслу, а не по буквам. Рабочий размер набора — 100–200 вопросов; если у вас уже собран набор для приёмки качества, для этого замера достаточно его подмножества, а сам порядок приёмки описан в материале про метрики качества ответов бота.
Два ответа на один вопрос считаются разошедшимися по смыслу, если по ним клиент совершит разные действия. «Три рабочих дня» и «доставим за три рабочих дня» — одно и то же, расхождения нет. «Три дня» и «от трёх до пяти дней» — расхождение: первое обещание вы выполните, а второе клиент запомнит по нижней границе. Что спросить у подрядчика: «дайте письменное определение расхождения и десять примеров пар, которые вы считаете совпадающими».
Договариваться об этом определении надо до замера, а не после: иначе сверка превращается в спор о вкусах, и каждая сторона считает свою долю. Дешевле всего разобрать на живых примерах десяток пар ответов и зафиксировать решение по каждой — эти десять пар потом работают эталоном для всего набора.
Ступенчатая диаграмма из пяти столбцов, показывающая долю смысловых расхождений на наборе из 150 вопросов: «исходно 12 %», «жёсткий формат 9 %», «ответ по источнику 6 %», «слой правил 4 %», «фиксация версии 3 %». Горизонтальная штриховая линия на уровне 5 % подписана «порог приёмки». Последние два столбца ниже линии и выделены. Ось значений в процентах, подписи по-русски.
Что писать в критерии приёмки
Формулировка «агент отвечает одинаково на одинаковые вопросы» непроверяема и потому бесполезна: она проиграет на первом же примере. Проверяемая формулировка состоит из четырёх частей и умещается в абзац договора; общие принципы наших обязательств собраны на странице гарантий.
- Что меряем. Доля смысловых расхождений при повторном прогоне согласованного набора из 150 вопросов. Определение смыслового расхождения приложено к договору отдельным пунктом.
- Какой порог. Не выше 5 % на приёмке. Для внутренних задач порог мягче, для ответов клиенту с обязательствами по срокам и ценам — жёстче, вплоть до вывода таких вопросов на слой правил.
- При каких условиях. Зафиксированная версия модели и зафиксированный состав базы знаний. Замер при других вводных не считается.
- Кто и когда меряет. Замер на приёмке и повторный замер при каждом обновлении версии модели или значимой правке базы знаний, силами подрядчика, с передачей вам протокола и самого набора вопросов.
Когда разброс не надо чинить
Борьба с нестабильностью стоит денег и, доведённая до крайности, портит продукт. Три ситуации, в которых её лучше не начинать.
- Расходятся формулировки, а не факты. Если клиент по обоим ответам сделает одно и то же, разброс безвреден. Требование дословного совпадения приводит к шаблонным ответам, которые сотрудники начинают переписывать вручную, — и экономия исчезает.
- Задача по природе вариативна. Черновик письма, варианты заголовков, формулировка ответа на нестандартную жалобу — здесь разброс и есть польза. Правильный контур тут не воспроизводимость, а подтверждение человеком.
- Поток меньше 500 обращений в месяц. Замер за 12 615 ₽ и последующие доработки не окупятся: на таком объёме дешевле выборочно проверять ответы вручную и править базу знаний по мере обнаружения.
И главное, что стоит запомнить перед разговором с подрядчиком: воспроизводимость покупается не выбором модели, а архитектурой вокруг неё. Типовые вопросы уходят на правила, остальные отвечаются по найденному источнику в жёстком формате, версия зафиксирована, набор вопросов лежит у вас. Если всё это сделано, ответ «модель иногда отвечает по-разному» перестаёт быть проблемой и становится строчкой в протоколе с числом рядом. Собранный по такой схеме контур мы описали на странице чат-бота поддержки.
Требовать от модели одинаковых слов бессмысленно. Требовать одинаковых фактов — можно, и это записывается числом.
