Ястремський

Кейс · під NDA, описано узагальнено

Голос у структуровані дані

Мовлення стає перевіреною задачею, а не здогадкою: транскрипція під домен, вилучення за схемою і людина перед кожною дією.

  • Whisper STT
  • Вилучення, обмежене схемою
  • Виклик інструментів
  • Черги
  • WebSocket
  • Іврит

Контекст

CRM, якою користуються менеджери за кермом, у цеху або між зустрічами. Набирати задачу текстом коштує більше уваги, ніж у них є, тому вхід — голосова нотатка: івритом, українською або тією мовою, якою менеджер справді говорить. Система має перетворити її на реальний запис із дедлайном, відповідальним і прив'язаним клієнтом.

Обмеження

Модель розпізнавання мовлення впевнена у словах, яких не чула, а мовна модель упевнена в полях, які вигадала. Обидві помилки виглядають так само, як правильна відповідь: гладко, коректно за формою і неправильно. До того ж ті самі слова означають різне в різні години — «завтра о шостій» не є значенням, яке може зберігати база, — а менеджер чекає, тож запит не може висіти відкритим, поки платний провайдер не поспішає.

Рішення

Що обрано

Транскрипція, налаштована на власний словник домену, далі вилучення, обмежене схемою, за нульової температури: модель обирає між полями, які існують, а не описує почуте. Відносний час перетворюється на абсолютний момент із урахуванням часового поясу на етапі вилучення, а не показу. Робота ставиться в чергу: HTTP відповідає одразу, а готова задача приходить вебсокетом.

Що відхилено

Дозволити моделі самій викликати інструменти й діяти за власним результатом. Це швидше зробити, і це чудово виглядає на демонстрації. Це також означає, що перше ж недочуте ім'я клієнта стане реальним записом, призначеним на реальну людину.

Компроміс

Крок підтвердження коштує менеджерові одного дотику, а нам — стану інтерфейсу, якого інакше не було б. Натомість до бази не потрапляє нічого, на що не подивилася людина, і погана транскрипція стає знизуванням плечима, а не інцидентом.

Неочевидна частина

Тести не мають права звертатися до провайдера. Річ не в рахунку: набір тестів, який залежить від віддаленої моделі, — це набір, що падає з причин, не пов'язаних зі змінами, які перевіряють, і за два тижні команда вчиться його ігнорувати. У CI провайдер замокано, а оновлення моделі ловлять регресійні тести відповідей, які звіряють структурований вихід із фіксованими випадками. Тож тихо перевчену модель ловить набір тестів, а не користувач.

Результат

У продакшні з реальними менеджерами. Кожне надходження має аудиторський слід, персональні дані за задумом не потрапляють у промпт, а транскрипти виходять із терміну зберігання через тридцять днів.