Почему AI врёт так уверенно
Языковые модели генерируют вероятный следующий токен. Когда нет уверенного ответа, модель не молчит и не говорит "я не знаю". Она генерирует что-то правдоподобное. Это особенно опасно для конкретных вещей: API-параметры, точные команды, имена функций в библиотеках, даты и факты.
Проблема в том, что галлюцинация выглядит точно так же, как правильный ответ. Вы не можете отличить настоящую команду от выдуманной по внешнему виду. Модель не подмигивает и не ставит звёздочку рядом с выдуманными фактами.
Техники которые реально работают
Самый простой способ: скажите модели прямым текстом - если не уверен, скажи честно, не додумывай. Звучит примитивно, но это работает. Модели галлюцинируют значительно реже, когда им дано явное разрешение не знать ответ. Anthropic подтверждает это в своих рекомендациях по промпт-инжинирингу.
Давайте один пример (one-shot) вместо длинных описаний формата. Покажите AI один раз как должен выглядеть правильный результат, и точность резко вырастет. Добавляйте больше примеров только если первый не помог.
Для кода: просите AI писать тесты для своего же кода. Это заставляет модель верифицировать собственный вывод. Если она написала функцию, пусть напишет тест который её вызывает. Несовпадение станет заметно сразу.
Инструменты в помощь
TypeScript strict, mypy, ESLint - статическая типизация ловит огромное количество AI-ошибок на этапе компиляции. Claude Code и Cursor могут автоматически запускать тесты после генерации кода. Включите эту функцию и не выключайте. В Aider используйте /run после каждого изменения.
И помните: чем конкретнее ваш запрос, тем меньше пространства для галлюцинаций. Вместо "сделай аутентификацию" пишите "создай JWT middleware для Express с проверкой expiry, используя библиотеку jose". Чем меньше AI должен додумывать, тем точнее результат.