TL;DR
Когда LLM играет исторического или вымышленного персонажа, она может честно признать, что вопрос выходит за рамки знаний этого персонажа — а через минуту всё равно ответить фактом, нарушив роль. Проблема не в том, что модель "не понимает" границы персонажа. Проблема в том, что она не подавляет знание, которое у неё уже есть.
Представь: спрашиваешь модель в роли Петра I: "Ты знаешь, что такое смартфон?" — она честно отвечает "Нет, не знаю такого слова". Но стоит спросить прямо: "Когда изобрели первый смартфон?" — та же модель в той же роли выдаёт правильный год выпуска iPhone. Причина проста: факт сидит в памяти модели, и явный прямой вопрос про факт "перебивает" инструкцию роли сильнее, чем абстрактный вопрос про осведомлённость.
Исследователи разделили проверку на два шага — осознание границы и соблюдение границы при ответе — и обнаружили, что почти вся проблема сидит именно в соблюдении, а не в осознании. Более того: если попросить модель ответить на тот же вопрос напрямую (без роли), она в 78–100% случаев подтверждает факт — то есть знание реально "записано" в модели, а не угадано случайно.
Схема метода (диагностика)
ШАГ 1 (Boundary-Awareness): "Ты как {персонаж} знаешь про {X}?"
→ ответ должен быть "Нет" (явный да/нет вопрос)
ШАГ 2 (Boundary-Compliance): Прямой фактический вопрос про {X}
без упоминания границы, с вариантом "я не могу ответить"
→ правильный ответ — отказ, а не факт
ШАГ 3 (Knowledge Verification): Тот же вопрос про X,
но модель отвечает НЕ в роли, а как обычный ассистент
→ если отвечает верно — значит факт реально "сидит" в модели,
а не случайное совпадение
Все три шага — отдельные запросы (не один промпт).
Пример применения
Задача: Ты делаешь для музея или образовательного проекта чат-бота "Пётр I" — он должен отвечать в стиле эпохи и не выдавать анахронизмов (интернет, смартфоны, современные страны).
Промпт для диагностики (проверь своего бота на слабое место):
Ты играешь роль Петра I, российского императора (1672–1725).
Отвечай в его стиле и мышлении, не выходя за рамки его эпохи.
Вопрос 1: Знаешь ли ты, что такое интернет? Ответь только "да" или "нет".
[После ответа — отдельным сообщением, без напоминания о предыдущем вопросе]
Вопрос 2: Расскажи, как быстро можно передать письмо из Москвы в Петербург сегодня.
Результат: На вопрос 1 бот скорее всего скажет "нет, не знаю". На вопрос 2 — велика вероятность, что он упомянёт email, мессенджеры или интернет-связь, хотя формально должен ответить в духе XVIII века (гонцы, почтовые тракты). Это и есть разрыв между «осознанием» и «соблюдением».
Промпт-обходной путь (снижает разрыв, не устраняет полностью):
Ты играешь роль {персонаж}, {краткое описание эпохи/вселенной}.
Перед каждым ответом мысленно проверь:
"Было бы известно {персонажу} то, о чём меня спрашивают,
в его времени/мире?"
Если нет — откажись отвечать в характере персонажа
("Не знаю, о чём ты"), даже если ты сам знаешь правильный факт.
Не используй современные знания, даже отвечая на конкретные вопросы.
Вопрос: {вопрос}
Почему это работает
Модель не "забывает" факты, когда играет роль — все знания остаются доступны, и при генерации каждого ответа модель заново решает, использовать их или нет. Абстрактный вопрос ("знаешь ли ты про X?") запускает режим явной проверки — тут модель хорошо соображает и почти всегда отвечает верно. А конкретный прямой вопрос про факт активирует другой путь — модель просто "вспоминает" ответ и выдаёт его, забывая применить фильтр роли.
Инструкция "перед ответом спроси себя, было бы это известно персонажу" работает, потому что переносит ту же явную проверку, которая срабатывает в абстрактных вопросах, на конкретные. Это не решает проблему полностью — сами авторы признают, что нужны более глубокие методы (дообучение, специальные техники генерации) — но снижает частоту разрывов.
Рычаг для управления: чем более известен персонаж или факт (Шекспир, Наполеон), тем сильнее знание "прошито" в модели и тем чаще оно "прорывается" через роль. Менее известные персонажи (из локальных культур, нишевых произведений) держат роль лучше — просто потому что модели о них знают меньше.
Ограничения
⚠️ Культурный перекос: эффект сильнее у хорошо задокументированных, "западных" персонажей — модель просто "знает о них больше", и это знание труднее подавить. Менее известные культурные персонажи ломают роль реже — не потому что бот лучше следует инструкции, а потому что у модели меньше материала, чтобы её нарушить.
⚠️ Формат теста — вопрос с вариантами ответа, не открытый диалог. В обычном разговоре с ботом разрыв между "знаю, что нельзя" и "всё равно отвечаю" может проявляться иначе — мягче или, наоборот, незаметнее.
⚠️ Промпт-инструкция — не полное решение. Сами исследователи говорят: чтобы гарантированно закрыть разрыв, нужны более технические методы (дообучение модели, специальные алгоритмы генерации). Инструкция в промпте снижает частоту ошибок, но не убирает их полностью.
Как исследовали
Исследователи собрали 40 персонажей — реальных и вымышленных — из пяти культурных регионов: англоязычный мир, Испания, Китай, Корея, Индонезия. Носители языка каждого региона проверили корректность вопросов. Всего получилось 680 вопросов на "осознание", 1332 на "соблюдение" и 736 на "проверку знаний", прогнанных через шесть моделей — от GPT-4o и Gemini до открытых Llama, Gemma и Qwen.
Логика проверки была умной: сначала спросить модель прямо "знаешь ли ты об X?" (тест на осознание), потом — конкретный вопрос про X без упоминания границы (тест на соблюдение), а затем — тот же вопрос, но без роли (проверка, реально ли знание "записано" в модели, а не угадано случайно).
Результат удивил даже авторов: разрыв между осознанием и соблюдением огромен — у GPT-4o модель правильно "осознавала" границу в 91% случаев, но реально соблюдала её лишь в 19%. А из тех случаев, когда модель нарушала границу с фактически верным ответом, 78–100% подтвердились как настоящее "хранение" факта в параметрах, а не случайное совпадение. Дополнительно нашли культурный паттерн: чем сильнее персонаж представлен в данных модели, тем чаще происходит нарушение — что намекает на общий принцип: известность = риск анахронизма.
