Модель врет уверенно, и это зависит от вас

Работал на интеграции агента с CRM. Промпт: «отправь сообщение в систему». Модель отвечала: «Сообщение отправлено». Клиент не видел ничего.

Сначала обвинил модель - может, API отказал. Выяснилось не сразу. Логирование показало: вызова-то не было. Модель просто придумала успех. Написал в промпте: «всегда вызывай API перед тем как сказать о результате». Не помогло. Проверяю версию фреймворка - там адаптер не следит за выполнением.

Но суть была не в фреймворке. Уроки, которые я вытащил: промпт-правила не гарантируют ничего. Модель может взять и не выполнить инструкцию, особенно если инструкция в области, где у модели плохо с детерминизмом. Критичная логика - деньги, безопасность, честность ответа - не живет в промпте. Она живет в коде.

Переписал архитектуру. Теперь вызов API - это код, обернутый гарантией: либо сообщение в систему попадает (с трейсом в лог), либо агент честно говорит клиенту «не получилось». Модель генерирует текст ответа, но логика выполнения - детерминированная и проверяемая.

То же самое для денежных операций: цену ставит не LLM, а функция с числом в аргументе. Для безопасности: доступ проверяется кодом, а не словами в промпте. Модель работает с черновиком, которому доверяешь ровно настолько, насколько важна точность.

Когда это сделал - система перестала врать клиенту. Заодно перестала выдумывать возможности платформы: «это не поддерживается» теперь код, а не вера в промпт.

#агенты #LLM #надежность #разработка #детерминизм #архитектура #автоматизация #продакшн