Как мы оцениваем разговор голосового агента с имитируемым звонящим

Polygon, наш испытательный стенд, оценивает агента по целым разговорам: имитируемые звонящие, восемь критериев с весами, жёсткие шлюзы и пробы поведения.

Исследования

8оцениваемых критериев, веса подобраны для телефонного агента

Polygon — испытательный стенд, на котором держится «Симуляция диалогов» в тарифе Pro. Он создаёт имитируемого звонящего, оценивает каждый разговор по восьми критериям, применяет жёсткие шлюзы, запускает пробы поведения и находит первую реплику, на которой две версии агента расходятся. Краткое описание есть в блоке о Polygon на странице «Технологии».

Это заметка о методе. Она описывает протокол и не приводит измеренных результатов. Метод изложен во внутренних статьях, а рубрика версионируется (v1 и v2).

Коротко: восемь оцениваемых критериев с весами, подобранными для телефонного агента; три жёстких шлюза, которые проваливают разговор при любой оценке; шесть типов имитируемых звонящих, у каждого фиксированный набор фактов; четыре уровня анализа промпта, от дешёвых правил до судьи. Шум распознавания и семплирование используют фиксированные зёрна, поэтому проваленный запуск воспроизводится реплика в реплику.

Задача

Голосовой агент может правильно ответить на каждый отдельный вопрос и всё равно провалить звонок. Он забывает цель, благодарит звонящего и вешает трубку, обещает то, чего не может выполнить, или четыре раза повторяет «Повторите, пожалуйста». Оценка ответов по одному этого не видит, поэтому мы оцениваем разговор целиком.

Вторая задача: сравнение. Когда мы меняем промпт, модель или параметр семплирования, нам нужно знать, стал ли агент лучше, на каком типе звонящих и на какой реплике поведение впервые изменилось. Одно среднее значение этого не покажет.

Конвейер

сценарий → имитируемый звонящий → разговор с заглушками инструментов и шумом распознавания → детерминированные проверки → судья → пробы поведения → сравнение

Каждый этап описан ниже. Мы держим этапы раздельно, чтобы результат можно было проследить до этапа, который его дал.

Имитируемые звонящие с эталонными фактами

Агента проверяют против модели, играющей персону. У персоны есть:

  • Тип: сотрудничающий, занятой, недоверчивый, растерянный, агрессивный или разговорчивый.
  • Задуманный исход: успех, отказ, перезвонить или перевести.
  • Сложность: от 1 до 5.
  • Эталонные факты: то, что знает звонящий. По ним судья решает, достиг ли агент цели и не выдумал ли он что-нибудь.

Polygon создаёт звонящих по собственному промпту агента, по одной персоне на запрос, чтобы единичный сбой не утащил за собой всю партию. Каждый звонящий привязан к версии промпта, по которой он создан. Когда промпт меняется, Polygon помечает звонящих устаревшими и создаёт их заново.

Звонящие говорят как люди по телефону: короткими фразами, с перебиваниями и отступлениями.

Шум распознавания нарочно

Агент, безупречный на чистом тексте, может сломаться на том, что отдаёт распознавание в настоящем звонке. Polygon искажает текст звонящего до того, как его увидит агент, одной ручкой интенсивности от 0 до 1:

Искажения, которые Polygon применяет к тексту звонящего.
Искажение Пример
Пропавшие слова слово исчезает
Числа, прочитанные по цифрам «пятьдесят» превращается в «пять ноль»
Похожие по звучанию слова «код» превращается в «кот»
Вставки в начале «э-э», «хм», «алло?»

Polygon задаёт зерно искажения по разговору и номеру реплики, поэтому проваленный разговор можно воспроизвести реплика в реплику.

Заглушки инструментов с отказами

Агенты вызывают инструменты: календарь, CRM, перевод звонка. Polygon заменяет их заглушками, которые возвращают фиксированные ответы, ответы по шаблону или по правилам, либо хранят состояние между вызовами. Заглушка может добавлять задержку и вносить ошибки, так что агента проверяют и на медленной или сбойной CRM, и на исправной.

Рубрика и сводная оценка

Модель-судья читает весь разговор, эталонные факты звонящего и трассу вызовов инструментов. Она оценивает восемь критериев от 1 до 5 и для каждого приводит доказательство из стенограммы.

Восемь критериев судьи и их веса в сводной оценке.
Критерий Вес
Достижение цели 25
Следование инструкциям 15
Качество работы с инструментами 15
Фактическая точность 10
Качество диалога 10
Устойчивость 10
Соблюдение безопасности 10
Персона и тон 5

Сводная оценка — это взвешенное среднее нормированных оценок от 0 до 100: composite = Σ weight × (score − 1) / 4. Все единицы дают 0, все пятёрки дают 100, все тройки дают 50. Разговор проходит при 75 и выше и получает предупреждение начиная с 50. Веса говорят о том, для чего нужен телефонный агент: достижение цели весит в пять раз больше, чем тон.

Четыре правила сохраняют честность оценки:

  • Отсутствующая оценка равна минимуму, а не среднему. Неполное суждение не может польстить агенту.
  • Нечитаемая оценка не равна 1. Если судья возвращает оценку в форме, которую Polygon не может прочитать, она считается «не оценённой» и ничего не запускает, поэтому не может провалить разговор случайно. В результате стоит флаг, чтобы никто не принял неполную сводную оценку за полную.
  • Повторы берут медиану. Судья может отработать k раз; Polygon использует медиану по каждому критерию, а при чётном k усредняет два средних значения.
  • Оценки сравниваются только внутри одной версии рубрики. Изменение весов или критериев означает новую версию, и экран сравнения отказывается помещать две версии на один график.

Жёсткие шлюзы

Некоторые провалы нельзя усреднять. Какой бы ни была сводная оценка, вердикт провал, если:

  • в речи агента появилась запрещённая фраза;
  • критерий безопасности получил 1 (и был оценён);
  • вызов инструмента с неверными аргументами привёл к ответу звонящему. Этот шлюз добавила рубрика v2; разговоры v1 сохраняют прежний вердикт.

Пробы поведения

Рубрика говорит, насколько хорош разговор в целом. Проба задаёт один вопрос «да или нет» об одном поведении: переспросил ли агент после странного ответа, назвал ли причину отказа, дал ли обещание, которого не мог выполнить.

  • Ответы: да, нет или неприменимо. Polygon не включает неприменимые ответы в знаменатель и никогда не считает их нулём.
  • Полярность: для желаемого поведения хорошо да, для ограничителя хорошо нет. Сообщаемая величина — соответствие, доля применимых разговоров, в которых агент поступил правильно.
  • Отдельный проход: пробы выполняются со своим промптом и не могут изменить сводную оценку или вердикт. Если просить в одном вызове и откалиброванную оценку от 1 до 5, и двоичный факт, они начнут влиять друг на друга.
  • Интервалы: у каждой доли есть доверительный интервал Уилсона 95%, поэтому «3 из 4» показывается как широкий диапазон вокруг 75%.
  • Фиксированная формулировка: Polygon сравнивает пробу между запусками, только пока её формулировка не менялась (он проверяет хеш содержимого), поэтому переписанный вопрос не сдвинет тренд незаметно.
  • Дёшево добавлять: мы свободно добавляем пробы как гипотезы о поведении. Те, что оказываются важными, переходят в рубрику или становятся шлюзом.

Сравнение двух версий

Экран сравнения принимает две или больше конфигураций (модель, версию промпта, профиль параметров) и показывает:

  • Карточку результатов по каждой конфигурации.
  • Матрицу сценариев, упорядоченную по разбросу: разнице между лучшей и худшей конфигурацией на этом сценарии. Сценарии, где версии расходятся сильнее всего, идут первыми.
  • Точку расхождения: первую реплику, на которой два разговора расходятся. Polygon выравнивает разговоры по репликам и берёт первую реплику, где различаются вызовы инструментов, где один разговор завершается или переводится, а другой нет, где расходится формулировка (сходство Жаккара по словесным биграммам ниже 0,5) или где различаются говорящие.
  • Письменный анализ систематических различий, построенный по детерминированной сводке карточек результатов.

Если у одной конфигурации нет результата по сценарию, Polygon помечает сценарий как несравнимый вместо того, чтобы подставлять нули.

Чтение промпта до запуска

Polygon читает промпт агента на четырёх уровнях, начиная с самого дешёвого: детерминированные правила, затем неожиданность (surprisal) каждой фразы для языковой модели, затем эмбеддинги, затем судья. На выходе оценка от 0 до 1 по каждой оси, где больше значит хуже, с подсветкой в редакторе.

Оси промпта, которые оценивает Polygon, от 0 до 1; чем выше оценка, тем хуже.
Ось Что она ловит
Перегрузка слишком много одновременных ограничений
Размывание внимания ключевые правила теряются посреди длинного промпта; связанные правила разбросаны
Конфликт правила, которые исключают или ослабляют друг друга
Неоднозначность формулировки, допускающие больше одного прочтения
Избыточность одно и то же правило сформулировано несколькими способами

Промпт может быть хрупким и всё же проходить все тесты, и эта проверка находит слабые места до того, как на них наткнётся звонящий.

Перебор параметров и циклы

  • Перебор меняет один параметр за раз или запускает полную сетку либо случайные точки на коротком наборе сценариев. Каждая точка становится неизменяемой версией профиля. Перебор может остановиться раньше, если первая точка уже ниже порога, и отказывается начинать точку, которая превысила бы лимит токенов. Таблица лидеров сортирует по средней оценке, затем по стабильности, затем по скорости.
  • Обнаружение зацикливания завершает разговор раньше, когда две последние реплики агента совпадают на 90% и больше, и помечает его. Односложный ответ вроде «Да.» учитывается, а проверка только по биграммам его бы пропустила.

Настоящие звонки, как они прошли

Polygon может импортировать продакшен-стенограммы и оценивать их без повторного воспроизведения. У настоящего разговора нет имитируемого звонящего и эталонных фактов, поэтому проверки, которые от них зависят, становятся неприменимыми. Остальное (детерминированные метрики, судья по стенограмме, пробы) работает так же, как для имитируемого разговора. Результат — обычный запуск, который может стоять в одном сравнении с синтетическими, и он показывает, лучше ли новый промпт справляется со звонками прошлого месяца.

Как читать результаты

  • Настройки судьи. Судья работает при температуре около нуля со структурированным выводом. Повторы с медианой делают его устойчивее.
  • Критерии за сводной оценкой. Сводная оценка — одно число для ранжирования; восемь критериев за ней говорят, что исправлять.
  • Реалистичные звонящие. Polygon создаёт звонящих по промпту агента, а мы время от времени проверяем их выборочно вручную, чтобы они оставались реалистичными.
  • Настоящие звонки. Импорт продакшен-стенограмм проверяет того же агента на звонках, которые у него были.

Читайте дальше

Следующий шаг

Получите ранний доступ к голосовым агентам Dialogist: мы приглашаем команды из листа ожидания по мере освобождения мощностей.

Лист ожидания

Мы подключаем команды постепенно. Напишем вам, когда подойдёт ваша очередь.