Звонящий не выдаёт данные сам: автомат держит раскрытые факты явно и отдаёт звонящему только их. Тест прогоняет длинную серию реплик и проверяет, что ни один нераскрытый факт не прозвучал. Главная находка — матчинг по порогу близости не работает. На 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 с кэшем.
28 lines
1.9 KiB
YAML
28 lines
1.9 KiB
YAML
# Общий чек-лист по классификатору 01 — МЧС.
|
||
# Наследуется сценариями через `extends`, дополняется локально.
|
||
# Методика: docs/product/METHODOLOGY.md#чек-листы-опроса
|
||
#
|
||
# `examples` — другие формулировки того же вопроса. Чем их больше и чем они
|
||
# разнообразнее, тем точнее звонящий «понимает» оператора. Писать так, как
|
||
# говорят живые операторы, а не как в инструкции.
|
||
id: fire
|
||
dds: "01"
|
||
checklist:
|
||
- id: q_address
|
||
question: "Назовите адрес: улица, дом, квартира, этаж?"
|
||
examples: ["Какой у вас адрес?", "Где вы находитесь?", "На каком этаже?", "Номер дома и квартиры?"]
|
||
- id: q_what_burns
|
||
question: "Что именно горит?"
|
||
examples: ["Что горит?", "Что именно загорелось?", "Откуда идёт огонь?"]
|
||
- id: q_people
|
||
question: "Есть ли люди в помещении?"
|
||
examples: ["Кто-то остался внутри?", "Все успели выйти?"]
|
||
- id: q_smoke
|
||
question: "Куда идёт дым, есть ли задымление подъезда?"
|
||
examples: ["Куда идёт дым?", "Есть ли задымление в подъезде?", "Сильный дым?"]
|
||
- id: q_gas
|
||
question: "Есть ли газ, можно ли перекрыть?"
|
||
examples: ["У вас газовая плита?", "Перекрыть газ сможете?"]
|
||
- id: q_caller
|
||
question: "Представьтесь и оставьте контактный телефон"
|
||
examples: ["Как вас зовут?", "Ваш номер телефона?"]
|