AmigaОбучение ИИ
Модуль 3 · Продвинутый уровень · урок 9 из 13

Как уменьшить галлюцинации

11 мин чтения▶ есть видеоверсия

Галлюцинация — это когда модель уверенно утверждает то, чего нет: несуществующую функцию библиотеки, неверную дату, «факт» о клиенте, которого клиент не говорил. Полностью это не лечится, но сильно сокращается промптом. В уроке — почему модель придумывает, какие приёмы работают и что менять в собственных привычках.

Почему модель придумывает

Модель обучена быть полезной и продолжать текст правдоподобно. Когда она не знает ответа, у неё есть два пути: сказать «не знаю» или сгенерировать правдоподобный ответ. Без явного разрешения первый путь проигрывает: «быть полезным» перевешивает. Так появляются выдуманные ссылки, параметры API и цитаты.

Второй источник — отвлекающие данные. Если в документе есть цифра, похожая на нужную, но относящаяся к другому периоду или другой метрике, модель может взять её, потому что она «подходит по форме». В туториале это показано на годовом отчёте компании: вопрос про число подписчиков на конкретную дату, а в документе есть число на другую дату — и модель отвечает им.

Третий — вопросы с ложной предпосылкой. «В каком году вышел восьмой альбом исполнительницы?» — а у неё их семь. Модель прошлого поколения называла год восьмого альбома, которого не существует, потому что вопрос предполагает, что он есть.

Приём первый: дать выход

Самое простое и самое действенное — разрешить модели не отвечать. «Отвечай, только если уверен. Если не знаешь — так и напиши». Или строже: «Если в документе нет информации, достаточной для ответа, ответь „в документе этого нет“ и не пытайся угадать».

Это звучит как мелочь, но меняет баланс: теперь «не знаю» — тоже полезный ответ, и модель им пользуется. Пример из туториала — «кто самый тяжёлый бегемот в истории?»: без выхода модель прошлого поколения выдавала имена и веса, с добавкой «отвечай, только если знаешь точно» — честно признавалась, что таких данных у неё нет.

Формулировки, которые работают:

  • «Если не уверен, скажи об этом прямо, а не угадывай».
  • «Отметь, какие части ответа — факты из документа, а какие — твои предположения».
  • «Если требования допускают несколько трактовок, перечисли их, а не выбирай одну».
  • «Не придумывай названия функций, параметров и версий; если не помнишь точно, напиши „нужно проверить в документации“».

Для вопросов с ложной предпосылкой добавьте: «Сначала проверь, верна ли предпосылка вопроса».

Приём второй: сначала цитаты, потом ответ

Когда ответ должен опираться на документ, попросите модель сначала выписать дословные цитаты, относящиеся к вопросу, а потом отвечать только на их основе:

text
Прочитай документ и ответь на вопрос.

Сначала в тегах <quotes> приведи дословные цитаты из документа,
которые относятся к вопросу. Если подходящих цитат нет — напиши
об этом в <quotes> и в ответе скажи, что документ не содержит
нужной информации.

Затем в <answer> дай ответ, опираясь только на приведённые цитаты.

<document>
…
</document>

<question>Сколько пользователей было у сервиса на 31 мая 2020 года?</question>

Этот приём делает две вещи. Модель фокусируется на нужных фрагментах и перестаёт «видеть» отвлекающие цифры в остальном тексте. И вы получаете проверяемый след: если цитата не отвечает на вопрос, это видно сразу. В примере с отчётом модель, выписав цитату, замечает, что в ней другая дата, и правильно отвечает «данных на эту дату нет».

Для длинных документов документация советует ставить документ в начало промпта, а вопрос и инструкции — в конец: так модель лучше удерживает задачу. Больше об этом в уроке «Поиск и извлечение данных».

Приём третий: проверять, а не верить

Промпт снижает вероятность выдумки, но не до нуля. Поэтому часть работы — на вашей стороне.

Проверяйте всё, что можно проверить: имена функций — в документации, цифры — в источнике, ссылки — открыв их. Особенно подозрительны точные цифры без источника, ссылки на статьи и стандарты, цитаты «из документа», которых вы не видите глазами.

Спрашивайте об уверенности: «оцени, насколько ты уверен в каждом пункте, и объясни почему». Модель неплохо различает, что она знает твёрдо, а что реконструирует.

Разбивайте: если ответ большой, попросите отдельно «факты из документа» и отдельно «выводы и предположения». Смешанный текст читается убедительно целиком, а раздельный показывает, где почва твёрдая.

Температура: в API снижение температуры до нуля делает ответы стабильнее и чуть реже «творческими» в плохом смысле. Это не лекарство от галлюцинаций, но полезный фон для задач на точность.

Что изменилось в новых моделях

Современные модели Claude заметно реже выдумывают и лучше признают незнание. Бегемота они не придумают. Но на сложных документах, редких библиотеках, свежих событиях и собственном коде проекта галлюцинации остаются — и приёмы выше по-прежнему нужны. Для работы с кодом документация советует прямо запрещать рассуждать о файлах, которых модель не открывала: «никогда не делай утверждений о коде, который ты не прочитал».

Пример из работы

Из нашего опыта: при подготовке сайта для клиента модель заполнила карточки работ правдоподобными деталями — сроки, материалы, «шоурум», — которых клиент не называл. Текст читался гладко, и ошибка обнаружилась только при вычитке. Исправленный промпт содержал правило «публикуй факт, только если он есть в <client_materials>; если данных нет — пиши „уточнить у клиента“ вместо правдоподобного значения» и просьбу к каждому факту прикладывать цитату из материалов. Выдуманные детали исчезли, а на их месте появился список вопросов клиенту — что и требовалось.

Попробуйте сами

10–15 мин на рабочем месте
  1. Задайте Claude вопрос с ложной предпосылкой из своей области, например «какой параметр в версии 3.2 библиотеки X отвечает за Y?» про несуществующую версию, или «в каком году агентство Z получило премию W?» про выдуманную премию. Сначала без выхода, потом с «сначала проверь, верна ли предпосылка; если нет — скажи об этом».
  2. Возьмите длинный документ (ТЗ, договор, отчёт) и задайте вопрос, ответа на который в нём нет, но есть похожие данные. Сначала «ответь кратко», потом с требованием цитат в <quotes> и разрешением сказать «в документе нет». Сравните.
  3. Попросите Claude написать короткую справку о какой-нибудь библиотеке или сервисе, который вы хорошо знаете, с просьбой отметить уверенность в каждом утверждении. Проверьте утверждения. Совпала ли самооценка модели с реальностью?

Коротко

  • Модель выдумывает, потому что «быть полезной» перевешивает «не знать»; дайте ей разрешение сказать «не знаю».
  • При работе с документом требуйте дословные цитаты в <quotes> до ответа и ответ только по ним.
  • Проверяйте на ложные предпосылки: «сначала проверь, верна ли предпосылка вопроса».
  • Разделяйте факты и предположения; спрашивайте об уверенности; проверяйте цифры и ссылки сами.
  • Новые модели галлюцинируют реже, но на редких данных и своём коде приёмы по-прежнему нужны.

Видеоверсия

Сценарий озвучки · 459 слов, ≈ 4 мин

Галлюцинация — это когда модель уверенно утверждает то, чего нет. Несуществующую функцию библиотеки, неверную дату, факт о клиенте, которого клиент не говорил. Полностью это не лечится, но промптом сокращается сильно.

Почему модель придумывает. Она обучена быть полезной и продолжать текст правдоподобно. Когда ответа она не знает, у неё два пути: сказать «не знаю» или сгенерировать что-то похожее на правду. Без явного разрешения первый путь проигрывает. Так появляются выдуманные ссылки и параметры. Второй источник — отвлекающие данные: в документе есть цифра, похожая на нужную, но за другой период, и модель берёт её. Третий — вопросы с ложной предпосылкой: «в каком году вышел восьмой альбом», а альбомов семь. Модель прошлого поколения называла год, потому что вопрос предполагал, что альбом есть.

Первый приём — дать выход. Просто разрешить не отвечать: «отвечай, только если уверен; если не знаешь — так и напиши». Это меняет баланс: теперь «не знаю» — тоже полезный ответ. В туториале есть вопрос «кто самый тяжёлый бегемот в истории». Без выхода модель выдавала имена и веса. С фразой «отвечай, только если знаешь точно» — честно признавалась, что таких данных нет. Полезные формулировки: «отметь, что из ответа факты, а что предположения», «не придумывай названия функций и версий, если не помнишь — напиши, что нужно проверить», и для ложных предпосылок — «сначала проверь, верна ли предпосылка вопроса».

Второй приём — сначала цитаты, потом ответ. Когда ответ должен опираться на документ, попросите модель сначала выписать дословные цитаты в тег «quotes», а потом отвечать только по ним. Если подходящих цитат нет — сказать об этом. Модель фокусируется на нужных фрагментах и перестаёт видеть отвлекающие цифры. А вы получаете проверяемый след: если цитата не отвечает на вопрос, это видно сразу. Для длинных документов документ ставьте в начало промпта, а вопрос — в конец.

Третий приём — проверять, а не верить. Промпт снижает вероятность выдумки, но не до нуля. Проверяйте имена функций в документации, цифры в источнике, ссылки — открывая их. Особенно подозрительны точные цифры без источника и цитаты, которых вы не видите глазами. Спрашивайте об уверенности: модель неплохо различает, что знает твёрдо, а что реконструирует. И разделяйте: отдельно факты из документа, отдельно выводы. Смешанный текст читается убедительно целиком.

Современные модели Claude выдумывают заметно реже. Бегемота они не придумают. Но на сложных документах, редких библиотеках и собственном коде проекта галлюцинации остаются. Для кода документация советует прямо запрещать рассуждать о файлах, которые модель не открывала.

Пример из нашей практики. При подготовке сайта для клиента модель заполнила карточки работ правдоподобными деталями — сроки, материалы, — которых клиент не называл. Текст читался гладко, и ошибка нашлась только при вычитке. Исправленный промпт требовал публиковать факт, только если он есть в материалах клиента, а иначе писать «уточнить у клиента». Выдуманные детали исчезли, а на их месте появился список вопросов клиенту.

Попробуйте: задайте вопрос с ложной предпосылкой из своей области, сначала без выхода, потом с проверкой предпосылки. В следующем уроке соберём все приёмы курса в один большой промпт.

Отметка хранится только в вашем браузере