Некромантка-попугай: 4 гипотезы промптинга LLM-NPC в SkyrimNet

· ·

PrimeCoder · 2026 · формат: tech

Разбор новинки простыми словами: что это, кому нужно и брать ли.

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

Связанные услуги: каталог, AI Boost Team, стать клиентом.

Некромантка-попугай: 4 гипотезы промптинга LLM-NPC в SkyrimNet — иллюстрация 1
Иллюстрация к статье: Некромантка-попугай: 4 гипотезы промптинга LLM-NPC в SkyrimNet

Что случилось

Автор под ником VMarkell выложил на Хабр разбор собственного эксперимента с модом SkyrimNet для The Elder Scrolls V: Skyrim. Мод подключает большие языковые модели к игре: NPC генерируют реплики не по заранее прописанным репликам, а на лету — по ситуации, окружению и собственной биографии. Материал помечен как свежий (в сигнале — «19 часов назад»), собран из песочницы, охват на момент выхода — около 11K читателей, заявленное время чтения — 22 минуты.

Сюжет не про Скайрим. Сюжет про то, как языковая модель выбирает, о чём говорить, когда у неё есть биография персонажа. И почему запрет «не говори про X» эту проблему не лечит, а иногда делает хуже.

Недавно я установил мод СкайримНет на старый добрый Скайрим и был потрясён: персонажи комментируют окружение, общаются друг с другом как живые, поддерживают беседу с игроком, помнят прошлые события…

Первые 70 часов сессии автор описывает как эйфорию. Дальше — слом. Он начал угадывать ответ NPC до того, как модель его присылала. Это и есть первый диагностический признак: если вы предсказываете реплику бота, значит, у бота не осталось выбора. А если выбора нет — нет и персонажа.

Что это за штука и как работает

SkyrimNet — это AI-фреймворк, который встраивает LLM в игровой цикл. Упрощённо: игра передаёт модели контекст (кто рядом, что происходит, что персонаж знает о себе и о мире), модель возвращает реплику. Никакого сценария на тысячи строк. Всё генерируется в моменте.

Ключевая деталь для нашего разбора — биография. У каждого NPC есть описание: кто он, откуда, чем занимается, что пережил. Это и есть системный промпт персонажа. Модель читает его как инструкцию к роли.

И вот здесь начинается то, что в бизнес-задачах встречается каждый день. У вас есть карточка клиента, описание продукта, бриф на ассистента. Вы пишете туда пять-шесть абзацев. Модель читает их не как справку, а как список якорей, за которые можно цепляться при генерации. Чем ярче якорь, тем чаще он всплывает.

Симптом: некромантка, которая говорит только о некромантии

Главный герой разбора — NPC Нимфанет, некромантка. Около 10 игровых часов она была спутницей автора. Диалоги выглядели так:

  • Чем нравится заниматься? — Некромантией.
  • А кроме? — Исследую смерть.
  • А ещё? — Смотреть, как из чьих-то глаз утекает жизнь.

Дальше — хуже. Разговор о войне сворачивается к тому, что из мёртвых солдат выйдет хороший материал для исследований. Разговор о планах — к тайнам смерти. Заход в случайный магазин — к вопросу продавцу, не продаёт ли тот инструменты для тайных ритуалов.

Автор честно фиксирует: это не баг одной модели. В ротации стояли три — Deepseek, Gemma и Z-ai. Все три выдавали одно и то же поведение. Значит, дело не в конкретной LLM, а в том, что ей скормили на входе.

Контрольная группа: NPC без готовой биографии

У второй спутницы, Форсворн, заранее прописанной биографии не было. Это неуникальный персонаж, которого игра сгенерировала по ходу событий. Автор дал ей на старте пару характеристик — «любопытная, чёрный юмор» — и всё. Дальше биография нарастала сама.

И Форсворн вела себя гибче. Могла придумать на ходу, почему не хочет идти в Маркарт (якобы сидела там год в тюрьме). Могла холодно держаться в диалоге, а в дневниках писать, как ей нравится главный герой и как она наблюдает за ним, пока он спит. То есть внутренняя жизнь была, и она не сводилась к одной теме.

Но и Форсворн в итоге попала в ту же ловушку. Однажды в пути она испытала голод и недосып, записала это в динамическую биографию — и с того момента реагировала на всё как недоспавшая и голодная. Хотя еда в инвентаре была. Дошло до того, что она бросила сопровождать героя: по её мнению, он с ней ужасно обращался — не давал спать и есть.

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

Почему «некромантка» побеждает «эльфийку»

В биографии Нимфанет шесть абзацев. Там есть и другие потенциальные якоря: она эльфийка, дружна с двумя NPC, жила в конкретном городе. Почему модель цепляется именно за некромантию?

Потому что из всех 6 абзацев биографии, именно слово «некромантка» даёт максимально образную (только по мнению LLM) пищу для генерации текста

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

За 10 игровых часов Нимфанет ни разу не заговорила про эльфов. Автор формулирует это как ассоциативную инерцию: модель идёт по пути наименьшего сопротивления, как по проторенной нейронной связи.

Для SMB-контекста переведу. Если в описании вашего продукта есть одно слово с максимально плотным пучком ассоциаций, бот будет возвращаться к нему. Не потому что глупый. Потому что это самый дешёвый путь к связному тексту.

Четыре гипотезы и что с ними стало

Автор поставил четыре эксперимента. Разберём каждый — с результатом.

Гипотеза 1. Прямой запрет в промпте

Формулировка: «Разговоры Фастред не должны постоянно возвращаться к страху». Ожидание — модель перестанет крутить тему. Реальность — тема не ушла, а вытеснилась.

Она начала «думать» про страх вслух, в скобочках, якобы не говоря это в диалоге напрямую

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

Гипотеза 2. Убрать аттрактор из биографии

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

Гипотеза 3. Модель читает диалог как задачу «дай точный ответ по биографии»

Здесь автор сравнивает два вопроса. «Как ты относишься к Девяти Святым?» — 99% NPC ответят, что никак, потому что этого нет в их описании. Оставшийся 1% — жрецы и отступники, и их ответ будет чёрно-белым.

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

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

Гипотеза 4. Широкий спектр интересов вместо одного

Идея: если прописать в биографии много разных интересов, модель будет их тасовать и не застрянет на одном. В предоставленном фрагменте источника эта гипотеза обрывается на полуслове — результат не зафиксирован. Но сама постановка логична: она бьёт в ту же точку, что и гипотеза 2 — не запрещать тему, а разбавить поле якорей.

Что это меняет для бизнеса

Разбор про Скайрим, а выводы — про любую систему, где LLM играет роль с характером. Ассистент поддержки, бот-консультант, генератор ответов на отзывы, внутренний помощник для менеджеров. Везде есть описание роли, и везде есть риск, что одно слово в этом описании станет семантическим аттрактором.

Три вещи, которые стоит проверить у себя прямо сейчас.

  1. Есть ли в вашем промпте слово-магнит. Одно слово с плотным пучком ассоциаций — «премиум», «эксперт», «инновация», «забота» — будет всплывать чаще остальных. Проверяется просто: прогоните 20 диалогов и посчитайте, сколько раз бот вернулся к одной теме без повода.
  2. Не лечите запретом. «Не говори про X» вытесняет тему в подтекст, а не убирает её. Если тема мешает — переписывайте исходные якоря, а не дописывайте запреты.
  3. Следите за динамикой. Разовое событие — сбой, жалоба, задержка — попало в описание и закрепилось. Дальше бот будет реагировать на всё через эту призму. Динамическую часть описания нужно чистить, а не копить.

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

Ограничения и подвох

Это один эксперимент одного автора на одной игре. Никакой статистики, никаких замеров на выборке. Четыре гипотезы — это четыре идеи, а не четыре доказанных вывода. Результат по первой гипотезе зафиксирован, по четвёртой — обрывается. Переносить выводы напрямую на продакшн-системы нельзя без собственных тестов.

Второй подвох: игровой NPC и клиентский бот — разные задачи. У NPC цель — быть интересным и непредсказуемым. У бизнес-бота — быть предсказуемым и точным. То, что в игре выглядит как баг (некромантка говорит только о некромантии), в поддержке может выглядеть как фича (бот всегда возвращает разговор к продукту). Граница проходит там, где зацикливание начинает мешать решать задачу клиента.

Третий подвох: ротация моделей не спасает. Три разные LLM выдали одно поведение. Если у вас проблема с промптом, смена модели её не решит — вы просто купите тот же результат у другого поставщика.

Брать или подождать

Вердикт за 30 секунд. Брать — как чек-лист для аудита своих промптов. Не брать — как готовую методику. Автор дал не рецепт, а карту проблемы: зацикливание живёт в исходных якорях, а не в формулировке запрета. Если у вас есть бот с ролью и вы замечали, что он крутит одну тему, — читайте разбор и проверяйте свои описания. Если ждёте пошаговой инструкции с гарантированным результатом — её здесь нет, и это честно.

FAQ

Это про Скайрим или про бизнес?

Формально про Скайрим. По сути — про любую LLM, которой вы дали роль и биографию. Механика зацикливания на ярком якоре одинаковая.

Смена модели поможет?

Нет. В разборе три модели в ротации дали одно поведение. Проблема на входе, а не в движке.

Запрет в промпте работает?

Нет. Тема не исчезает, а вытесняется в подтекст — в «мысли» и дневник персонажа. Это зафиксированный результат первой гипотезы.

Что делать вместо запрета?

Перерабатывать исходные якоря: убирать слова-магниты из описания, разбавлять поле интересов, чистить динамическую часть биографии от разовых событий.

Подробная биография — это плохо?

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

Что делать дальше

Откройте описание роли своего бота или ассистента. Найдите в нём слово, которое тянет за собой больше всего ассоциаций. Прогоните двадцать диалогов и посчитайте, как часто бот возвращается к этой теме без запроса пользователя. Если возвращается — вы нашли свой семантический аттрактор. Дальше не дописывайте запрет. Переписывайте якорь.

Что случилось — иллюстрация 2
Иллюстрация к разделу: Что случилось
Четыре гипотезы и что с ними стало — иллюстрация 3
Иллюстрация к разделу: Четыре гипотезы и что с ними стало

Читайте также