Звонящий не выдаёт данные сам: автомат держит раскрытые факты явно и отдаёт звонящему только их. Тест прогоняет длинную серию реплик и проверяет, что ни один нераскрытый факт не прозвучал. Главная находка — матчинг по порогу близости не работает. На 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 с кэшем.
19 lines
1.2 KiB
YAML
19 lines
1.2 KiB
YAML
# Реплики оператора, которые НЕ являются вопросом чек-листа.
|
||
#
|
||
# Зачем: матчинг по эмбеддингам сравнивает реплику с формулировками вопросов.
|
||
# Без этого списка «Оставайтесь на линии» оказывается ближе к пункту чек-листа,
|
||
# чем половина настоящих вопросов, — и звонящий выдаёт адрес на «успокойтесь».
|
||
# Реплика засчитывается вопросом, только если она ближе к пункту, чем к любой
|
||
# фразе отсюда.
|
||
#
|
||
# Дополнять, когда в разборе видно, что звонящий «понял вопрос», которого не было.
|
||
not_questions:
|
||
- "Служба 112, что случилось?"
|
||
- "Успокойтесь, пожалуйста"
|
||
- "Оставайтесь на линии"
|
||
- "Помощь уже едет"
|
||
- "Я вас понял"
|
||
- "Говорите громче, плохо слышно"
|
||
- "Выходите из квартиры"
|
||
- "Не кладите трубку"
|
||
- "Хорошо, записываю"
|