Проверить, что правка инструкции не сломала то, что работало, можно единственным способом: прогнать агента по заранее собранному набору контрольных диалогов и сравнить ответы с эталоном. Всё остальное — «мы посмотрели, вроде отвечает нормально» — не проверка, а надежда. Набор из 30 диалогов собирается за 22 часа, прогоняется за полчаса и ловит именно тот класс поломок, который иначе обнаруживает клиент.

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

Ниже — как этот контур выглядит в рабочем виде: где должна лежать действующая редакция инструкции, из чего собирается контрольный набор, в каком порядке выкатывается правка, какие три метрики достаточно снимать и сколько часов в месяц это занимает у компании, в которой нет ни тестировщика, ни промпт-инженера. Все расчёты — модельные, по ставкам: инженер подрядчика 3 000 ₽/час, методист или старший оператор внутри компании 900 ₽/час, руководитель направления 2 000 ₽/час.

Промпт — это код, даже если он написан по-русски

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

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

Где лежит действующая редакцияВидно ли, что менялосьВремя откатаЧем это кончается
Переписка с подрядчиком в мессенджереНет: правки разбросаны по репликам, часть — голосовымиОт часа до суток, если подрядчик на связиПри смене подрядчика инструкция собирается заново с нуля
Файл на облачном диске, правят несколько человекЧастично: история есть, но без причин правок10–20 минут, если помнить, какая версия работалаДве редакции расходятся, в проде оказывается не та
Поле в административной панели без историиНет: хранится только текущее состояниеОтката нет — только написать заново по памятиПосле неудачной правки восстанавливают формулировки на слух
Система версий рядом с кодом агентаДа: что, зачем, кто утвердил, какой прогон прошёл1–2 минуты, откат на предыдущий номерРазбор инцидента занимает 15 минут вместо дня
Что это значитВерсия промпта

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

Простой и достаточный вариант для компании без своего программиста — держать инструкцию в том же репозитории, где живёт код агента, а править её через подрядчика по короткой форме заявки. Право утверждать правку остаётся у вас, право выкатывать — у инженера, и в любой момент видно, кто и что менял. Что именно должно быть записано в договоре, чтобы доступ к действующей редакции остался у вас при расставании с подрядчиком, разобрано в материале о том, что должно быть в договоре на разработку.

сравнениеversionirovanie-i-testy-promtov--01
Сравнение двух способов хранить инструкцию агента: переписка и система версий

Сравнение в две колонки. Слева «Инструкция в переписке»: строки «Что менялось — неизвестно», «Кто утвердил — неизвестно», «Откат — от часа до суток», «При смене подрядчика — собирается заново». Справа «Инструкция в системе версий»: «Что менялось — запись из пяти полей», «Кто утвердил — фамилия», «Откат — 1–2 минуты», «При смене подрядчика — остаётся у вас». Внизу общая подпись: «Разбор инцидента: день против 15 минут». Чертёжный стиль, подписи по-русски.

Разница между двумя колонками — не аккуратность, а время отката: сутки против двух минут

Что именно ломается: механика побочного эффекта

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

Модельный пример из практики поддержки оптовой компании: поток 1 500 обращений в месяц, инструкция на полторы страницы, контрольный набор из 30 диалогов, который до правки проходил полностью — 30 из 30. Правка одна: «Отвечай короче, не длиннее трёх предложений». Прогон после правки — 26 из 30. Отвалилось четыре диалога, и ни один из них не про длину ответа.

  1. 1Заказ с доставкой в регион: агент перестал называть срок доставки, потому что срок был четвёртым предложением ответа. Клиент получает вежливый короткий ответ без единственной цифры, ради которой писал.
  2. 2Первый заказ нового покупателя: пропала оговорка про предоплату на первую поставку. Правило в инструкции осталось, но не поместилось в три предложения.
  3. 3Жалоба на брак: агент ответил по существу и не предложил передать диалог оператору. Предложение эскалации всегда стояло последней фразой — она и ушла под нож.
  4. 4Вопрос про остаток на складе: агент перестал добавлять оговорку «остаток меняется в течение дня, уточните перед отгрузкой». Формально ответ верный, фактически — обещание, которого компания не давала.

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

Правку нельзя проверить на том сценарии, ради которого её делали

Проверка «попросили короче — стало короче» всегда даёт положительный результат и потому не является проверкой. Смысл контрольного набора в том, что в нём есть 29 диалогов, к которым правка не имеет отношения. Если после правки они продолжают проходить — правка безопасна. Если четыре из них перестали — вы узнали об этом за полчаса и бесплатно, а не через неделю и от клиента.

графикversionirovanie-i-testy-promtov--02
Столбцы прохождения набора из 30 диалогов до правки, после правки и после доводки

Столбчатая диаграмма из трёх столбцов по шкале от 0 до 30. Столбцы: «До правки — 30 из 30», «После правки „отвечай короче“ — 26 из 30», «После доводки — 30 из 30». У среднего столбца выноска с перечнем отвалившихся сценариев: срок доставки, оговорка про предоплату, предложение оператора, оговорка про остаток. Ось Y подписана «диалогов из набора пройдено», ось X — «редакция инструкции».

Правка «отвечай короче» стоила четырёх сценариев, к длине ответа отношения не имеющих

Контрольный набор: 30 диалогов и что считать эталоном

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

  1. 1
    Шаг 1. Выгрузить обращения за квартал

    Берём переписку и расшифровки за последние три месяца — в модельном примере это около 4 500 обращений при потоке 1 500 в месяц. Персональные данные из выгрузки убираем сразу: для набора важен вопрос, а не фамилия клиента. Выгрузка обезличивается один раз и дальше живёт как рабочий материал.

  2. 2
    Шаг 2. Отобрать 30 штук по трём корзинам

    Пятнадцать частотных — то, что спрашивают каждый день, они держат основную нагрузку. Десять рискованных — деньги, сроки, возврат, жалоба, персональные данные: здесь ошибка стоит дороже всего. Пять редких, но дорогих — нестандартные случаи, из-за которых однажды был скандал. Корзины важнее числа: набор из 30 частотных вопросов проверяет один и тот же кусок инструкции тридцать раз.

  3. 3
    Шаг 3. Описать эталон к каждому диалогу

    Три поля. Обязательные элементы: срок, цена, оговорка, ссылка на документ. Запрещённые элементы: обещание скидки, точная дата без оговорки, упоминание конкурента, любой факт не из базы знаний. Требуемое действие: ответить самому, найти в базе знаний, передать оператору, создать заявку. Эталон пишет тот, кто знает процесс, а не тот, кто пишет промпт.

  4. 4
    Шаг 4. Оформить набор в прогоняемый вид

    Набор должен запускаться одной командой и выдавать таблицу «диалог — пройден или нет — какой элемент отсутствует». Пока это делается вручную копированием в чат, прогон занимает не 30 минут, а полдня, и после третьей правки его перестают делать. Автоматизация прогона — единственная строка набора, требующая инженера.

схема процессаversionirovanie-i-testy-promtov--03
Схема одного контрольного диалога: вопрос клиента, три поля эталона и вердикт прогона

Схема из пяти блоков со стрелками слева направо. Первый блок — «Вопрос клиента» с примером «когда приедет заказ в Казань». Второй, третий и четвёртый идут вертикальной колонкой и подписаны «Обязательные элементы: срок доставки, оговорка про остаток», «Запрещённые элементы: точная дата без оговорки, обещание скидки», «Требуемое действие: ответ из базы знаний, без эскалации». От них стрелки в пятый блок — «Вердикт: пройден или не пройден, с указанием отсутствующего элемента». Сбоку пометка: «набор из 30 таких карточек, прогон 30–40 минут».

Эталон — это не образцовый текст, а три списка: что обязано быть, чего быть не должно, что сделать
Сборка контрольного набора из 30 диалогов, разово
Отбор 30 диалогов из выгрузки за квартал по трём корзинам: методист, 6 часов × 900 ₽5 400 ₽
Описание эталона к каждому диалогу — три поля на карточку: методист, 8 часов × 900 ₽7 200 ₽
Утверждение спорных эталонов владельцем процесса: руководитель, 1 час × 2 000 ₽2 000 ₽
Оформление набора в прогоняемый вид и скрипт прогона: инженер, 7 часов × 3 000 ₽21 000 ₽
Итого22 часа и 35 600 ₽ разово — примерно 9 % бюджета агента на 400 000 ₽

Почему именно 30. Десять диалогов не покрывают даже частотную часть и создают ложное спокойствие: набор проходит, а поломка живёт в сценарии, который в набор не попал. Двести диалогов собираются полторы недели, а прогон и разбор расхождений после каждой правки съедает день — через месяц набор перестают запускать, и он превращается в мёртвый артефакт. Тридцать — это компромисс: три корзины покрыты, сборка укладывается в три рабочих дня, прогон и разбор помещаются в один вечер. Набор дорастает до 45–60 диалогов сам, по одному новому за каждый разобранный инцидент.

Порядок выката: четыре ступени

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

  1. 1
    Ступень 1. Прогон на контрольном наборе

    30–40 минут. Условие перехода — набор пройден полностью или расхождения разобраны и признаны допустимыми осознанно, с записью в версии. Если провалено больше двух диалогов, правка возвращается на переформулировку, а не идёт дальше «с оговоркой».

  2. 2
    Ступень 2. Теневой режим, 3–5 дней

    Агент получает реальные обращения и формирует ответы, но клиенту их не отправляет — отвечает человек. Ответы агента складываются в журнал, старший оператор просматривает их выборочно, 20–30 штук в день. Это единственная ступень, на которой ошибка вообще ничего не стоит, поэтому её пропускают чаще всего и зря.

  3. 3
    Ступень 3. Двадцать процентов трафика, неделя

    Новая редакция отвечает каждому пятому обращению, остальные идут на предыдущую. Сравниваются три метрики из следующего раздела на двух потоках сразу — это единственный честный способ увидеть эффект правки, а не сезонное колебание. При потоке 1 500 обращений в месяц двадцать процентов за неделю — это около 75 диалогов, достаточно для грубого сравнения.

  4. 4
    Ступень 4. Полный переход

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

СтупеньДлительностьЧто смотримУсловие отката
Прогон на наборе30–40 минутСколько диалогов из 30 пройденоПровалено больше 2 диалогов
Теневой режим3–5 днейВыборка 20–30 ответов в день глазами оператораНайдено фактическое враньё или нарушенное стоп-правило
20 % трафикаНеделя, около 75 диалоговЭскалации и повторные обращения на двух потокахДоля эскалаций выросла больше чем в полтора раза
Полный переходНаблюдение 7 днейОчередь эскалаций утром и вечеромЛюбой инцидент с деньгами или персональными данными

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

этапыversionirovanie-i-testy-promtov--04
Лента из четырёх ступеней выката правки промпта с длительностью и условием отката

Горизонтальная лента времени примерно на две недели с четырьмя ступенями: «Прогон на наборе — 30–40 минут», «Теневой режим — 3–5 дней», «20 % трафика — неделя, около 75 диалогов», «Полный переход — наблюдение 7 дней». Под каждой ступенью подписано условие перехода дальше, над каждой — условие отката. Слева от ленты вертикальная отметка «предыдущая редакция помечена как откатная, возврат 1–2 минуты». Чертёжный стиль, подписи по-русски.

На первых двух ступенях ошибка не стоит ничего — их и пропускают чаще всего

Три метрики, которые снимаются без аналитической системы

Для контроля качества ответов не нужна отдельная аналитика — нужны три числа, которые считаются по журналу диалогов и по выгрузке из CRM. Их достаточно, чтобы поймать деградацию за неделю, а не за квартал.

МетрикаКак считаетсяРабочий порогО чём говорит выход за порог
Доля прохождения контрольного набораПройдено диалогов ÷ 30, после каждой правки30 из 30, допустимо 29Правка задела сценарии, которых не касалась
Доля эскалаций на человекаДиалогов, переданных оператору ÷ все диалоги за неделюСтабильна в пределах ±20 % от своего обычного уровняРост — агент потерял знание или осторожничает; падение — берётся за то, что должен отдавать
Доля повторных обращений по той же темеКлиентов, написавших повторно по тому же вопросу в течение 7 дней ÷ все клиенты неделиДо 15 %Ответы формально верные, но задачу клиента не закрывают

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

Чего не стоит делать — считать главной метрикой оценку «понравился ли ответ». Её ставят 3–7 % клиентов с перекосом в сторону недовольных: на потоке 1 500 обращений это 45–100 оценок в месяц, половина которых относится не к агенту, а к цене. Как сигнал она полезна, как основание для правки инструкции — нет. Контроль сроков ответа и просрочек тоже лучше отдать отдельному контуру: это задача контроля SLA, а не набора тестов.

Кто проверяет ответы, если в компании нет тестировщика

Тестировщик для этой работы не нужен и, честно говоря, не подходит. Нужен человек, который знает, каким ответ должен быть по существу: старший оператор поддержки, методист, руководитель группы продаж. Проверка контрольного набора — это не поиск технических ошибок, а сверка ответа с тем, что компания на самом деле обещает клиенту. Инженер здесь отвечает только за прогон, выкат и откат.

Сопровождение контрольного набора одного агента, в месяц
Отбор новых диалогов в набор из свежих обращений: методист, 2 часа × 900 ₽1 800 ₽
Разбор расхождений после прогонов и обновление эталонов: методист, 5,5 часа × 900 ₽4 950 ₽
Прогон набора после правок, выкат и наблюдение: инженер, 1,5 часа × 3 000 ₽4 500 ₽
Итого9 часов и 11 250 ₽ в месяц на одного агента

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

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

Когда набор тестов заводить рано

Регресс-тесты — не универсальная гигиена, а инструмент с ценой. Есть три ситуации, в которых 22 часа на сборку набора не окупаются, и мы честно говорим об этом до начала работ.

  • Пилот на две-четыре недели. У пилота задача — понять, справляется ли агент в принципе, и инструкция за это время переписывается целиком по три раза. Набор, собранный на первой неделе, к третьей описывает несуществующее поведение. Правильный порядок — сначала стабилизировать требования, потом фиксировать их набором.
  • Меньше 200 обращений в месяц через агента. Тридцать контрольных диалогов при таком потоке покрывают почти все реальные обращения, и роль набора выполняет обычная выборочная проверка: старший оператор просматривает все ответы за день за 20 минут. Заводить набор имеет смысл начиная примерно с 400–500 обращений в месяц.
  • Агент только читает и не отвечает наружу. Если модель классифицирует обращения, извлекает поля из счёта или составляет резюме звонка для менеджера, ошибка видна человеку до того, как что-то произойдёт. Здесь работает выборочный контроль качества распознавания, а не набор диалогов.

И обратная сторона того же правила. Если агент отвечает клиентам самостоятельно, называет цены и сроки и умеет что-то записывать в учётную систему, набор нужен с первого дня эксплуатации — не потому, что модель ненадёжна, а потому, что инструкцию будут править, и править будут люди, которые не помнят, какие ещё сценарии зависели от каждой строки. Набор здесь работает не как контроль качества модели, а как память команды.

Простая проверка на своём проекте

Спросите у подрядчика две вещи: сколько диалогов в контрольном наборе вашего агента и когда набор прогонялся последний раз. Если ответ на первый вопрос — «мы проверяем вручную», а на второй — «после каждой правки смотрим», значит, набора нет, и каждая правка выкатывается на ваших клиентах. Это не повод для скандала, но повод внести сборку набора в план работ ближайшего месяца.

Набор из 30 диалогов — это не контроль качества модели. Это память команды о том, почему каждая строка инструкции однажды там появилась.