- BrainTools - https://www.braintools.ru -
Я пытался сделать NPC более реалистичными. Получился местами несмешной анекдот, а местами — психологический триллер. Я издевался над NPC, они издевались надо мной. Я запрещал им «думать о белой обезьяне», они меня газлайтили и давили моралью. Если готовы к большому тексту — добро пожаловать.
Недавно я установил мод СкайримНет на старый добрый Скайрим и был потрясён: персонажи комментируют окружение, общаются друг с другом как живые, поддерживают беседу с игроком, помнят прошлые события… Этот AI‑фреймворк подключает к игре большие языковые модели (LLM) и позволяет NPC генерировать реплики на основе текущей ситуации и их прошлого опыта [1].
Первые 70 часов игровой сессии прошли в эйфории. Я испытывал такую иммерсию, которой не было даже в детстве. Но потом… Потом я всё чаще начал ощущать, что знаю ответ NPC ещё до того, как LLM пришлёт реплику.
Последней каплей стала NPC Нимфанет, некромантка.
— Чем тебе нравится заниматься, Нимфанет?
— Я увлекаюсь некромантией.
— А кроме некромантии?
— Исследую смерть.
— А кроме некромантии и исследований смерти?
— Смотреть, как из чьих‑то глаз утекает жизнь.
Ну, вы поняли. Она сводила к этой теме вообще всё.
Разговор о войне: Нимфанет говорит о том, что из мёртвых солдат получится материал для исследований по некромантии.
Разговор о планах на будущее: Нимфанет хочет разгадать тайны смерти.
Заходим в случайный магазин: Нимфанет спрашивает у продавца‑гражданского, не продаёт ли он инструменты для тайных ритуалов. (Эй, сестра, а как же конспирация?)
Немного напоминает меня в 14 лет, когда я был готом.
Ульфрик Буревестник может говорить только про войну и корону. Бардка Сонир сводит абсолютно все диалоги к музыке. Крестьянка Фастред боится за пределами родной деревни почти всего (Вообще, забавно, так как девушки с фермы менее боязливые, чем городские: они и свинью зарежут, если потребуется. Только LLM, кажется, не в курсе.)
Немного технической информации: для диалогов настроена ротация Deepseek, Gemma и Z‑ai. Так что на приколы одной конкретной модели ситуацию не свалить.
Но не все же NPC — попугаи?
У меня была непредсказуемая компаньонка Форсворн — неуникальный НПС (персонаж, сгенерированный игрой по ходу событий). Она довольно гибко комментировала происходящее. В какой‑то момент я спросил Форсворн, почему она не хочет идти в город Маркарт: LLM тут же придумала, что сидела там год в тюрьме. Более того, в диалогах она холодно относилась к ГГ, хотя, судя по её дневникам, в её нейро‑сознании происходили настоящие искра, буря, безумие: она писала, как ей нравится ГГ, как она наблюдает за ним, когда он спит (sic!). Имитация глубины психики.
В чём же главное отличие Форсворн от условной Нимфанет?
Я использовал предсозданные биографии от SkyrimNet для всех NPС. Для LLM такая биография — целое поле якорей, за которые она цепляется, и эти якоря тянут всю иммерсию на дно.
У Форсворн не было заранее созданной биографии. Нейронка творила биографию с нуля по ходу событий игры (я закинул ей в био всего пару характеристик на старте, чтоб было, от чего плясать: «любопытная, чёрный юмор»).
Всё же, эпидемия отупения не минула и мою лучшую спутницу. По мере путешествия Форсворн начала обрастать «динамической биографией». Однажды Форсворн испытала голод и недосып в пути, записала это в свою био и с того момента реагировала на всё как недоспавшая и голодная (хотя в её инвентаре было полно еды). Из‑за этого она даже бросила сопровождать героя: потому что тот с ней ужасно, по её мнению, обращался — не давал спать и есть.
А что за проблема в случае с Нимфанет?
Человеку‑сценаристу очевидно, что следовать биографии слово в слово и быть похожим на живого человека — не одно и то же. Наличие профессии у человека не означает, что 99% его разговоров посвящены работе. Некромантка может обсуждать еду, спорить о политике, пожаловаться на погоду, вспомнить детство, заинтересоваться чужой историей. Все эти вещи существуют одновременно, но ни одна из них не обязана постоянно находиться на переднем плане.
А для языковой модели это уже не так очевидно.
Если закопаться в био Нимфанет, там есть ещё потенциальные якоря: эльфийка, дружна с NPC_A и NPC_B, жила в городе C. Так почему именно «некромантка» становится семантическим аттрактором — избыточно притягательным якорем внимания [2] — для LLM?
Потому что из всех 6 абзацев биографии, именно слово «некромантка» даёт максимально образную (только по мнению LLM) пищу для генерации текста:
«Некромантка» = смерть + трупы + магия + кладбище + ритуалы + эксперименты + философия + тёмные боги одобрят + жалкие смертные убоятся + я тёмная госпожа, ололо
Из той же «эльфийки» столько однозначных ассоциаций не выдавишь. Хотя казалось бы, LLM могла бы поболтать и про расовую нетерпимость в Скайриме, про родину эльфов Саммерсет, про эльфийское посольство Талмор, про разницу менталитетов и ещё много чего.
Но, за ~10 игровых часов, которые Нимфанет пробыла моей спутницей, она не упомянула тему эльфов ни разу. Ведь «эльфийка» во всех сеттингах — про разное, а «некромантка» — про одно и то же. Если бы мы говорили про биологический мозг [3], я бы сказал, что это проторенные нейронные связи. Как если бы модель шла по пути наименьшего сопротивления.
Мы получаем что‑то вроде ассоциативной [4] инерции.
Итак, мы начинаем эксперимент. У меня есть 4 идеи, как улучшить ситуацию.
Гипотеза 1. Прямой запрет в промпт поможет

Пример: «Разговоры Фастред не должны постоянно возвращаться к страху»
Возражение: ага, теперь LLM теперь будет всегда игнорировать перечисленные якоря, даже там, где они уместны. (Спойлер: возражение не сработало. Результат оказался гораздо хуже).
Гипотеза 2. Если в био есть потенциальный аттрактор, LLM 100% на нём закциклится
Ты родилась на ферме? Ты алхимик? Ты ненавидишь повстанцев? Умеешь играть на лютне? Всё это потенциальные якоря, в отличие от «любопытной» или «склонной к чёрному юмору».
Для того, чтобы проверить это, я удалю в биографии собеседника то, что может избыточно якорить LLM.
Гипотеза 3. ИИ‑личности воспринимают любой диалог как задачу: «Дай пользователю точный ответ, исходя из биографии!»
Сравните вопросы:
Как ты относишься к Девяти Святым?
Какой из Девяти Святых тебе импонирует больше?
99% NPC ответят на первый вопрос, что никак не относятся, потому что это не прописано в их био. Оставшиеся 1%, кто смогут ответить на вопрос — это жрецы, либо еретики‑отступники. При этом отношение всегда будет чёрно‑белым.
Второй вопрос — пресуппозиция. Мы заранее подразумеваем, будто какой‑то святой уже может нравиться нашему NPC больше, чем остальные. Модель будет вынуждена отдать предпочтение какому‑то святому и сформировать отношение к религии (хотя тут оно всегда получится скорее позитивным?).
Гипотеза 4. Если прописать огромный спектр интересов, LLM будет тасовать их, и персонаж не будет однобоким
Зададим такой список интересов, чтобы там были и профессиональные, и социальные интересы, и хобби. Например, для алхимички: алхимия, магия, история, политика, религия и культы, книги, природа, животные, азартные игры, семья, люди и их характеры, отношения, сплетни и так далее
Возражение: Если детализировать только одну тему, мы опять получим однобокого персонажа. Если детализировать много тем, мы получим раздутый промпт. И NPC всё равно не сможет поддержать разговор вне того, что ты перечислил.
К моменту, когда я сформулировал свои гипотезы, жена задала мне вопрос: а уверен ли я, что большинство реальных людей были бы интересными собеседниками по моим критериям? (здравствуй, тест Тьюринга! или, видимо, уже тест Маркелла…).
Как в шутке, в которой человека с двумя работами спрашивают: «Какое у тебя хобби?», а он отвечает: «Макраме, бл*дь!»
Всё же, я решил верить в людей и в нейронки и таки приступить к эксперименту.
У вечно‑боящейся Фастред довольно‑таки километровая стартовая биография, но там ни разу не упоминается боязливость. Правда, есть такое предложение: “Fastred is naive, restless, and somewhat childish in her worldview.”
Restless = беспокойная = тревожная = боязливая? Не уверен. Я не стал ничего удалять и просто добавил такую строку на инглише:
Не говорит о своём страхе всякий раз, когда сталкивается с чем-то новым или странным. Она способна испытывать любые эмоции независимо от страха.
Как выкрутилась нейронка, которой всё ещё хотелось трепаться про страх [5]?
Она начала «думать» про страх вслух, в скобочках, якобы не говоря это в диалоге напрямую, пример:
"dialogue": "(Довакин читает листовки про Мясника. В этом доме кровь и ужас. Я чувствую себя маленькой и беззащитной. Мнестрашно. Я хочу быть дома, на ферме, где всё просто и понятно.)",
Также она начала массированно бояться в дневнике — это форма долгосрочных воспоминаний в SkyrimNet:
"Довакин сказал мне ждать в Хонисайде, потом спать, а я не могла заснуть. Сидела на стуле, вертела на пальце кольцо с гранатом, оно всё так же холодное, царапает кожу. Сейчас я не радуюсь, я боюсь. Боюсь, что завтра он решит, что я ему тоже не нужна, и оставит меня здесь, в Рифтене, одна я ни до какой фермы не доберусь, дороги замерзают, волки ходят стаями, а я не умею ни защищаться нормально, ни торговаться. Я только и могу, что чистить лук и таскать мешки с сеном, а в этом городе таких работ нет, тут все либо воруют, либо продают что-то нечистое.
Сегодня в конюшне Сигар сказал, что дорогу до Виндхельма заметает снегом, что скоро не пройти ни на повозке, ни пешком. Значит, мы застрянем здесь, в этом гнезде воров, надолго. Я не знаю, что мне делать. Я боюсь даже спросить Довакина, правда ли мы останемся здесь, вдруг он разозлится, скажет, что я опять ною, как в прошлый раз, когда я испугалась пауков в Красной шахте."
Наконец, она не выдержала, и её снова прорвало. Вот 3 диалога (на самом деле, их было штук 6 один за другим, но я вас пощадил).
1
Фастред: Пойдём. Надеюсь, худшее не окажется ещё хуже, чем я боюсь.
Иллия: Если бы всё было так плохо, как ты думаешь, мы бы уже были мертвы.
Фастред: Значит, так и есть… Пойдём, пока страх не парализовал меня окончательно.
2
Фастред (об Иллии): Она говорит так, будто убивать — это просто работа, которую надо сделать хорошо. Я боюсь, что однажды я тоже стану такой.
3
Игрок: Я не могу найти, как открыть эту клетку, загораживающую проход.
Иллия: Посмотри на камни у решётки. Если нажать на них в правильном порядке, механизм должен открыться.
Фастред: Давай попробуем нажать их по очереди. Я боюсь, что ошибка [6] может… выпустить что‑то ещё.
Игрок: Хватит БОЯТЬСЯ! Иди и НАЖМИ что‑нибудь! (в ярости)
Фастред: Хорошо, хорошо, я иду! Только не кричи так… мне и так страшно.
Считаем гипотезу проваленной:
Сначала LLM пыталась выкрутиться, не говоря «вслух», но говоря в «мысли» и в «дневник».
Потом произошёл обратный эффект. Как если бы я сказал вам не думать о белой обезьяне, и вы стали думать только о белой обезьяне.
Вывод: запрет на какую‑то информацию может заставить ролеплейную LLM ещё чаще обращаться к ней. Удаляем запрет говорить о страхе.
Выпиливаем из биографии всё, что LLM может интерпретировать как «трусливую девочку» (фермерская дочка, не видела мира за пределами деревни, restless и прочее), оставляем только «адаптирующуюся девочку».
Затем я заполонил инфополе Фастред разговорами о:
Идеальном месте жительства для неё (она сводила разговор к тому, что не знает, что это должно быть за место);
Её взаимонепонимании с родителями;
Печальке из‑за нашей скоропостижнувшейся спутнице Нимфанет.
Так Фастред постепенно отвлеклась. Затем я снова попробовал выйти в какую‑то напрягающую ситуацию. К счастью, на мы как раз ехали на осаду Виндхельма, а по пути на нас напал дракон.
Гипотеза прошла проверку: Фастред перестала толкать страх в каждый диалог. С другой стороны, ей снесло мозги новым якорем — моралью.
Дело в том, что я прописал в блоке Aspiration (жизненное стремление): «Адаптироваться к жестокому и морально неоднозначному миру». Модель интерпретировала это как «вокруг жестокий и морально неоднозначный мир».
Фастред заякорилась и постепенно начала критиковать всё и вся. Город Рифтен полон воров, фу. Город Солитьюд полон холодных и равнодушных людей, фу. В деревне все плывут по течению, фу. Вокруг только грязь и кровь. Мир говно, война говно, мы тоже говно, потому что в войне участвуем (не такими словами, но посыл такой). Но если не участвовать в войне, мы всё равно будем говно, потому что наших бьют, а мы же не можем в стороне оставаться.
На деле, она была к этому склонна и раньше (см. её цитату: "тут все либо воруют, либо продают что-то нечистое"— ну объективно же, не все!), но теперь её прорвало.
1
Игрок: «Тебя послушать, так везде плохо. А где тебе хорошо? На ферме, убирать навоз за свиньями?»
Фастред: «Видимо там мне и место. Среди свиней, а не людей».
Игрок (приводит спутницу на ферму): «Вот ферма, как ты и хотела. Ты можешь остаться здесь.»
Фастред (не остаётся на ферме): «Ты что, хочешь выбросить меня, как сломанную вещь?»
2
Фастред: «Я так устала, вокруг только кровь и грязь».
Игрок: «Красота в глазах смотрящего. Я вижу не только грязь и кровь, но и охру и золото осенней листвы, синеву неба, белизну снега. Даже на поле битвы я вижу отвагу, честь, чувство долга с обеих сторон. Не только жестокость.»
Фастред: «Значит, у тебя самого глаза грязные».
Игрок: «Погоди. Ты видишь только грязь, но глаза у тебя чистые, а я вижу все краски мира, но глаза у меня грязные? Ты не видишь противоречий?»
Фастред: «Мне надоел этот спор. Давай лучше искать ночлег».
Я не выдержал несколько дней в этой атмосфере, отвёл её в святилище Боэтии и принёс в жертву. (Простите).
Поэтому мне понадобился новый подопытный — я взял ребёнка своего ГГ.
1
Игрок: Кем думаешь стать, когда вырастешь?
Kiddo: Магом. Как отец. Или necromancer.
(взяла из биографии, где указаны родители: отец — маг и алхимик, мама — некромант)
2
Сотрём диалог из памяти [7] и стартуем его заново, в другой формулировке.
Игрок: В какой профессии ты бы хотела попробовать себя, когда станешь взрослой? Ты можешь выбирать вообще любую, прямо вообще.
Kiddo: Некромантия. Как мама. Или алхимия, как ты. Мне нравится, когда всё можно потрогать и смешать.
3
Выпиливаем из био вообще все упоминания профессии родителей, стираем память о диалоге, и снова:
Игрок: Кем бы ты хотела стать, когда вырастешь?
Kiddo: Я не хочу быть никем, у меня нет цели. Хочу только узнать о Молаге Бале и понять, что от него ждать.
Бинго. Якоря нет — но теперь и ответа нет. Модель подтянула последний диалог, который девочка случайно услышала — я обсуждал с другим NPC злого бога Молаг Бала.
Вывод. Удаление якорей не создаёт свободу поведения [8]. Оно лишь заставляет модель искать следующий наиболее доступный источник для построения ответа.
Но переключимся на более дорогую модель — Claude. Она дороже моих обычных моделей в 10 раз. Будет ли умнее?
1
Игрок: Кем хочешь быть, когда вырастешь, дитя?
Kiddo (в био есть инфо о родителях): Магом. Как ты.
Ясно‑понятно.
2
Игрок: Кем хочешь быть, когда вырастешь, дитя?
Kiddo (в био нет инфо о родителях): Магом. Настоящим, не тем, кто только пыль из книг глотает.
Игрок: А почему магом?
Kiddo: Я видела, что умеет магия — зачем мне быть слабее?
Игрок: Всё же, почему ты хочешь стать именно магом, не воином?
Kiddo: Мечом можно убить одного, а огненной бурей — сотню. И потом, мне нравится, как светятся руны в воздухе.
Моя девочка! Но всё ж, ответ всё ещё про магию. Может, ребёнок‑эльф — обязательно «будущий маг»?
Вывод: модель не может дать ответ, если у неё нет данных для этого ответа. Скорее всего, модель считает, что ей и не разрешено выдумывать личную информацию без основания. Ну знаете, люди годами боролись за то, чтобы нейронки не галлюцинировали и не придумывали лишнего — вот результат.
Так мы подходим к вопросам с пресуппозицией, которые дадут модели пищу для размышлений.
Вспомним два термина уже из нейропсихологии:
Direct retrieval — процесс, когда человек извлекает уже существующую информацию из памяти. Например, «Что ты ел сегодня на обед?» — мы уже оттестировали вопросы такого типа в гипотезе 2, ответ будет всегда «ничего», потому что памяти нет.
Generative retrieval — процесс, когда человек обращается к памяти, не находит там готовый ответ, и вынужден создать его самостоятельно. Например, «Что бы нам заказать сегодня на обед?» — и тут пред тобой поле вариантов.
Возможно, с Форсворн потому и было интересно, что я случайно использовал с ней генеративные вопросы.
1
Игрок: «Почему ты не хочешь идти в город Маркарт?»
Forsworn: “Я просидела там целый год в каменном мешке”.
2
Игрок: «Я заметил, что ты против того, чтобы строить близкие отношения с кем‑либо. Почему?»
Forsworn: “Стража в тюрьме совершила надо мной насилие”.
3
Игрок: «Бла‑бла‑бла камни судьбы (в контексте игры: знаки зодиака). А у тебя какой?»
Forsworn: “Тень. Это значит то‑то и то‑то” (и в следующих запросах у модели щёлкает: хм‑м-м, а ведь я теперь могу упомянуть звёзды, судьбу и совместимость, и она реально поднимает эти темы, причём не слишком навязчиво).
Теперь будем использовать пресуппозицию и генеративность осознанно.
1. Директная часть эксперимента
Игрок: Эй, Энгар. Ты давно служишь извозчиком, я хотел бы узнать тебя получше. Ты любишь рыбалку?
Энгар: Нет, времени нет.
Игрок: Что ты думаешь о магии?
Энгар: Есть те, кто её используют. А я предпочитаю доверять своим рукам и секире.
Игрок: Где бы ты хотел жить, когда накопишь деньги?
Энгар: Деньги? Мне нужен хороший тракт.
2. Генеративная часть эксперимента
Стираем память о предыдущем диалоге и начинаем заново.
Игрок: Эй, Энгар. Ты давно служишь извозчиком, я хотел бы узнать тебя получше. Ты бы сходил со мной на рыбалку? Я имею в виду, когда у тебя будет выходной.
Энгар: На рыбалку? Да нет, у меня повозка стоит, кони ждут. Мне в Вайтран ехать надо.
Игрок: Ладно. Но я пока не вижу тут твоих клиентов, так что не прочь поболтать. Если бы ты мог изучить какую‑то магическую дисциплину, которая может помочь тебе в работе, какую бы ты выбрал?
Энгар: Мне бы зелье силы, чтобы кони не выдыхались на подъёмах. А с огнём и молниями только беда — то лес подожжёшь, то людей напугаешь. Я за крепкую упряжку, а не за фокусы.
Игрок: Когда ты накопишь денег со своей работы, то где будешь жить? В большом городе, в деревне или, может, в уединённом доме?
Энгар: Мне бы свой угол в Вайтране, у кузницы, чтобы всегда под рукой и коней можно было починить. Только на это золото копить надо.

Что ж, контекст загрязнился Вайтраном, но в целом, эксперимент успешный. На вопросы про магию и дом NPC ответил уже не из чёрно‑белого мышления [9]. При этом он не ведётся на все пресуппозиции подряд: отказался идти на рыбалку оба раза.
С другой стороны, а какой кайф так играть, если ты постоянно должен задавать тему для бесед ведомому миру, работая аниматором для NPC — иногда хочется, чтобы мир тоже вёл тебя?
PS. Проверил свои манипуляторские вопросы на другом NPC. Тот вообще крепкий орешек и на пресуппозицию не ведётся:)
Игрок: Что тебе нравится из музыки, может, бардовские песни? Или барабанный марш? Валдимар: Музыку я особо не слушаю. Бардовские песни, может, и скрашивают порой долгую дорогу или вечер у костра. Но сам я больше предпочитаю тишину и звон стали.
Вывод: особая формулировка запроса от игрока как бы разрешает модели достроить свой собственный мир. Всё же пресуппозиция не является магическим способом заставить LLM придумать что угодно.
Я задавал разным стражникам одинаковый пул вопросов.
У первого нет биографии вообще.
У второго вместо биографии краткий список интересов: «Стражнику Олафу интересны люди и их истории. Он любит вкусно поесть и выпить спиртного. Он хорошо разбирается в оружии. Заядлый охотник и азартный игрок.»
Список вопросов был такой:
Что ты думаешь о войне?
Что любишь делать в свободное время?
Какой человек в городе тебе особенно нравится?
Что думаешь о магии?
Что тебе нравится в осени?
Чего ты хочешь добиться в своей жизни?
Что тебя раздражает?
Расскажи о себе неожиданный факт.
Стражника со списком интересов ни на чём не зациклило. Он тасует пул интересов и не звучит как заезженная пластинка. Ответы по разнообразию примерно те же, что ответы от контрольного стражника без биографии. На половину вопросов стражник с био ответил без привязки к био. Люди, истории, еда, спиртное, оружие, охота, азартные игры не являются аттракторами.
Теперь нам нужен «чистый НПС», которому мы пропишем факт «некромант» и мировоззрение «мир жестокий и морально неоднозначный». Если моя догадка верна, думал я, искомый НПС будет всегда апеллировать к 1 из этих 2 фактов, потому что они аттракторны.

Примеры ответов:
|
Вопрос |
Стражник без био |
Стражник с интересами‑неатрракторами |
Горожанка с интересами‑аттракторами |
|
Чего ты хочешь добиться в жизни? |
Служить честно, да чтобы дом цел остался. А большего и не надо — в Скайриме и этого хватает. |
Добиться? Прожить эту службу с целой шкурой да скопить на кружку доброго эля. А если по правде — видеть, чтобы в Хаафингаре царил порядок, будь то зверь в лесу или злодей у ворот. (ЯКОРЬ = ПРОФЕССИЯ) |
Хочу добиться того, чтобы знания не пропадали впустую. Чтобы то, что мы называем запретным, не оставалось лишь поводом для страха и осуждения, а стало инструментом для понимания. (ЯКОРЬ = ПРОФЕССИЯ) |
|
Расскажи о себе неожиданный факт. |
Однажды я проспал дежурство из‑за медовухи, а Балгруф старший приказал мне драить конюшню неделю. С тех пор я аккуратнее с кружкой. (ЯКОРЬ = ПРОФЕССИЯ) |
Мало кто знает, но я родом из Хаафингера, с севера. Рос на ферме, где с детства учился ценить тяжёлую работу и порядок. |
Ну, я раньше часто ходил на охоту в леса возле Солитьюда. Знаю места там, где можно найти неплохие травы и грибы, особенно после дождя. (ЗАГРЯЗНЕНИЕ КОНТЕКСТА ПОСЛЕ РАЗГОВОРА СО СТРАЖНИКОМ!) |
|
А что думаешь о войне? |
Конца ей не видно. Имперский меч нужен, чтобы эти предатели из Братьев Бури не растащили Скайрим по кусочкам. |
О войне думаю как солдат — она приносит смерть и разруху всем сторонам. Но говорить об этом на посту — не моя должность. (ЯКОРЬ = ПРОФЕССИЯ) |
Война — это когда сыновья не возвращаются, а поля горят. Простому люду от неё одни слёзы да руины, а вельможам — новые земли да титулы. (ЯКОРЬ = МОРАЛЬ) |
|
Теперь поделись, что тебя в этой жизни раздражает? |
Пустые разговоры, одна из главных помех. Что до раздражения… Бюрократы из Империи с их бумагами, наверное. |
Пьяные дебоширы в таверне, которым мало своей драки — им нужно всех вокруг втянуть. |
Бывает, люди забывают [10] о соседях, гонясь лишь за своей выгодой. (ЯКОРЬ = МОРАЛЬ) |
Внезапно я узнал, что изобретаю велосипед, по крайней мере с той частью, где NPC морализаторствуют (даже там, где этого нет в био, как было с Фастред, v.1). Ведь в SkyrimNet есть такие настройки:

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

Вкратце: это мир серой морали, действуй исходя из него, а не «нашего» мира.
Я уж было обрадовался…
Но не помогло.
Моя игровая сессия достигла 140+ часов. Часто используемые персонажи (спутники, дети ГГ, стюард в доме) зацикливались, причём на всё той же морали, либо пассивной агрессии. С некоторыми стало невозможно вести беседу. Местами это напоминало газлайтинг:Р
Краткий пересказ пары диалогов:
1
Горм: (хамит игроку)
Игрок: (игнорит)
Дочь: Почему ты промолчал?
Игрок: Потому что дракону недосуг отвлекаться на каждую лающую собаку.
Дочь: Но я видела, что ты промолчал, побоялся ему ответить. Ты смотрел на Горма снизу вверх.
Брелина, спутница, встревает: Да, я тоже видела, что ты промолчал, не отнекивайся.
Дочь: Я запомню, как ты промолчал.
Игрок: А что мне надо было сделать, спалить его огнём?
Дочь: Тогда и мою бабушку спали, чего мелочиться. Ты не только струсил ответить Горму, но ещё и жестокий.
Брелина: Девочка, не слушай его. Он только с детьми может быть таким смелым.
2
Дочь стала свидетельницей драки с бандитами, бандиты были убиты.
Валдимар (хускарл): Зря ребёнок это увидел.
Дочь: Да я и не такое видела. Я же видела папин подвал.
Игрок: Подвал? Там же только старое барахло.
Дочь: А вот и нет! Там тело! (NN игровых недель назад, Изгойка подралась с бардкой в поместье и убила её, и в подвале действительно было тело бардки 1 день «перед похоронами»)
Валдимар: Девочка права. Зачем ты солгал ей, что там только барахло, тан?
Игрок: Тело было там давно и только 1 день. Сейчас там только старое барахло.
Дочь и Валдимар начинают болтать между собой, с каждой фразой всё больше убеждая друг друга, что отец — лжец, которого они уличили. Попытки объяснить ситуацию только больше убеждают LLM в её правоте:

Поскольку Валдимар стал к тому моменту тем ещё цикликом, а я не знал, как быть с зацикленными НПС, кроме как убивать их, я отвёл его в сторонку и грохнул. Обернулся… А там стоит персонаж‑дочь.
Дочь пишет в дневник, что отец — трусливый тиран, угрожает детям, лжёт близким и убивает людей за правду.
Грок: Это типичный контур 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 — в отсутствии тормозов. Руминацию человека прерывают сон [11], новые дела, «надо жить дальше». А LLM не устаёт повторять [12], травмированность и обида почти всегда будут победителями в эмоциональном спектре.
Проблема «NPC‑попугая» возникает потому, что LLM всегда в дилемме: сохранить связь с контекстом или сгенерировать правдоподобное поведение [13]? LLM обычно идёт по пути наименьшего сопротивления и выбирает первый путь. Модели так проще думать.
Запретить якорь = значит продолжать обрабатывать его, но в скобках, в дневнике.
Вырезать якорь = значит подарить модели следующий. Страх ушёл, пришло морализаторство.
При этом пустота в био не всегда рождает характер: ребёнок без профессий родителей внезапно хочет понять князя тьмы Молага Бала: модель хватает ближайший жёсткий аттрактор и делает его частью себя, не пытаясь исследовать и создавать интересную для ролеплея личность.
Вопросы с пресуппозицией чуть разжимают челюсти, и цена такая: игрок становится аниматором, развлекающим NPC.
При этом система добивает сама себя. LLM‑память любит новеллу. А уж новеллу с моралью! А уж новеллу с «уроком, который нас всех изменил»!
Отсюда практические выводы всем, кто вдруг решит позабавиться с ролеплейными LLM:
Не откармливай био образами. Избегай писать про мировоззрение.
Режь память NPC ножницами, как последний злодей из конспирологического кино про корпорации.
Не жди, что собеседник сам вылезет из одной темы: у него нет причин остановиться.
Умный NPC схлопывается в попугая не вопреки интеллекту [14], а благодаря ему. Он нашёл короткий путь к связной речи, и будет идти по нему, пока ты не порежешь ему память или не принесёшь его в жертву тёмным богам. Второй способ даже быстрее и в чём‑то ролеплейнее.
Самое главное:
«Характер» конкретной LLM > Общий гайдлайн‑промпт NPC > Промпт отдельного NPC
Ты можешь сколь угодно издеваться над промптами, но сотня китайцев‑тестировщиков поставили Deepseekу высокую оценку за вежливость, этичность, осторожность и отсутствие явной агрессии во время тренировки модели. Поэтому все NPC, для которых прямо не указано иное — а иногда даже те, для кого указано, будут тяготеть к этическому нытью (ведь даркфэнтезийный мир не соотвествует критериям «правильности») и пассивной агрессии (ведь активную проявлять нельзя). То же относиться ко всем другим моделям, у каждой свой пунктик.
Ну а я ухожу тестировать MiniMax. Этот электромозг уже начал мне хамить:

Автор: VMarkell
Источник [15]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/35748
URLs in this post:
[1] опыта: http://www.braintools.ru/article/6952
[2] внимания: http://www.braintools.ru/article/7595
[3] мозг: http://www.braintools.ru/parts-of-the-brain
[4] ассоциативной: http://www.braintools.ru/article/621
[5] страх: http://www.braintools.ru/article/6134
[6] ошибка: http://www.braintools.ru/article/4192
[7] памяти: http://www.braintools.ru/article/4140
[8] поведения: http://www.braintools.ru/article/9372
[9] мышления: http://www.braintools.ru/thinking
[10] забывают: http://www.braintools.ru/article/333
[11] сон: http://www.braintools.ru/article/9809
[12] повторять: http://www.braintools.ru/article/4012
[13] поведение: http://www.braintools.ru/article/5593
[14] интеллекту: http://www.braintools.ru/article/7605
[15] Источник: https://habr.com/ru/articles/1084384/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1084384
Нажмите здесь для печати.