lct-hack/scenarios/checklists/common.yaml

36 lines
2.4 KiB
YAML
Raw Normal View History

lct-07 (без LLM): слот-автомат, персона, звонящий на заготовках, make repl Звонящий не выдаёт данные сам: автомат держит раскрытые факты явно и отдаёт звонящему только их. Тест прогоняет длинную серию реплик и проверяет, что ни один нераскрытый факт не прозвучал. Главная находка — матчинг по порогу близости не работает. На multilingual-e5-small настоящие вопросы дают 0.79–0.95, а «Оставайтесь на линии» — до 0.89: диапазоны перекрываются, и любой порог либо выдаёт адрес на «успокойтесь», либо не слышит «где вы находитесь?». Решение — сравнение с ближайшим соседом: у пункта чек-листа несколько формулировок (examples), рядом общий список не-вопросов (checklists/common.yaml), и реплика засчитывается пункту, только если она ближе к нему, чем к любому не-вопросу. На отложенных фразах: 19 из 20 вопросов, 0 из 8 ложных срабатываний. Реплика режется только по границам предложений, со знаком: «?» для e5 — сильный признак вопроса, без него «Куда ехать» уходит к не-вопросам. Подсказка берёт неотработанный пункт из автомата. В живой сессии автомат начнёт слышать оператора, когда голосовой контур передаст ему stt.final. Ждёт ключа LLM: условие approach у скрытых фактов, звонящий своими словами, dialog/llm.py с кэшем.
2026-09-17 13:57:43 +03:00
# Реплики оператора, которые НЕ являются вопросом чек-листа.
#
# Зачем: матчинг по эмбеддингам сравнивает реплику с формулировками вопросов.
# Без этого списка «Оставайтесь на линии» оказывается ближе к пункту чек-листа,
# чем половина настоящих вопросов, — и звонящий выдаёт адрес на «успокойтесь».
# Реплика засчитывается вопросом, только если она ближе к пункту, чем к любой
# фразе отсюда.
#
# Дополнять, когда в разборе видно, что звонящий «понял вопрос», которого не было.
not_questions:
- "Служба 112, что случилось?"
- "Успокойтесь, пожалуйста"
- "Оставайтесь на линии"
- "Помощь уже едет"
- "Я вас понял"
- "Говорите громче, плохо слышно"
- "Выходите из квартиры"
- "Не кладите трубку"
- "Хорошо, записываю"
feat: уточнение адреса — место происшествия не равно адресу заявителя (lct-35) Главный предмет проверки в билетах заказчика — адрес: названный заявителем часто неверен, а настоящий добывается переспросом («ул. Станционная, 28» оказывается Королёвом). Памятка АРМ-112 называет это обычным делом. До этой правки оценка работала наоборот: ground_truth.address сравнивался с единственным значением факта, поэтому курсант, правильно переспросивший и записавший настоящий адрес, получал расхождение с эталоном, а записавший ориентир — зачёт. - Схема: у факта появились refined и refine_on, задаются только вместе. - Слот-автомат различает уточнение и повтор: повтор раздражает звонящего, уточнение — нет, оператор спросил о другом и получил другое. - Звонящий поправляется отдельной репликой, а не повторяет прежнее значение; офлайн-таблица получила секцию refine. - Оценка: метрика address_refined (E1, опрос). Сделана отдельной, а не правкой метрики address: «записал не тот адрес» и «не спросил» — разные навыки и разные компетенции в радаре. - Общие пункты чек-листа подключаются по требованию сценария: формулировки в checklists/common.yaml, сценарий объявляет пункт с тем же id без текста. Добавлять «уточните адрес» во все сценарии нельзя — неотработанный пункт штрафует за вопрос, которого сценарий не требовал. - scenarios/fire-private-house-l3.yaml — первый сценарий из библиотеки заказчика (билет 3, вызов 1). Риск механики проверен на живой модели: «Назовите адрес» и «Это точно Москва?» эмбеддинги не путают, тест это фиксирует. 125 тестов зелёных (12 новых), make typecheck чистый.
2026-09-19 20:26:49 +03:00
# Пункты, которые не принадлежат ни одному классификатору. Сценарий подключает
# нужный, объявив пункт с тем же `id` и без текста, — формулировки подставятся
# отсюда. Насильно во все сценарии они не добавляются: неотработанный пункт
# штрафует курсанта отметкой E1 за вопрос, которого сценарий не требовал.
checklist:
- id: q_address_check
question: "Уточните: происшествие по этому адресу, вы сейчас там?"
examples:
- "Это точно Москва?"
- "Вы сами находитесь по этому адресу?"
- "Происшествие там же, где вы?"
- "Какой город?"
- "Это в черте города?"
- "Уточните адрес происшествия"
- "Вы смотрите на это или вам рассказали?"
- "Адрес происшествия и ваш адрес совпадают?"