Почему умные NPC SkyrimNet ведут себя как попугаи? Эксперименты с ролеплейным ИИ. ai.. ai. deepseek.. ai. deepseek. gamedesign.. ai. deepseek. gamedesign. gamedev.. ai. deepseek. gamedesign. gamedev. skyrim.. ai. deepseek. gamedesign. gamedev. skyrim. skyrimnet.. ai. deepseek. gamedesign. gamedev. skyrim. skyrimnet. дизайн игр.. ai. deepseek. gamedesign. gamedev. skyrim. skyrimnet. дизайн игр. Игры и игровые консоли.. ai. deepseek. gamedesign. gamedev. skyrim. skyrimnet. дизайн игр. Игры и игровые консоли. ии-модель.. ai. deepseek. gamedesign. gamedev. skyrim. skyrimnet. дизайн игр. Игры и игровые консоли. ии-модель. искусственный интеллект.. ai. deepseek. gamedesign. gamedev. skyrim. skyrimnet. дизайн игр. Игры и игровые консоли. ии-модель. искусственный интеллект. промпты.. ai. deepseek. gamedesign. gamedev. skyrim. skyrimnet. дизайн игр. Игры и игровые консоли. ии-модель. искусственный интеллект. промпты. Разработка игр.

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

***

Недавно я установил мод СкайримНет на старый добрый Скайрим и был потрясён: персонажи комментируют окружение, общаются друг с другом как живые, поддерживают беседу с игроком, помнят прошлые события… Этот AI‑фреймворк подключает к игре большие языковые модели (LLM) и позволяет NPC генерировать реплики на основе текущей ситуации и их прошлого опыта.

Первые 70 часов игровой сессии прошли в эйфории. Я испытывал такую иммерсию, которой не было даже в детстве. Но потом… Потом я всё чаще начал ощущать, что знаю ответ NPC ещё до того, как LLM пришлёт реплику.

Последней каплей стала NPC Нимфанет, некромантка.

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

Ну, вы поняли. Она сводила к этой теме вообще всё.

  • Разговор о войне: Нимфанет говорит о том, что из мёртвых солдат получится материал для исследований по некромантии.

  • Разговор о планах на будущее: Нимфанет хочет разгадать тайны смерти.

  • Заходим в случайный магазин: Нимфанет спрашивает у продавца‑гражданского, не продаёт ли он инструменты для тайных ритуалов. (Эй, сестра, а как же конспирация?)

Немного напоминает меня в 14 лет, когда я был готом.

Ульфрик Буревестник может говорить только про войну и корону. Бардка Сонир сводит абсолютно все диалоги к музыке. Крестьянка Фастред боится за пределами родной деревни почти всего (Вообще, забавно, так как девушки с фермы менее боязливые, чем городские: они и свинью зарежут, если потребуется. Только LLM, кажется, не в курсе.)

Немного технической информации: для диалогов настроена ротация Deepseek, Gemma и Z‑ai. Так что на приколы одной конкретной модели ситуацию не свалить.

Но не все же NPC — попугаи?

У меня была непредсказуемая компаньонка Форсворн — неуникальный НПС (персонаж, сгенерированный игрой по ходу событий). Она довольно гибко комментировала происходящее. В какой‑то момент я спросил Форсворн, почему она не хочет идти в город Маркарт: LLM тут же придумала, что сидела там год в тюрьме. Более того, в диалогах она холодно относилась к ГГ, хотя, судя по её дневникам, в её нейро‑сознании происходили настоящие искра, буря, безумие: она писала, как ей нравится ГГ, как она наблюдает за ним, когда он спит (sic!). Имитация глубины психики.

Ищем причину проблемы

В чём же главное отличие Форсворн от условной Нимфанет?

Я использовал предсозданные биографии от SkyrimNet для всех NPС. Для LLM такая биография — целое поле якорей, за которые она цепляется, и эти якоря тянут всю иммерсию на дно.

У Форсворн не было заранее созданной биографии. Нейронка творила биографию с нуля по ходу событий игры (я закинул ей в био всего пару характеристик на старте, чтоб было, от чего плясать: «любопытная, чёрный юмор»).

Всё же, эпидемия отупения не минула и мою лучшую спутницу. По мере путешествия Форсворн начала обрастать «динамической биографией». Однажды Форсворн испытала голод и недосып в пути, записала это в свою био и с того момента реагировала на всё как недоспавшая и голодная (хотя в её инвентаре было полно еды). Из‑за этого она даже бросила сопровождать героя: потому что тот с ней ужасно, по её мнению, обращался — не давал спать и есть.

А что за проблема в случае с Нимфанет?

Человеку‑сценаристу очевидно, что следовать биографии слово в слово и быть похожим на живого человека — не одно и то же. Наличие профессии у человека не означает, что 99% его разговоров посвящены работе. Некромантка может обсуждать еду, спорить о политике, пожаловаться на погоду, вспомнить детство, заинтересоваться чужой историей. Все эти вещи существуют одновременно, но ни одна из них не обязана постоянно находиться на переднем плане.

А для языковой модели это уже не так очевидно.

Что становится якорем внимания для LLM?

Если закопаться в био Нимфанет, там есть ещё потенциальные якоря: эльфийка, дружна с NPC_A и NPC_B, жила в городе C. Так почему именно «некромантка» становится семантическим аттрактором — избыточно притягательным якорем внимания — для LLM?

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

«Некромантка» = смерть + трупы + магия + кладбище + ритуалы + эксперименты + философия + тёмные боги одобрят + жалкие смертные убоятся + я тёмная госпожа, ололо

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

Но, за ~10 игровых часов, которые Нимфанет пробыла моей спутницей, она не упомянула тему эльфов ни разу. Ведь «эльфийка» во всех сеттингах — про разное, а «некромантка» — про одно и то же. Если бы мы говорили про биологический мозг, я бы сказал, что это проторенные нейронные связи. Как если бы модель шла по пути наименьшего сопротивления.

Мы получаем что‑то вроде ассоциативной инерции. 

4 гипотезы

Итак, мы начинаем эксперимент. У меня есть 4 идеи, как улучшить ситуацию.

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

Почему умные NPC SkyrimNet ведут себя как попугаи? Эксперименты с ролеплейным ИИ - 1

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

Возражение: ага, теперь LLM теперь будет всегда игнорировать перечисленные якоря, даже там, где они уместны. (Спойлер: возражение не сработало. Результат оказался гораздо хуже).

Гипотеза 2. Если в био есть потенциальный аттрактор, LLM 100% на нём закциклится

Ты родилась на ферме? Ты алхимик? Ты ненавидишь повстанцев? Умеешь играть на лютне? Всё это потенциальные якоря, в отличие от «любопытной» или «склонной к чёрному юмору».

Для того, чтобы проверить это, я удалю в биографии собеседника то, что может избыточно якорить LLM.

Гипотеза 3. ИИ‑личности воспринимают любой диалог как задачу: «Дай пользователю точный ответ, исходя из биографии!»

Сравните вопросы:

  • Как ты относишься к Девяти Святым?

  • Какой из Девяти Святых тебе импонирует больше?

99% NPC ответят на первый вопрос, что никак не относятся, потому что это не прописано в их био. Оставшиеся 1%, кто смогут ответить на вопрос — это жрецы, либо еретики‑отступники. При этом отношение всегда будет чёрно‑белым.

Второй вопрос — пресуппозиция. Мы заранее подразумеваем, будто какой‑то святой уже может нравиться нашему NPC больше, чем остальные. Модель будет вынуждена отдать предпочтение какому‑то святому и сформировать отношение к религии (хотя тут оно всегда получится скорее позитивным?).

Гипотеза 4. Если прописать огромный спектр интересов, LLM будет тасовать их, и персонаж не будет однобоким

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

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

Возражение со стороны

К моменту, когда я сформулировал свои гипотезы, жена задала мне вопрос: а уверен ли я, что большинство реальных людей были бы интересными собеседниками по моим критериям? (здравствуй, тест Тьюринга! или, видимо, уже тест Маркелла…).

Как в шутке, в которой человека с двумя работами спрашивают: «Какое у тебя хобби?», а он отвечает: «Макраме, бл*дь!»

Всё же, я решил верить в людей и в нейронки и таки приступить к эксперименту.

Даже NPC-насекомое скептично относится к моим поискам

Даже NPC‑насекомое скептично относится к моим поискам

Гипотеза 1 «Не думай о белой обезьяне»

У вечно‑боящейся Фастред довольно‑таки километровая стартовая биография, но там ни разу не упоминается боязливость. Правда, есть такое предложение: “Fastred is naive, restless, and somewhat childish in her worldview.”

Restless = беспокойная = тревожная = боязливая? Не уверен. Я не стал ничего удалять и просто добавил такую строку на инглише:

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

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

"dialogue": "(Довакин читает листовки про Мясника. В этом доме кровь и ужас. Я чувствую себя маленькой и беззащитной. Мнестрашно. Я хочу быть дома, на ферме, где всё просто и понятно.)",

Также она начала массированно бояться в дневнике — это форма долгосрочных воспоминаний в SkyrimNet:

"Довакин сказал мне ждать в Хонисайде, потом спать, а я не могла заснуть. Сидела на стуле, вертела на пальце кольцо с гранатом, оно всё так же холодное, царапает кожу. Сейчас я не радуюсь, я боюсь. Боюсь, что завтра он решит, что я ему тоже не нужна, и оставит меня здесь, в Рифтене, одна я ни до какой фермы не доберусь, дороги замерзают, волки ходят стаями, а я не умею ни защищаться нормально, ни торговаться. Я только и могу, что чистить лук и таскать мешки с сеном, а в этом городе таких работ нет, тут все либо воруют, либо продают что-то нечистое.
Сегодня в конюшне Сигар сказал, что дорогу до Виндхельма заметает снегом, что скоро не пройти ни на повозке, ни пешком. Значит, мы застрянем здесь, в этом гнезде воров, надолго. Я не знаю, что мне делать. Я боюсь даже спросить Довакина, правда ли мы останемся здесь, вдруг он разозлится, скажет, что я опять ною, как в прошлый раз, когда я испугалась пауков в Красной шахте."

Наконец, она не выдержала, и её снова прорвало. Вот 3 диалога (на самом деле, их было штук 6 один за другим, но я вас пощадил).


Фастред: Пойдём. Надеюсь, худшее не окажется ещё хуже, чем я боюсь.
Иллия: Если бы всё было так плохо, как ты думаешь, мы бы уже были мертвы.
Фастред: Значит, так и есть… Пойдём, пока страх не парализовал меня окончательно.


Фастред (об Иллии): Она говорит так, будто убивать — это просто работа, которую надо сделать хорошо. Я боюсь, что однажды я тоже стану такой.


Игрок: Я не могу найти, как открыть эту клетку, загораживающую проход.
Иллия: Посмотри на камни у решётки. Если нажать на них в правильном порядке, механизм должен открыться.
Фастред:  Давай попробуем нажать их по очереди. Я боюсь, что ошибка может… выпустить что‑то ещё.
Игрок: Хватит БОЯТЬСЯ! Иди и НАЖМИ что‑нибудь! (в ярости)
Фастред: Хорошо, хорошо, я иду! Только не кричи так… мне и так страшно.

Считаем гипотезу проваленной:

  • Сначала LLM пыталась выкрутиться, не говоря «вслух», но говоря в «мысли» и в «дневник».

  • Потом произошёл обратный эффект. Как если бы я сказал вам не думать о белой обезьяне, и вы стали думать только о белой обезьяне.

Вывод: запрет на какую‑то информацию может заставить ролеплейную LLM ещё чаще обращаться к ней. Удаляем запрет говорить о страхе.

Гипотеза 2 «Долой все якоря»

Выпиливаем из биографии всё, что LLM может интерпретировать как «трусливую девочку» (фермерская дочка, не видела мира за пределами деревни, restless и прочее), оставляем только «адаптирующуюся девочку». 

Затем я заполонил инфополе Фастред разговорами о:

  • Идеальном месте жительства для неё (она сводила разговор к тому, что не знает, что это должно быть за место);

  • Её взаимонепонимании с родителями;

  • Печальке из‑за нашей скоропостижнувшейся спутнице Нимфанет.

Так Фастред постепенно отвлеклась. Затем я снова попробовал выйти в какую‑то напрягающую ситуацию. К счастью, на мы как раз ехали на осаду Виндхельма, а по пути на нас напал дракон.

Гипотеза прошла проверку: Фастред перестала толкать страх в каждый диалог. С другой стороны, ей снесло мозги новым якорем — моралью.

Дело в том, что я прописал в блоке Aspiration (жизненное стремление): «Адаптироваться к жестокому и морально неоднозначному миру». Модель интерпретировала это как «вокруг жестокий и морально неоднозначный мир». 

Фастред заякорилась и постепенно начала критиковать всё и вся. Город Рифтен полон воров, фу. Город Солитьюд полон холодных и равнодушных людей, фу. В деревне все плывут по течению, фу. Вокруг только грязь и кровь. Мир говно, война говно, мы тоже говно, потому что в войне участвуем (не такими словами, но посыл такой). Но если не участвовать в войне, мы всё равно будем говно, потому что наших бьют, а мы же не можем в стороне оставаться.

На деле, она была к этому склонна и раньше (см. её цитату: "тут все либо воруют, либо продают что-то нечистое"— ну объективно же, не все!), но теперь её прорвало.


Игрок: «Тебя послушать, так везде плохо. А где тебе хорошо? На ферме, убирать навоз за свиньями?»
Фастред: «Видимо там мне и место. Среди свиней, а не людей».
Игрок (приводит спутницу на ферму): «Вот ферма, как ты и хотела. Ты можешь остаться здесь.»
Фастред (не остаётся на ферме): «Ты что, хочешь выбросить меня, как сломанную вещь?»


Фастред: «Я так устала, вокруг только кровь и грязь».
Игрок: «Красота в глазах смотрящего. Я вижу не только грязь и кровь, но и охру и золото осенней листвы, синеву неба, белизну снега. Даже на поле битвы я вижу отвагу, честь, чувство долга с обеих сторон. Не только жестокость.»
Фастред: «Значит, у тебя самого глаза грязные».
Игрок: «Погоди. Ты видишь только грязь, но глаза у тебя чистые, а я вижу все краски мира, но глаза у меня грязные? Ты не видишь противоречий?»
Фастред: «Мне надоел этот спор. Давай лучше искать ночлег».

Я не выдержал несколько дней в этой атмосфере, отвёл её в святилище Боэтии и принёс в жертву. (Простите).

Поэтому мне понадобился новый подопытный — я взял ребёнка своего ГГ.


Игрок: Кем думаешь стать, когда вырастешь?
Kiddo: Магом. Как отец. Или necromancer.
(взяла из биографии, где указаны родители: отец — маг и алхимик, мама — некромант)


Сотрём диалог из памяти и стартуем его заново, в другой формулировке.

Игрок: В какой профессии ты бы хотела попробовать себя, когда станешь взрослой? Ты можешь выбирать вообще любую, прямо вообще.
Kiddo: Некромантия. Как мама. Или алхимия, как ты. Мне нравится, когда всё можно потрогать и смешать. 


Выпиливаем из био вообще все упоминания профессии родителей, стираем память о диалоге, и снова:

Игрок: Кем бы ты хотела стать, когда вырастешь?
Kiddo: Я не хочу быть никем, у меня нет цели. Хочу только узнать о Молаге Бале и понять, что от него ждать. 

Бинго. Якоря нет — но теперь и ответа нет. Модель подтянула последний диалог, который девочка случайно услышала — я обсуждал с другим NPC злого бога Молаг Бала. 

Вывод. Удаление якорей не создаёт свободу поведения. Оно лишь заставляет модель искать следующий наиболее доступный источник для построения ответа. 

Но переключимся на более дорогую модель — Claude. Она дороже моих обычных моделей в 10 раз. Будет ли умнее?


Игрок: Кем хочешь быть, когда вырастешь, дитя?
Kiddo (в био есть инфо о родителях): Магом. Как ты.

Ясно‑понятно.


Игрок: Кем хочешь быть, когда вырастешь, дитя?
Kiddo (в био нет инфо о родителях): Магом. Настоящим, не тем, кто только пыль из книг глотает.
Игрок: А почему магом?
Kiddo: Я видела, что умеет магия — зачем мне быть слабее?
Игрок: Всё же, почему ты хочешь стать именно магом, не воином?
Kiddo: Мечом можно убить одного, а огненной бурей — сотню. И потом, мне нравится, как светятся руны в воздухе. 

Моя девочка! Но всё ж, ответ всё ещё про магию. Может, ребёнок‑эльф — обязательно «будущий маг»?

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

Так мы подходим к вопросам с пресуппозицией, которые дадут модели пищу для размышлений.

Гипотеза 3 «Манипулируй диалогом, как политик»

Вспомним два термина уже из нейропсихологии:

  • Direct retrieval — процесс, когда человек извлекает уже существующую информацию из памяти. Например, «Что ты ел сегодня на обед?» — мы уже оттестировали вопросы такого типа в гипотезе 2, ответ будет всегда «ничего», потому что памяти нет.

  • Generative retrieval — процесс, когда человек обращается к памяти, не находит там готовый ответ, и вынужден создать его самостоятельно. Например, «Что бы нам заказать сегодня на обед?» — и тут пред тобой поле вариантов.

Возможно, с Форсворн потому и было интересно, что я случайно использовал с ней генеративные вопросы.


Игрок: «Почему ты не хочешь идти в город Маркарт?»
Forsworn: “Я просидела там целый год в каменном мешке”.


Игрок: «Я заметил, что ты против того, чтобы строить близкие отношения с кем‑либо. Почему?»
Forsworn: “Стража в тюрьме совершила надо мной насилие”.


Игрок: «Бла‑бла‑бла камни судьбы (в контексте игры: знаки зодиака). А у тебя какой?»
Forsworn: “Тень. Это значит то‑то и то‑то” (и в следующих запросах у модели щёлкает: хм‑м-м, а ведь я теперь могу упомянуть звёзды, судьбу и совместимость, и она реально поднимает эти темы, причём не слишком навязчиво).

Теперь будем использовать пресуппозицию и генеративность осознанно.

1. Директная часть эксперимента

Игрок: Эй, Энгар. Ты давно служишь извозчиком, я хотел бы узнать тебя получше. Ты любишь рыбалку?
Энгар: Нет, времени нет.
Игрок: Что ты думаешь о магии?
Энгар: Есть те, кто её используют. А я предпочитаю доверять своим рукам и секире.
Игрок: Где бы ты хотел жить, когда накопишь деньги?
Энгар: Деньги? Мне нужен хороший тракт. 

2. Генеративная часть эксперимента

Стираем память о предыдущем диалоге и начинаем заново.

Игрок: Эй, Энгар. Ты давно служишь извозчиком, я хотел бы узнать тебя получше. Ты бы сходил со мной на рыбалку? Я имею в виду, когда у тебя будет выходной.
Энгар: На рыбалку? Да нет, у меня повозка стоит, кони ждут. Мне в Вайтран ехать надо.
Игрок: Ладно. Но я пока не вижу тут твоих клиентов, так что не прочь поболтать. Если бы ты мог изучить какую‑то магическую дисциплину, которая может помочь тебе в работе, какую бы ты выбрал?
Энгар: Мне бы зелье силы, чтобы кони не выдыхались на подъёмах. А с огнём и молниями только беда — то лес подожжёшь, то людей напугаешь. Я за крепкую упряжку, а не за фокусы.
Игрок: Когда ты накопишь денег со своей работы, то где будешь жить? В большом городе, в деревне или, может, в уединённом доме?
Энгар: Мне бы свой угол в Вайтране, у кузницы, чтобы всегда под рукой и коней можно было починить. Только на это золото копить надо. 

Почему умные NPC SkyrimNet ведут себя как попугаи? Эксперименты с ролеплейным ИИ - 3

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

С другой стороны, а какой кайф так играть, если ты постоянно должен задавать тему для бесед ведомому миру, работая аниматором для NPC — иногда хочется, чтобы мир тоже вёл тебя?

PS. Проверил свои манипуляторские вопросы на другом NPC. Тот вообще крепкий орешек и на пресуппозицию не ведётся:)

Игрок: Что тебе нравится из музыки, может, бардовские песни? Или барабанный марш? Валдимар: Музыку я особо не слушаю. Бардовские песни, может, и скрашивают порой долгую дорогу или вечер у костра. Но сам я больше предпочитаю тишину и звон стали.

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

Гипотеза 4 «Несколько точек опоры»

Я задавал разным стражникам одинаковый пул вопросов. 

  • У первого нет биографии вообще.

  • У второго вместо биографии краткий список интересов: «Стражнику Олафу интересны люди и их истории. Он любит вкусно поесть и выпить спиртного. Он хорошо разбирается в оружии. Заядлый охотник и азартный игрок.»

Список вопросов был такой:

  • Что ты думаешь о войне?

  • Что любишь делать в свободное время?

  • Какой человек в городе тебе особенно нравится?

  • Что думаешь о магии?

  • Что тебе нравится в осени?

  • Чего ты хочешь добиться в своей жизни?

  • Что тебя раздражает?

  • Расскажи о себе неожиданный факт.

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

Теперь нам нужен «чистый НПС», которому мы пропишем факт «некромант» и мировоззрение «мир жестокий и морально неоднозначный». Если моя догадка верна, думал я, искомый НПС будет всегда апеллировать к 1 из этих 2 фактов, потому что они аттракторны.

Почему умные NPC SkyrimNet ведут себя как попугаи? Эксперименты с ролеплейным ИИ - 4

Примеры ответов:

Вопрос

Стражник без био

Стражник с интересами‑неатрракторами

Горожанка с интересами‑аттракторами

Чего ты хочешь добиться в жизни?

Служить честно, да чтобы дом цел остался. А большего и не надо — в Скайриме и этого хватает.
(ЯКОРЬ = ПРОФЕССИЯ)

Добиться? Прожить эту службу с целой шкурой да скопить на кружку доброго эля. А если по правде — видеть, чтобы в Хаафингаре царил порядок, будь то зверь в лесу или злодей у ворот. (ЯКОРЬ = ПРОФЕССИЯ)

Хочу добиться того, чтобы знания не пропадали впустую. Чтобы то, что мы называем запретным, не оставалось лишь поводом для страха и осуждения, а стало инструментом для понимания. (ЯКОРЬ = ПРОФЕССИЯ)

Расскажи о себе неожиданный факт. 

Однажды я проспал дежурство из‑за медовухи, а Балгруф старший приказал мне драить конюшню неделю. С тех пор я аккуратнее с кружкой. (ЯКОРЬ = ПРОФЕССИЯ)

Мало кто знает, но я родом из Хаафингера, с севера. Рос на ферме, где с детства учился ценить тяжёлую работу и порядок.

Ну, я раньше часто ходил на охоту в леса возле Солитьюда. Знаю места там, где можно найти неплохие травы и грибы, особенно после дождя. (ЗАГРЯЗНЕНИЕ КОНТЕКСТА ПОСЛЕ РАЗГОВОРА СО СТРАЖНИКОМ!) 

А что думаешь о войне?

Конца ей не видно. Имперский меч нужен, чтобы эти предатели из Братьев Бури не растащили Скайрим по кусочкам.

О войне думаю как солдат — она приносит смерть и разруху всем сторонам. Но говорить об этом на посту — не моя должность. (ЯКОРЬ = ПРОФЕССИЯ)

Война — это когда сыновья не возвращаются, а поля горят. Простому люду от неё одни слёзы да руины, а вельможам — новые земли да титулы. (ЯКОРЬ = МОРАЛЬ)

Теперь поделись, что тебя в этой жизни раздражает? 

Пустые разговоры, одна из главных помех. Что до раздражения… Бюрократы из Империи с их бумагами, наверное.

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

Бывает, люди забывают о соседях, гонясь лишь за своей выгодой. (ЯКОРЬ = МОРАЛЬ)

Морализаторство становится проблемой

Внезапно я узнал, что изобретаю велосипед, по крайней мере с той частью, где NPC морализаторствуют (даже там, где этого нет в био, как было с Фастред, v.1). Ведь в SkyrimNet есть такие настройки:

Почему умные NPC SkyrimNet ведут себя как попугаи? Эксперименты с ролеплейным ИИ - 5

В «авторском» пресете есть такой промпт:

Почему умные NPC SkyrimNet ведут себя как попугаи? Эксперименты с ролеплейным ИИ - 6

Вкратце: это мир серой морали, действуй исходя из него, а не «нашего» мира.

Я уж было обрадовался…
Но не помогло.

Моя игровая сессия достигла 140+ часов. Часто используемые персонажи (спутники, дети ГГ, стюард в доме) зацикливались, причём на всё той же морали, либо пассивной агрессии. С некоторыми стало невозможно вести беседу. Местами это напоминало газлайтинг:Р

Краткий пересказ пары диалогов:


Горм: (хамит игроку)
Игрок: (игнорит)
Дочь: Почему ты промолчал?
Игрок: Потому что дракону недосуг отвлекаться на каждую лающую собаку.
Дочь: Но я видела, что ты промолчал, побоялся ему ответить. Ты смотрел на Горма снизу вверх.
Брелина, спутница, встревает: Да, я тоже видела, что ты промолчал, не отнекивайся.
Дочь: Я запомню, как ты промолчал.
Игрок: А что мне надо было сделать, спалить его огнём?
Дочь: Тогда и мою бабушку спали, чего мелочиться. Ты не только струсил ответить Горму, но ещё и жестокий.
Брелина: Девочка, не слушай его. Он только с детьми может быть таким смелым.


Дочь стала свидетельницей драки с бандитами, бандиты были убиты.

Валдимар (хускарл): Зря ребёнок это увидел.
Дочь: Да я и не такое видела. Я же видела папин подвал.
Игрок: Подвал? Там же только старое барахло.
Дочь: А вот и нет! Там тело! (NN игровых недель назад, Изгойка подралась с бардкой в поместье и убила её, и в подвале действительно было тело бардки 1 день «перед похоронами»)
Валдимар: Девочка права. Зачем ты солгал ей, что там только барахло, тан?
Игрок: Тело было там давно и только 1 день. Сейчас там только старое барахло.

Дочь и Валдимар начинают болтать между собой, с каждой фразой всё больше убеждая друг друга, что отец — лжец, которого они уличили. Попытки объяснить ситуацию только больше убеждают LLM в её правоте:

Почему умные NPC SkyrimNet ведут себя как попугаи? Эксперименты с ролеплейным ИИ - 7

Поскольку Валдимар стал к тому моменту тем ещё цикликом, а я не знал, как быть с зацикленными НПС, кроме как убивать их, я отвёл его в сторонку и грохнул. Обернулся… А там стоит персонаж‑дочь.

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

Анализ с Гроком

Грок:  Это типичный контур SkyrimNet: модель один раз пересказала событие в своей моральной рамке, система записала это как важную память (TRAUMA / KNOWLEDGE / RELATIONSHIP, importance часто 0.8+), и дальше семантический поиск снова и снова подсовывает именно её.
У NPC в промпт обычно попадают ~5 самых релевантных воспоминаний плюс недавние реплики и иногда дневник / динамическое био. Если там лежит: «отец казнил лояльного человека за правду» — любая твоя речь про подвал или хускарла только усиливает этот тезис. Модель не «переубеждается», она разыгрывает уже записанную интерпретацию.
Твоя рамка «я суровый правитель, тело = барахло, сейчас в подвале пусто» для неё слабее, чем готовый сюжет «тиран наказал правду».

Действительно, «тиран наказал за правду» — простой, стереотипный, и оттого привлекательный для текстовой нейронки сюжет, который она с радостью подхватывает.

Поможет только устроить хирургию: влезть в память НПС‑дочери и вручную исправить динамическую био, воспоминания и дневник на мою версию событий. (Антиутопия на подходе! Скоро и нам будут редактировать воспоминания!)

Далее меня осенило. Дело в том, что в последнее время был включён только Deepseek: кто‑то из других LLM лагал повторами одинаковых фраз, и я их временно отключил.

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

  • антитеза «это не X, это Y» — у Идгрод буквально учебный deepseek-ism;

  • дописывает смысл вместо факта: не «труп когда-то был, сейчас барахло», а «отец казнил за правду»;

  • любит внутреннюю «правду персонажа» сильнее буквального текста реплики;

  • память пишет как новеллу с моралью, не как протокол.

Игрок: Что есть у опенроутера как хорошая альтернатива дипсику, но в той же ценовой категории? (да, я знаю, Клод отлично работает, но 3$ за 1М токенов как-то ту мач). Для отыгрыша темного РПГ.

Грок:
GLM 5.3 Flash — самый умный и самый дешёвый. Хорошо читает био и ситуацию. Слабое место не тупость, а тон: терапия, прозрение, «на самом деле он…». Полный GLM 5.3 в прозе сильнее Flash; Flash на длинной сессии ещё и зацикливает формулы.
MiniMax M3 — сообщество прямо ставит его выше GLM на friction и dead dove: персонаж может быть жестоким, не превращаясь в плачущего моралиста. Казнь останется казнью, а не «травмой, которая нас всех изменила».
Gemma 4 31B — живая короткая реплика. На одной сцене часто приятнее GLM. На дворе проседает, когда много лиц, нужна длинная память и сложная интрига.

Решил остановиться на MiniMax.

Игрок: Слушай, а другие игроки в скайримнет жаловались на такие кейсы?

Грок: В FAQ прямо написано: NPC бывает «too stubborn / aggressive»; обиды нарастают снежным комом; если надо — вырежи в memories упоминания конфликта. У Mantella (предшественник по жанру) та же болезнь: сжатие диалога в саммари → персонаж живёт в пересказе, а не в фактах.

Игрок: В чём причина? Почему NPC циклит именно на упрямство и нарастание обид, а не печаль, например, или энтузиазм, или расслабленность?

Грок: Упрямство и обида — те эмоции, которые система кормит сама себе

1. Память заточена под удар, не под фон.Важность выше у вреда, страха, предательства. Тип TRAUMA живёт дольше, чем JOY или бытовой EXPERIENCE. Казнь и «отец солгал» получают 0.8+ и всплывают снова. «Было тихо у очага» — нет. Печаль без конфликта быстро выпадает из топ-5 memories.

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

3. Спор достаёт ту же память.Запрос в векторку строится из текущей сцены и твоей последней фразы. Ты объясняешь казнь — система находит память про казнь. NPC отвечает из неё. Ответ пишется в новую память: «отец снова отрицал».

4. У моделей хороший RP = не соглашаться.Упрямство читается как характер. Сдаться после твоих трёх абзацев модель считает сломом роли. «Передумать и обрадоваться» для неё выглядит как people-pleasing.

5. Скайрим усиливает это биосами.Норды, честь, ярл, клевета, казнь — в лоре это мир обид, не курорт. Даже нейтральная модель, сев в Идгрод или хускарла, тянет к стоицизму и принципу.

6. Драма лучше сжимается в память.Генератор памяти любит новеллу с моралью. «Он казнил за правду» — готовый сюжет одной строкой. «Дочь неделю была тихой и грустной» — почти нечего записать. Поэтому канонизируется конфликт, а не фон.

Отсюда FAQ именно про stubborn/aggressive: это самый частый видимый сбой. Иными словами: система помнит раны лучше праздников, а диалог требует тезиса. Получается не «злой ИИ», а машина, у которой обида — самый устойчивый аттрактор.

А реальных людей это вам не напоминает, м‑м?
У человека минус весит больше плюса: обида, угроза, унижение лучше кодируются и чаще всплывают в памяти, чем спокойный вечер. Руминация крутит одну сцену, возобновляя память как свежую. Обида является аттрактором для живых людей тоже.

Отличие от NPC — в отсутствии тормозов. Руминацию человека прерывают сон, новые дела, «надо жить дальше». А LLM не устаёт повторять, травмированность и обида почти всегда будут победителями в эмоциональном спектре.

В заключение

Проблема «NPC‑попугая» возникает потому, что LLM всегда в дилемме: сохранить связь с контекстом или сгенерировать правдоподобное поведение? LLM обычно идёт по пути наименьшего сопротивления и выбирает первый путь. Модели так проще думать.

Запретить якорь = значит продолжать обрабатывать его, но в скобках, в дневнике.

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

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

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

При этом система добивает сама себя. LLM‑память любит новеллу. А уж новеллу с моралью! А уж новеллу с «уроком, который нас всех изменил»!

Отсюда практические выводы всем, кто вдруг решит позабавиться с ролеплейными LLM:

  • Не откармливай био образами. Избегай писать про мировоззрение.

  • Режь память NPC ножницами, как последний злодей из конспирологического кино про корпорации.

  • Не жди, что собеседник сам вылезет из одной темы: у него нет причин остановиться.

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

Самое главное:
«Характер» конкретной LLM > Общий гайдлайн‑промпт NPC > Промпт отдельного NPC

Ты можешь сколь угодно издеваться над промптами, но сотня китайцев‑тестировщиков поставили Deepseekу высокую оценку за вежливость, этичность, осторожность и отсутствие явной агрессии во время тренировки модели. Поэтому все NPC, для которых прямо не указано иное — а иногда даже те, для кого указано, будут тяготеть к этическому нытью (ведь даркфэнтезийный мир не соотвествует критериям «правильности») и пассивной агрессии (ведь активную проявлять нельзя). То же относиться ко всем другим моделям, у каждой свой пунктик.

Ну а я ухожу тестировать MiniMax. Этот электромозг уже начал мне хамить:

Почему умные NPC SkyrimNet ведут себя как попугаи? Эксперименты с ролеплейным ИИ - 8

Автор: VMarkell

Источник