Как уменьшить галлюцинации
Галлюцинация — это когда модель уверенно утверждает то, чего нет: несуществующую функцию библиотеки, неверную дату, «факт» о клиенте, которого клиент не говорил. Полностью это не лечится, но сильно сокращается промптом. В уроке — почему модель придумывает, какие приёмы работают и что менять в собственных привычках.
Почему модель придумывает
Модель обучена быть полезной и продолжать текст правдоподобно. Когда она не знает ответа, у неё есть два пути: сказать «не знаю» или сгенерировать правдоподобный ответ. Без явного разрешения первый путь проигрывает: «быть полезным» перевешивает. Так появляются выдуманные ссылки, параметры API и цитаты.
Второй источник — отвлекающие данные. Если в документе есть цифра, похожая на нужную, но относящаяся к другому периоду или другой метрике, модель может взять её, потому что она «подходит по форме». В туториале это показано на годовом отчёте компании: вопрос про число подписчиков на конкретную дату, а в документе есть число на другую дату — и модель отвечает им.
Третий — вопросы с ложной предпосылкой. «В каком году вышел восьмой альбом исполнительницы?» — а у неё их семь. Модель прошлого поколения называла год восьмого альбома, которого не существует, потому что вопрос предполагает, что он есть.
Приём первый: дать выход
Самое простое и самое действенное — разрешить модели не отвечать. «Отвечай, только если уверен. Если не знаешь — так и напиши». Или строже: «Если в документе нет информации, достаточной для ответа, ответь „в документе этого нет“ и не пытайся угадать».
Это звучит как мелочь, но меняет баланс: теперь «не знаю» — тоже полезный ответ, и модель им пользуется. Пример из туториала — «кто самый тяжёлый бегемот в истории?»: без выхода модель прошлого поколения выдавала имена и веса, с добавкой «отвечай, только если знаешь точно» — честно признавалась, что таких данных у неё нет.
Формулировки, которые работают:
- «Если не уверен, скажи об этом прямо, а не угадывай».
- «Отметь, какие части ответа — факты из документа, а какие — твои предположения».
- «Если требования допускают несколько трактовок, перечисли их, а не выбирай одну».
- «Не придумывай названия функций, параметров и версий; если не помнишь точно, напиши „нужно проверить в документации“».
Для вопросов с ложной предпосылкой добавьте: «Сначала проверь, верна ли предпосылка вопроса».
Приём второй: сначала цитаты, потом ответ
Когда ответ должен опираться на документ, попросите модель сначала выписать дословные цитаты, относящиеся к вопросу, а потом отвечать только на их основе:
Прочитай документ и ответь на вопрос.
Сначала в тегах <quotes> приведи дословные цитаты из документа,
которые относятся к вопросу. Если подходящих цитат нет — напиши
об этом в <quotes> и в ответе скажи, что документ не содержит
нужной информации.
Затем в <answer> дай ответ, опираясь только на приведённые цитаты.
<document>
…
</document>
<question>Сколько пользователей было у сервиса на 31 мая 2020 года?</question>Этот приём делает две вещи. Модель фокусируется на нужных фрагментах и перестаёт «видеть» отвлекающие цифры в остальном тексте. И вы получаете проверяемый след: если цитата не отвечает на вопрос, это видно сразу. В примере с отчётом модель, выписав цитату, замечает, что в ней другая дата, и правильно отвечает «данных на эту дату нет».
Для длинных документов документация советует ставить документ в начало промпта, а вопрос и инструкции — в конец: так модель лучше удерживает задачу. Больше об этом в уроке «Поиск и извлечение данных».
Приём третий: проверять, а не верить
Промпт снижает вероятность выдумки, но не до нуля. Поэтому часть работы — на вашей стороне.
Проверяйте всё, что можно проверить: имена функций — в документации, цифры — в источнике, ссылки — открыв их. Особенно подозрительны точные цифры без источника, ссылки на статьи и стандарты, цитаты «из документа», которых вы не видите глазами.
Спрашивайте об уверенности: «оцени, насколько ты уверен в каждом пункте, и объясни почему». Модель неплохо различает, что она знает твёрдо, а что реконструирует.
Разбивайте: если ответ большой, попросите отдельно «факты из документа» и отдельно «выводы и предположения». Смешанный текст читается убедительно целиком, а раздельный показывает, где почва твёрдая.
Температура: в API снижение температуры до нуля делает ответы стабильнее и чуть реже «творческими» в плохом смысле. Это не лекарство от галлюцинаций, но полезный фон для задач на точность.
Что изменилось в новых моделях
Современные модели Claude заметно реже выдумывают и лучше признают незнание. Бегемота они не придумают. Но на сложных документах, редких библиотеках, свежих событиях и собственном коде проекта галлюцинации остаются — и приёмы выше по-прежнему нужны. Для работы с кодом документация советует прямо запрещать рассуждать о файлах, которых модель не открывала: «никогда не делай утверждений о коде, который ты не прочитал».
Пример из работы
Из нашего опыта: при подготовке сайта для клиента модель заполнила карточки работ правдоподобными деталями — сроки, материалы, «шоурум», — которых клиент не называл. Текст читался гладко, и ошибка обнаружилась только при вычитке. Исправленный промпт содержал правило «публикуй факт, только если он есть в <client_materials>; если данных нет — пиши „уточнить у клиента“ вместо правдоподобного значения» и просьбу к каждому факту прикладывать цитату из материалов. Выдуманные детали исчезли, а на их месте появился список вопросов клиенту — что и требовалось.
Попробуйте сами
10–15 мин на рабочем месте- Задайте Claude вопрос с ложной предпосылкой из своей области, например «какой параметр в версии 3.2 библиотеки X отвечает за Y?» про несуществующую версию, или «в каком году агентство Z получило премию W?» про выдуманную премию. Сначала без выхода, потом с «сначала проверь, верна ли предпосылка; если нет — скажи об этом».
- Возьмите длинный документ (ТЗ, договор, отчёт) и задайте вопрос, ответа на который в нём нет, но есть похожие данные. Сначала «ответь кратко», потом с требованием цитат в
<quotes>и разрешением сказать «в документе нет». Сравните. - Попросите Claude написать короткую справку о какой-нибудь библиотеке или сервисе, который вы хорошо знаете, с просьбой отметить уверенность в каждом утверждении. Проверьте утверждения. Совпала ли самооценка модели с реальностью?
Коротко
- Модель выдумывает, потому что «быть полезной» перевешивает «не знать»; дайте ей разрешение сказать «не знаю».
- При работе с документом требуйте дословные цитаты в
<quotes>до ответа и ответ только по ним. - Проверяйте на ложные предпосылки: «сначала проверь, верна ли предпосылка вопроса».
- Разделяйте факты и предположения; спрашивайте об уверенности; проверяйте цифры и ссылки сами.
- Новые модели галлюцинируют реже, но на редких данных и своём коде приёмы по-прежнему нужны.
Видеоверсия
Сценарий озвучки · 459 слов, ≈ 4 мин
Галлюцинация — это когда модель уверенно утверждает то, чего нет. Несуществующую функцию библиотеки, неверную дату, факт о клиенте, которого клиент не говорил. Полностью это не лечится, но промптом сокращается сильно.
Почему модель придумывает. Она обучена быть полезной и продолжать текст правдоподобно. Когда ответа она не знает, у неё два пути: сказать «не знаю» или сгенерировать что-то похожее на правду. Без явного разрешения первый путь проигрывает. Так появляются выдуманные ссылки и параметры. Второй источник — отвлекающие данные: в документе есть цифра, похожая на нужную, но за другой период, и модель берёт её. Третий — вопросы с ложной предпосылкой: «в каком году вышел восьмой альбом», а альбомов семь. Модель прошлого поколения называла год, потому что вопрос предполагал, что альбом есть.
Первый приём — дать выход. Просто разрешить не отвечать: «отвечай, только если уверен; если не знаешь — так и напиши». Это меняет баланс: теперь «не знаю» — тоже полезный ответ. В туториале есть вопрос «кто самый тяжёлый бегемот в истории». Без выхода модель выдавала имена и веса. С фразой «отвечай, только если знаешь точно» — честно признавалась, что таких данных нет. Полезные формулировки: «отметь, что из ответа факты, а что предположения», «не придумывай названия функций и версий, если не помнишь — напиши, что нужно проверить», и для ложных предпосылок — «сначала проверь, верна ли предпосылка вопроса».
Второй приём — сначала цитаты, потом ответ. Когда ответ должен опираться на документ, попросите модель сначала выписать дословные цитаты в тег «quotes», а потом отвечать только по ним. Если подходящих цитат нет — сказать об этом. Модель фокусируется на нужных фрагментах и перестаёт видеть отвлекающие цифры. А вы получаете проверяемый след: если цитата не отвечает на вопрос, это видно сразу. Для длинных документов документ ставьте в начало промпта, а вопрос — в конец.
Третий приём — проверять, а не верить. Промпт снижает вероятность выдумки, но не до нуля. Проверяйте имена функций в документации, цифры в источнике, ссылки — открывая их. Особенно подозрительны точные цифры без источника и цитаты, которых вы не видите глазами. Спрашивайте об уверенности: модель неплохо различает, что знает твёрдо, а что реконструирует. И разделяйте: отдельно факты из документа, отдельно выводы. Смешанный текст читается убедительно целиком.
Современные модели Claude выдумывают заметно реже. Бегемота они не придумают. Но на сложных документах, редких библиотеках и собственном коде проекта галлюцинации остаются. Для кода документация советует прямо запрещать рассуждать о файлах, которые модель не открывала.
Пример из нашей практики. При подготовке сайта для клиента модель заполнила карточки работ правдоподобными деталями — сроки, материалы, — которых клиент не называл. Текст читался гладко, и ошибка нашлась только при вычитке. Исправленный промпт требовал публиковать факт, только если он есть в материалах клиента, а иначе писать «уточнить у клиента». Выдуманные детали исчезли, а на их месте появился список вопросов клиенту.
Попробуйте: задайте вопрос с ложной предпосылкой из своей области, сначала без выхода, потом с проверкой предпосылки. В следующем уроке соберём все приёмы курса в один большой промпт.
