Ко мне пришёл необычный клиент — «Прайм-Тент», производитель цирков-шапито. Настоящих: купол на пол-тысячи, тысячу, две тысячи зрителей, опорные мачты, зрительный зал, манеж. А ещё тентовые ангары, шатры для ресторанов, воздухоопорные сооружения. Ниша, где я до этого не понимал вообще ничего.
Задача звучала просто: поставить на сайт ИИ-помощника, который отвечает посетителям про конструкции, прикидывает ориентировочную стоимость и собирает заявки. С «отвечает про конструкции» проблем не было — загрузил материалы, помощник разобрался. А вот на «прикидывает стоимость» я и споткнулся.
Первая грабля: он врал в цифрах
Цену цирка считают не на глаз. Есть формула: купол — по диаметру, зрительный зал — по числу мест, и это две разные суммы. Я аккуратно описал логику в инструкции для помощника и спросил цену цирка с куполом 30 метров.
Он ответил уверенно и красиво. И ошибся почти в полтора раза — выдал 3,5 миллиона там, где должно было выйти 2,2.
Дело вот в чём: языковая модель не считает — она предсказывает правдоподобный текст. Попросите её перемножить пару больших чисел с коэффициентами — она напишет что-то похожее на правду, с той же интонацией уверенности, что и верный ответ. В обычном разговоре это незаметно. Но когда речь про смету на миллионы, «похоже на правду» — это катастрофа.
Что сработало: считать должен код, а не модель
Решение оказалось не «допишу инструкцию понятнее», а «заберу арифметику у модели совсем».
Я вынес расчёт в отдельный инструмент — обычную функцию на Python. Теперь помощник работает так: собирает у клиента параметры (тип конструкции, размеры, число мест), передаёт их в этот инструмент, а тот считает по точным формулам и возвращает готовую сумму. Модель уже не вычисляет — она только ведёт диалог и озвучивает результат, который посчитала программа.
Разница как между «пусть кассир прикинет в уме» и «пусть пробьёт на калькуляторе».
Сумма перестала гулять. Цирк с куполом 30 метров стал стабильно выдавать свои 2,2 миллиона за купол и отдельно — стоимость зала по числу мест.
Это, наверное, главный вывод за всю историю: ИИ-агенту нельзя доверять деньги «в уме». Любой расчёт — цену, скидку, площадь, сроки — выносите в код. Модель хороша в словах, а не в цифрах.
Вторая грабля: он замучил клиента вопросами
Починил арифметику — вылезло другое. На простой вопрос «сколько стоит цирк на 30 метров» помощник вместо ответа устраивал допрос: а диаметр купола или манежа, а сколько мест, а какая высота, а какой город. Клиент отвечал, а он переспрашивал снова и терял нить. До цены дело не доходило.
Я перестарался с предохранителями. Напихал в инструкцию столько «уточни то, уточни это», что помощник боялся назвать хоть какую-то цифру без полного досье.
Разгрёб в две руки. Во-первых, упростил логику: для ориентира достаточно одного параметра — либо диаметр купола, либо число мест, остальное инструмент достроит сам. Высоту вообще перестал спрашивать — на цену она не влияет, а клиента раздражает. Во-вторых, поднял модель на ступень мощнее: та, что подешевле, не тянула длинный диалог с расчётами и путалась. Разница в деньгах за месяц — копейки, а связность выросла заметно.
После этого «цирк на 30 метров» стал получать вилку цены сразу, первым же ответом.
Где мы сейчас
Помощник в проде, на живом сайте «Прайм-Тента». Отвечает про конструкции, считает ориентир по циркам, шатрам, ангарам и воздухоопорным сооружениям, а заявки складывает владельцу прямо в Telegram — с именем, контактом и тем, что именно человек спрашивал. Клиент доволен, работаем дальше.
А я теперь знаю про цирки-шапито неприлично много — про рунт-стойки, колосник и форганг. Не думал, что запуск ИИ-студии заведёт меня в цирковую инженерию, но вот.
Если делаете или заказываете ИИ-агента — заберите главное: он прекрасно разговаривает, но считать доверяйте только коду. Подписывайтесь на @pervyyii, если хочется смотреть на маленькую студию изнутри — без прикрас, с граблями и находками.