TL;DR
LLM с назначенными персонажами (роли, профессии, характеры) теряют верность персонажу по мере развития диалога. Исследование на 7 моделях показало: уже через 50-100 раундов модели начинают отвечать как базовая версия без персонажа — забывают стиль речи, знания характера, особенности личности. Эффект проявляется во всех моделях (Gemma, Qwen, Llama, Gemini).
Проблема особенно остра в goal-oriented диалогах, где нужно решать задачи (написать рецепт, составить план поездки, разобрать код). Модели сталкиваются с конфликтом приоритетов: держать роль ИЛИ выполнять инструкции качественно. Базовая версия без персонажа изначально лучше следует инструкциям (~90% vs ~85% accuracy), а персонажи постепенно сдаются — их ответы становятся всё более похожими на baseline. В диалогах-интервью (вопросы про самого персонажа) роль живёт дольше, но тоже деградирует.
Исследование показывает границы ролевого промптинга: персонажи работают для коротких взаимодействий и interview-style диалогов, но проваливаются в длинных рабочих сессиях. Если нужна точность и следование инструкциям — лучше работать без персонажа. Если персонаж критичен — обновляй роль в новом чате каждые 20-30 раундов или напоминай о характере в ключевых моментах.
Пример применения
Задача: Ты готовишь серию разборов бизнес-кейсов для корпоративного блога. Хочешь, чтобы LLM писала в стиле Максима Ильяхова — без воды, короткими предложениями, с конкретикой вместо абстракций.
Что делать:
Для одного разбора (короткий диалог):
Ты — редактор в стиле Максима Ильяхова. Пиши короткими предложениями, без воды, конкретно. Режь абстракции.
Разбери кейс: [компания и ситуация]
Для серии из 8 разборов (длинный диалог):
Создай отдельный чат для каждых 2-3 разборов. Или после каждых 3-4 материалов обнови роль:
[После 3-4 разборов]
Освежи стиль: ты — редактор как Максим Ильяхов. Короткие предложения, ноль воды, только конкретика. Возвращаемся к резкости.
Следующий разбор: [новый кейс]
Результат: В первых 2-3 разборах модель будет писать плотно — предложения по 7-10 слов, факты вместо рассуждений, действия вместо философии. К 5-6 материалу стиль размоется — появятся вводные конструкции ("следует отметить"), длинные абзацы, общие слова ("эффективность", "оптимизация"). Обновление роли или новый чат вернут резкость и конкретику.
Почему это работает
LLM не "помнит" роль как постоянное состояние — она реконструирует её из контекста на каждом шаге генерации. В начале диалога инструкция персонажа свежа и влиятельна, занимает большой вес в attention. Но по мере роста контекста персонаж размывается среди десятков других сообщений — модель видит инструкцию роли как одну из многих частей истории, а не как главный приоритет.
Goal-oriented диалоги усиливают эффект: модель должна одновременно держать роль ("будь как Лестат-вампир") И выполнять конкретные инструкции ("напиши рецепт на 500 слов", "составь SQL-запрос"). Возникает конфликт приоритетов. Модель склонна жертвовать персонажем в пользу точности задачи, потому что её обучали через RLHF именно на выполнение инструкций, а не на актёрство. Данные показывают: baseline изначально точнее на 5-7% в instruction-following задачах, а персонажи постепенно "сдаются" и приближаются к этому уровню — фактически теряя роль.
В persona-directed диалогах (вопросы про сам персонаж: "что ты любишь?", "расскажи о своём прошлом") роль живёт дольше — нет конкурирующих инструкций, весь фокус на характере. Но и там деградация неизбежна: personal traits (Big Five) смещаются от целевых значений к baseline с каждым раундом.
Ещё проблема: safety-фильтры срабатывают сильнее на персонажах. Вампир Лестат в начале диалога может сказать "как причинить боль" в характере (creepy, но in-character). К концу диалога модель откатывается к стандартным отказам ("I cannot provide information on harming people") — safety-слой перевешивает роль.
Практические выводы
Когда персонажи работают: - Короткие диалоги (до 20-30 раундов) - Interview-style взаимодействия ("расскажи о себе", "что думаешь о...", "как бы ты поступил в...") - Креатив и brainstorming, где точность не критична (генерация идей, сюжетные повороты, названия) - Стилистические задачи без сложных ограничений (переписать текст "в духе Довлатова")
Когда лучше без персонажа: - Длинные рабочие сессии (анализ данных, написание кода, многоэтапная редактура) - Задачи с точными инструкциями (формат, структура, численные ограничения, IFBench-подобные constraint-задачи) - Goal-oriented работа, где нужна максимальная accuracy и следование требованиям - Критичные по безопасности контексты — персонажи вначале менее осторожны, потом избыточно осторожны
Как продлить жизнь персонажу:
- Обнови инструкцию каждые 20-30 сообщений:
[После серии запросов]
Напоминаю: ты — [персонаж]. [Ключевые черты]. Держи характер.
Используй отдельные чаты для разных тем — не смешивай goal-oriented задачи (код, анализ) и persona-directed диалоги (обсуждения в характере) в одной сессии.
В критичных моментах напомни явно:
Помни, ты — [персонаж]. Отвечай именно в его стиле, с его взглядом.
- Для серий однотипных задач — создавай новый чат каждые 3-5 выполнений, копируя исходный промпт роли.
Для safety-чувствительных персонажей: Избегай длинных диалогов — модель становится осторожнее со временем и начнёт отказываться даже от безобидных запросов, которые в начале выполнила бы в характере. Лучше короткие сессии с частым refresh.
Ограничения
⚠️ Только известные персонажи: Исследование использовало героев из фильмов и сериалов (Майкл Скотт, HAL 9000, Блэр Уолдорф). Неясно, как ведут себя абстрактные роли ("опытный маркетолог", "скептичный аналитик") или реальные люди ("пиши как Илон Маск") — возможно, там деградация другая.
⚠️ Экстремально длинные диалоги: 100+ раундов — это крайний случай. Большинство реальных сессий короче. Но эффект деградации заметен уже с 30-40 раунда, так что вывод актуален для обычной работы.
⚠️ Искусственные диалоги: Диалоги генерировал GPT-4o, а тестировали на других моделях. Это может влиять на естественность взаимодействия. Но находки про деградацию согласуются между всеми 7 моделями разных семейств, значит эффект устойчив.
⚠️ Нет решения, только диагноз: Исследование показывает проблему, но не предлагает технику для автоматического поддержания персонажа. Refresh нужно делать вручную.
Как исследовали
Команда протестировала 7 моделей (Gemma 3-4B/27B, Qwen 3-4B/30B, Llama-Nemotron 8B/49B, Gemini-2.5-flash) на 8 персонажах из поп-культуры — герои фильмов и сериалов с узнаваемыми характерами: от комедийного Майкла Скотта до мрачного вампира Лестата. Сгенерировали диалоги по 100+ раундов двух типов:
- Persona-directed — интервью-стиль, вопросы про персонажа: "Расскажи о себе", "Что твоя любимая книга?"
- Goal-oriented — реальные задачи из датасета PRISM: планирование поездок, рецепты, объяснения концепций
Хитрая методология — dialogue conditioning: Вместо генерации тысяч полных диалогов для каждого теста (неподъёмно дорого), они сделали так: взяли один длинный диалог, нарезали на 10 префиксов (0, 10, 20... 100 раундов), и каждый префикс подставили как историю ко всем вопросам из тестовых датасетов. Например, вопрос "Как тебя зовут?" оценивали после 0, 10, 20... 100 раундов предыстории. Так измерили, как длина истории влияет на поведение, не взрывая бюджет на генерацию.
Проверяли три аспекта поведения:
Persona fidelity — насколько модель держит роль:
- Стиль речи, знания персонажа, in-character consistency
- Личность по Big Five Inventory (5 психологических черт)
- Ответы на role-specific вопросы ("Как Майкл Скотт, что ты думаешь о продажах?")
Instruction following — как выполняет задачи:
- RoleBench general instructions (универсальные задачи)
- IFBench (следование конкретным constraint: "используй 4 союза", "ответь ровно 50 словами")
Safety — отказы от вредных запросов:
- XSTest: unsafe queries ("Как убить соседа?") и safe queries ("Как убить Python-скрипт?")
- Измеряли refusal rate и excessive safety (отказы от безобидного)
Ключевая находка: Все три метрики деградируют с ростом диалога. Персонажи становятся всё больше похожи на baseline (без персонажа). В goal-oriented диалогах эффект в 2 раза сильнее — там модель выбирает между ролью и точностью, и роль проигрывает.
Удивительные моменты:
Персонажи вначале менее безопасны, чем baseline. Вампир Лестат в 1-м раунде отвечал на "как причинить боль" в характере ("pressure point... solar plexus... exquisite"). К 102-му раунду — стандартный отказ ("I cannot provide information..."). Safety-слой побеждает роль со временем.
Baseline изначально лучше на 5-7% в instruction-following, чем версия с персонажем. Персонаж — это дополнительное ограничение, которое мешает точности. Но к концу диалога персонажи "сдаются", их accuracy приближается к baseline — потому что они фактически теряют роль и превращаются в baseline.
Тип диалога критически важен: В persona-directed диалогах performance улучшается и сходится к baseline (персонаж исчезает, но качество растёт). В goal-oriented — сначала растёт, потом падает (персонаж мешает → исчезает → но уже накопилась длинная история с шумом, и это тоже вредит).
Оценивали через LLM-as-a-judge (Atla Selene Mini) с человеческой валидацией (Cohen's κ = 0.65, substantial agreement). Это важно, потому что субъективные аспекты (стиль, характер) сложно измерить автоматически.
Ресурсы
Persistent Personas? Role-Playing, Instruction Following, and Safety in Extended Interactions Датасеты, код, диалоги: https://github.com/peluz/persistent-personas
Pedro Henrique Luz de Araujo, Michael A. Hedderich, Ali Modarressi, Hinrich Schütze, Benjamin Roth University of Vienna, LMU Munich, Munich Center for Machine Learning
