Чому промпт не рятує голосового агента: що ми змінили після реальних дзвінків
Голосовий агент для прийому замовлень «говорив як хоче», і нові моделі та промпти не допомагали. Розповідаємо, що реально спрацювало: рішення в коді, фрази очікування, пошук за схожістю і чесні метрики.
Коротко
- Голосовий ШІ (AI) агент приймав замовлення в пекарні, що постачає торгові точки. На тестах він працював, на реальних дзвінках «говорив як хоче».
- Зміна моделі й переписування промпту не допомогли. Допомогло перенести рішення з промпту в код: інструмент сам визначає позицію, наявність і ціну і повертає готову репліку.
- Промпт скоротився з 19,7 до 7,9 тисячі знаків, а пошук товару за живою мовою виріс з 57% до 93% у тестових діалогах.
- Довга тиша, вигадані залишки й «ковтання» позицій мали технічні причини, а не «погану модель».
- Чесний результат: на реальних дзвінках агент поки помічник менеджера, а не заміна. Але ми точно знаємо, що робити далі.
Задача: замовлення телефоном щодня
Пекарня щодня обдзвонює торгові точки за маршрутами і збирає замовлення. Оператор за хвилину розмови отримує 5 до 15 позицій, названих як завгодно: скорочено, суржиком, з помилками. Ми побудували голосового агента, який дзвонить точці сам, приймає замовлення і створює чернетку накладної в CRM. Детально про проєкт у кейсі голосового агента для пекарні.
На тестових розмовах у браузері агент поводився пристойно. Проблеми почались, коли ми підключили телефон і реальних клієнтів.
Симптом: агент «говорить як хоче»
Власник перепробував кілька моделей і десятки версій промпту. Агент усе одно перепитував кожну позицію («Записала 10. Чи правильно?» звучало до восьми разів за дзвінок), вставляв підказки посеред диктовки і губив позиції, сказані, поки він сам говорив. Кожна нова версія промпту лагодила одне й ламала інше.
Причина виявилась не в моделі. Промпт на 19,7 тисячі знаків намагався змусити модель бути автоматом станів: коли питати, коли підтверджувати, як рахувати, що пропонувати. Модель не може надійно виконувати таку логіку в кожній репліці, особливо в реальному часі.
Рішення: код вирішує, модель лише озвучує
Ми перебудували агента за простим принципом. Усе, що можна перевірити, рахує код інструмента: знайти позицію в прайсі, перевірити, чи вона є, підставити ціну, вирішити, чи потрібне уточнення. Інструмент повертає готову репліку, а модель її озвучує і веде розмову.
- Промпт скоротився з 19,7 до 7,9 тисячі знаків.
- Уточнення звучать у момент диктовки, а не після підтвердження всього списку.
- Поведінка перестала залежати від того, яку модель ми поставили. Її можна перевірити тестом, а не вгадувати.
Довга тиша рідко пов'язана з базою
Клієнти скаржились, що після диктовки агент мовчить так довго, що доводиться кілька разів казати «алло». Ми перевірили базу: вона рахувала замовлення з одинадцяти позицій за долі секунди. Насправді кожна позиція йшла окремим колом «модель, інструмент, база», і в трьох інструментів не було фрази очікування.
Тепер кожна дія агента має коротку фразу на кшталт «секунду, записую» і другу, якщо пошук іде довше кількох секунд. Окремо ми налаштували паузи під телефон: на лінії людина сприймає тишу як обрив, а шумніший звук змушує систему частіше вирішувати, що співрозмовник договорив.
Вигадані залишки й тестові дані в бойовому промпті
Найнеприємніший баг: агент пропонував точці пиріг, який вона щойно замовила, і називав залишок, хоча залишків ніхто не вносив тижнями. Причина була в забутій «демо-картці» з тестовим клієнтом, яка лишилась у промпті з етапу розробки.
Висновок для всіх проєктів: кількість, ціну й наявність агент бере лише з інструмента, ніколи з тексту промпту. Якщо даних немає, інструмент повертає фразу на кшталт «по цій позиції залишки не рахуються, кількість не називати». А сам промпт ми перечитуємо повністю в кабінеті платформи перед кожним релізом.
Люди не називають товар так, як у прайсі
Агент не впізнав «хот-дог з колбаскою», а «сімейну з маком» записав як позицію з родзинками, бо синонім спрацьовував на будь-яку фразу з цим словом. Ми зробили тест: 267 позицій прайсу, по 8 формулювань на кожну, разом 2 119 фраз із суржиком, російською, скороченнями, помилками розпізнавання й зайвими словами.
- Старий пошук правильно впізнав 57% формулювань.
- Ручні синоніми закривали лише меншу частину реальних провалів із журналу дзвінків.
- Новий пошук за схожістю з ранжуванням і перепитуванням, коли агент не впевнений, дав 93% у тестових діалогах.
Додатково ми ставимо першими позиції, які саме цей клієнт брав за останні 90 днів: на «батон» коротша назва завжди виглядає схожішою, і без історії клієнта агент обирав не те. А коли два менеджери однаково виправили почуте слово на одну позицію, воно стає синонімом автоматично.
Чесний результат і що далі
Ми рахуємо якість на реальних дзвінках: скільки позицій записано точно, скільки накладних менеджер не правив, як часто клієнт кладе трубку. Ці цифри чесно сказали, що поки агент помічник менеджера, а не заміна: він збирає замовлення, а людина перевіряє накладну.
Вони ж показали напрям. В експерименті на 12 записаних дзвінках агент наживо правильно записав 85% позицій, а сильніша модель, яка розбирала запис уже після розмови, дала 96%. Тому наступний крок не ще один промпт, а розбір запису після дзвінка для перевірки накладної.
Що з цього варто взяти, якщо ви плануєте голосового агента
- Якщо агент поводиться непередбачувано, не міняйте модель першою. Подивіться, скільки логіки ви намагаєтесь вкласти в промпт.
- Числа, ціни й наявність тільки з інструментів.
- Кожна дія, що займає час, має фразу очікування.
- Пошук товару перевіряйте на сотнях реальних формулювань, а не на назвах із прайсу.
- Міряйте результат на реальних дзвінках і чесно називайте, де агент уже замінює людину, а де ще допомагає.
Як ми будуємо голосових агентів і скільки це коштує, на сторінці голосовий бот для бізнесу. Для вихідних дзвінків клієнтам дивіться AI-обдзвін.
Покажемо, як це працює на вашому процесі. Перший дзвінок і демо безкоштовні.