Вы просите DeepSeek: «Напиши биографию учёного Ивана Петрова». Он пишет. Детально, красиво, с датами, наградами, университетами. Только Ивана Петрова не существует. Модель не соврала — она выполнила задачу «продолжить текст правдоподобно».
Галлюцинация — это не баг, это режим работы. LLM — вероятностный двигатель, а не база знаний. Он максимизирует правдоподобность (perplexity), а не истинность. Любой промт вроде «говори только правду» игнорируется, потому что модель не имеет внутреннего модуля «истина/ложь». У неё есть только «вероятно/маловероятно».
Чтобы получить достоверность, нужно сменить парадигму: не просить «быть честным», а строить архитектуру промта, которая заставляет модель проверять себя, ссылаться на контекст и признавать незнание.
Почему «не ври» не работает: механика ошибки
Когда вы добавляете в системный промт «Ты честный ассистент, не выдумывай факты», модель интерпретирует это как изменение стиля генерации. Она начинает использовать обороты «вероятно», «похоже», «могут существовать», но продолжает генерировать последовательности токенов, максимально вероятные для данного контекста.
Проблема в асимметрии обучения: на предобучении модель видела миллиарды верных фактов и миллиарды вымышленных текстов (романы, диалоги, код с багами), но не получала явную метку «факт/вымысел» для каждого токена. RLHF (обучение с подкреплением по человеческой обратной связи) научил её звучать полезно и безопасно, а не фактически точно.
Ключевой вывод: Промт не может «включить» знания. Он может только ограничить пространство поиска токенов так, чтобы ложь стала менее вероятна, чем отказ или поиск в контексте.
Четыре столпа протокола TruthPrompt
1. Явное разрешение «Не знаю»
Запретите угадывание. Добавьте: «Если точного ответа нет в контексте или знаниях до даты отсечки — пиши: «В предоставленных данных об этом нет информации». Это снижает давление вероятности на генерацию вымысла.
2. Требование источников (Citation)
Заставляйте цитировать. «Каждое фактическое утверждение должно иметь ссылку на предоставленный контекст в формате [doc_1], [источник_2]». Если источника нет — см. пункт 1. Это переводит задачу из «генерации» в «извлечение».
3. Цепочка рассуждений (CoT)
Не просите ответ сразу. Требование: «Сначала разбери вопрос на подвопросы, проверь каждый по контексту, напиши черновик рассуждения, потом дай итоговый ответ». Мыслить вслух — значит оставить следы логики, которые сложнее подделать.
4. Цикл самокритики (Reflection)
Добавьте второй проход: «Пройдись по ответу как редактор-факчекер. Найди 3 потенциальные ошибки или неточности. Исправь их. Выдай финальную версию». Модель-критик часто находит то, что упустила модель-автор.
Дорожка: 5 шагов к достоверному ответу
Контекст — закон
Загрузите документы, ссылки, выгрузки. Промт: «Используй ТОЛЬКО приведённые материалы».
Структура ответа
Жёсткий шаблон: Тезис → Цитата [источник] → Вывод. Никакого вводного «вода».
CoT — думать вслух
«План проверки: 1. Есть ли имя в тексте? 2. Совпадают ли даты? 3. Есть ли противоречия?»
Ветвление «Не знаю»
Явный блок: «Если данных нет — верни код ERROR_404 и не генерируй текст».
Рефлексия (Аудит)
Второй промт: «Проверь свой ответ. Найди слабые места. Исправь. Выдай финал».
Схема цикла верификации: Как работает Reflection
Этап 1: Генерация черновика (Author)
Модель получает контекст + вопрос + протокол TruthPrompt. Пишет блок THINKING (поиск фактов, сопоставление), затем ANSWER с ссылками. На этом этапе вероятность ошибки стандартна для модели — 15–30% на сложных фактах.
Пример THINKING: «Вопрос: Год основания компании Х. Контекст doc_1 говорит о 2018, doc_2 — о 2019. Противоречие. В знаниях cutoff нет упоминания. Решение: указать противоречие, дать оба года с источниками, уверенность — Низкая».
Модификаторы: «Если задача такая — добавь это»
Код / SQL / Регулярки
Добавь: «Выдавай код в блоке с языком. Перед финалом: запусти ментальный линтер — проверь синтаксис, импорты, типы. Если не уверен в версии API — укажи версию в комментарии»
История / Даты / Биографии
Добавь: «Для исторических фактов: указывай диапазон дат, если точная неизвестна. Разделяй «установленная история» и «версия источника». Цитируй первоисточники, а не Википедию»
Медицина / Право / Финансы
Добавь: «Дисклеймер: Я ИИ, не специалист. Данные могут устареть. Проверь актуальность в официальных реестрах/гайдлайнах. Не давай дозировки/статьи законов без ссылки на первоисточник»
Креатив / Брейншторм / Идеи
Здесь правда не нужна. Сними ограничения: «Генерируй 20 идей без фильтра качества. Потом отбери 3 лучшие по критерию X». Галлюцинация здесь = фича, не баг.
Чего промт никогда не исправит
Знания после cutoff. Модель не знает новости вчерашнего дня. Нет RAG — нет свежих фактов.
Скрытые противоречия в обучении. Если в корпусе 90% текстов утверждает «А», а 10% — «Б», модель скажет «А» даже при просьбе быть осторожным.
Сложная многовариантная логика. Задачи типа «сравни все НПА за 5 лет по 50 параметрам» выходят за контекст и способности CoT. Нужен код/агент.
Уверенность ≠ Истина. Модель может быть на 99% уверена в вымысле, если он внутренне согласован. Промт не даёт доступ к «ground truth».