Pull to refresh

Comments 27

Дочитал где-то половину, возник вопрос: а какая модель использовалась? Сейчас все разработчики топовых моделей помешанны на кодинге и агентской работе, видел грустные обсуждения, что хорошие модели для ролеплея приходится искать.

Писал вверху: Z-ai, Deepseek, Gemma. Причём больше всего приколов именно от дипсика.

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

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

А отрицательные инструкции (персонаж не должен) всегда на порядок слабее утвердительных. Прямо как с собаками.

Попробуйте NanoGPT где доступны более старые модели: DeepSeek 3.2, GLM старый, и специально обученные модели.

Ещё есть трюк, не знаю только, можно ли прикрутить его к игре. Модели в команде нужно сказать, что она - режиссёр и пишет сценарий, то есть чётко отгородить "личность" модели от персонажа. Получить от неё художественное обезличенное описание действий в третьем лице. Затем отдельным прогоном сказать преобразовать это в текст от первого лица и вызовы действий.

Тут как самогоном - для хорошего продукта нужно три прогона, и ни в одном не напортачить.

Прописать в промт, что "модель = режиссёр" - отличная идея.

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

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

Рекомендую попробовать расставить веса ключевым словам в самом начале промпта (начальным токенам больше внимания и читают модели текст слева направо) модели которая описывает роль.это работает. писать примерно так:

personality_keywords:эльф9|черный_юмор:8|любовь_к_природе:7|...

Намеренно используются символы "|" потому что "," с большей вероятностью знак препинания и больше относится к пунктуации, а это не подходит для цели промпта

О! Это отличная идея. Благодарю, внедрю.

Что-то по диалогах не сильно отличается от живых людей. Просто местами эмпатии не хватает: люди так же зацикливаются вокруг травм, и требуются новые ситуации, чтобы эти травмы переработать. Возможно, био нужно как то регулярно сжимать за пределами окна контекста (100 последних событий, например). Тогда поведение будет адаптивно меняться.

Я немного прокомментирую. У персонажей СкайримНета 3 слоя памяти:

  1. Сырой лог (диалоги + бой + лут + прочее) - краткосрочная память

  2. Воспоминания - долгосрочная память

  3. Био

При запросе LLM не тащит всё сразу в input, только био + 50 последних строк лога + 5 долгосрочных воспоминаний, отобранных по релевантности.

Самый большой вес всегда у TRAUMA (0,85-0,95), поэтому СкайримНет всегда потащит её в input. Мы получаем вечно ПТСРнутых персонажей. Человек может забыть, проработать обиду - NPC нет, только если ты вручную не порубишь ему веса старых воспоминаний. Тут разрабам мода надо прикручивать некое затухание важности, например умножать важность старых воспоминаний на 0,9 каждые N дней.

А насчёт эмпатичности - возможно, диалоги в статье подобрались более сухие, но эмпатии у дипсика точно ту мач. Представьте, как один некромансер пытается отчитать другого за практику, потому что “Ты знаешь, какую цену тебе придётся за это платить?”, потом НПС пытается устроить сеанс психоанализа, мол, “а ты сам понимаешь, почему ты этим занимаешься? ты боишься встречи с настоящим собой!” - и всё это минимум пару раз на игровой день :D

Вы провели эксперименты с промптами, а не пробовали покрутить технические настройки модели? Например:

  • Температура [0; 1] меньше - точность и зацикливание, больше - творческая свобода, но с возможными ошибками

  • Top K [1; inf] - выбор следующего токена из пула, может увеличить вероятность появление чего-то нового

  • Top P [0;1] - вероятность от 0 до 100 процентов, насколько токен должен подходить, чтобы пройти проверку

  • Repeat Penalty 1.0 не наказывать, больше степень наказания за повторение одного и того-же

  • Presence Penalty on/off - наказывать за уже присутствующее слово, отличие от предыдущего, что наказание идет независимо от того, как часто встречается слово

Да, вы думаете в ту же сторону, что и я :) как раз следующим этапом начал крутить температуру.

Напишите еще статью или пост про результаты экспериментов с параметрами модели

Обязательно [смайлик с рукопожатием]

Все крутил, ничего не помогает. Все равно с ростом контекста и количеством собственных ответов вырождается. С 2024 года вожусь с развлекательным Дискрд ботом.

"novel" не синоним "новелла"

Вся проблема в том, что реализацию "живости" отдают на откуп генераторам текста. А генератор текста должен только текст генерировать. Всю подстановку переменных генерации и памяти персонажа, в зависимости от обстановки, должны нормальные алгоритмы делать

В теории да. На практике (ниже я написал что делаю игру с ИИ мастером) это оказывается гораздо сложнее чем кажется. Казалось бы, что сложного - дать модели в виде промпта небольшое описание персонажа, список его интересов, описание его локаци, а дальше дать ИИ генерировать ответы на основе этих данных.

Но есть нюанс.

Когда вы разговариваете с человеком, вы даже не отдаете себе отчет, какой колоссальный объем контекста находится у вас в голове, и в голове вашего собеседника. Большинство людей обладают знаниями обо всем на свете - от истории до кино, от политики до рыбалки. Да, знания могут быть неполными, слабыми, иногда и откровенно ложными, но все эти знания сидят в некоей общей картине мира, в общем культурном, историческом и географическом контексте. Они описывают одну и ту же объективную реальность.

Спросите нескольких разных человек на улице - и они скорее всего дадут вам примерно одинаковые ответы на вопросы из того что называется common knowledge. Какой сейчас месяц и год, кто управляет страной, как пройти к ближайшему метро, сколько колес обычно у автомобиля или кто такой Пушкин.

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

А в случае с выдуманным миром и ИИ, весь этот контекст вы должны прописать сами вручную. Иначе на непредусмотренный вами вопрос нейронка каждый раз начнет галлюцинировать и выдумывать. Причем, что самое мерзкое, каждый раз она будет делать это по-разному.

Если вы не продумали, что игрок может спросить NPC про то, кто правит страной где происходит игра, то каждый NPC будет отвечать что-то свое. Один расскажет что обожает их короля. Другой скажет что у них демократия. Третий скажет что страной правит совет колдунов. И выглядеть для игрока это будет ну очень тупо. Ему-то очевидно, что уж такие базовые вещи каждый персонаж должен знать.

Проблема в том что таких базовых вещей очень много. И вы, как разработчик, должны их все предусмотреть и подпихнуть нейронке. Буквально детально прописать весь мир, весь его лор, на уровне гораздо более детальном, чем в обычной РПГ, где игрок не может задать NPC произвольный вопрос в любой форме и начать углублять тему.

Я не стал свой комментарий расписывать, но мне видится, что это нужно делать в два этапа. Первым нейронка парсит запрос пользователя и выдаёт список промтов требуемых для ответа - персонаж_базовый.md, локация.md, василий_петрович.md. Вторым этапом нужные данные отправляются в сетку вместе с сообщением пользователя. Ответ сетки тоже снова ей скармливается на предмет необходимости обновления md файлов или создания новых.

Насколько знаю, что-то подобное сейчас делают разные агентские системы

Вопрос в том, кто именно должен писать эти md файлы. Если вы как автор, то вот есть проблема что заранее предусмотреть весь полет фантазии игроков невозможно. Нужно найти ту грань, где нейронка может логично ответить на основные вопросы по миру, и при этом вы как автор еще не надорветесь все это изобретать.

А если разрешить нейронке эти факты придумывать, то игроки там такого из нее выбьют... Это годится для песочницы или треш-веселья, но не годится для сюжетной РПГ кампании. Иначе быстро окажется что ваш главный злодей - орк-трансвестит, а в его тайную базу можно зайти просто так без пропуска.

Свободное изменение нейронкой (а через нее - фактически игроком) фактов о мире позволяет делать огромные сюжетные дыры. На мой взгляд лучшая аналогия такого подхода в геймдизайне - это как если в шутерах дать игроку реальное разрушение объектов. Технологически возможно давно, на практике нигде не используется. Так как если игроку дать взрывать любые препятствия, не очень понятно как заставить его идти искать ключи и нажимать кнопки, если можно просто пробить тоннель под землей в обход всего этого.

Поэтому я в своей игре исхожу из идеи что нейронка не может сама переписывать игровой мир. А значит приходится предусматривать все самому.

Я сейчас делаю свою РПГ игру с ИИ мастером, столкнулся со многими похожими проблемами (кто захочет попробовать — https://magiaimperata.com, код инвайта HABR, позже статью сам о ней напишу).

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

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

Но у меня диалоговая система в принципе не заточена под длинные пространные рассуждения. Так как ИИ не может их долго вести не скатываясь в глюки, у меня встроен ограничитель: несколько реплик подряд, которые не затрагивают сюжетные темы — и NPC говорит что‑то в духе «у меня дела», завершает разговор и уходит.

Но вообще конечно да, идея "дать NPC возможность общаться на любые темы" выглядит удачной только пока не сталкиваешься с тем, какие именно любые темы игроки предлагают. Начиная от попыток сексуального насилия, и заканчивая какой-то полной дичью (один игрок долго предлагал NPC-мага превратить его голову в куб. Зачем? А хрен его знает, ради лулзов). Попытки продумать адекватные реакции на любые подобные вещи, чтобы NPC при этом не ломали сюжет, не обещали невозможных действий (один NPC внезапно пообещал мне в награду за помощь магическую книгу, хотя у меня в игре даже нет еще системы инвентаря, и дать ее он мне физически бы не смог) и не зацикливались, оказались бесконечными и похожими на попытки по одному кирпичику построить стену, перегораживающую пустыню.

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

РПГ c ИИ мастером - это очень любопытно. Какую LLM используете, и какой расход токенов на одного игрока в среднем в долларах?

Использую DeepSeek Flash. У меня пока готов первый сюжетный акт (сдача экзамена в академии магии), его можно пройти за 2-3М токенов, в случае с дипсиком это десяток центов.

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

Сейчас будет хвастовство и ваше право не верить мне.

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

Вышел промт на 15000 символов, лучшее качество нарратива (от ролевых игр до литературы), нигде в интернете нельзя найти лучше.

Память, контекст и логика нейросети стало настолько хорошее, что он НЕ забывает ни одну явную деталь за весь сеанс, будь то черты, атрибуты персонажа, что было сказано и так далее (один сеанс длился непрерывно 16+ часов, потом получил просто лютейший сюрприз от нейронки, который использовал случай из самого начала истории и обернул в виде ностальгии и шутки, я тогда несколько дней отходил от шока)

Самое сложное в нейросети это общение (самое сложное для нейросети хз), потом черпание точных данных о персонаже из весов, затем выдержка образа 1-10 персонажей.

Мне не хочется делиться этим, просто хотел сказать что нет предела в промпинге

Почему не верить - верю. Сейчас буду внедрять рекомендации от комментаторов, второй частью эксперимента, нет предела совершенству промпта и подкручивания настроек... У самого сейчас гиперфокус на этой теме, по 14 часов на выходных, по 8 в будни :)

А вы работали именно в СкайримНет или просто с моделью напрямую (и какой?)

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

Именно дипсик может нормальные диалоги между персонажами делать в отличии от других. Я еще стремлюсь к большой длине ответов, чтобы было по 20тыс символов и придерживался этих рамок в течении всего сеанса, но это до сих пор для меня сложно ибо первые несколько ответов он держит этот размер, потом снижает количество или вообще сильно ограничивает длину изза чего качество резко падает.

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

Проблема любого ИИ персонажа - отсутствие связи с миром (не важно, реальный он или симулированный). мало информации = гиперфиксация на том что есть (у ИИ вообще проблема сильного зацикливания на своем контексте).

Пример с голодным персонажем прекрасно показывает - у ИИ есть ручки, доступ к инвентарю, но нет состояния голода, только короткая заметка в памяти (я помню что я голодный). Что бы это заработало, нужно как минимум наладить взаимосвязь, либо создать агента, который будет следить за сытостью либо описывать это, затрачивая токены контекста. Что бы модель принимала решение, что кушать и когда, ей нужно много информации вокруг этого - история (в прошлый раз кушал там то, то то, когда этот сделал то то), общие положения (не принято кушать на приеме у короля, если это не собственно пир), пометки о необходимости экономить (например связь с текущими целями - идем в поход в лес, еду берем что бы там кушать, сейчас брать еду из сумки не уместно) и куча куча мелочовки, которая накапливается за всю жизнь у реального человека но которой в принципе нет у ИИ,.. точнее есть но там такая галлюцинирующая каша,., и главное multi shot примеры по слепкам состояний, т.е. не только история состояний но и примеры, если было так то поступать этак (это разновидность исторических наслоений, только не просто поток данных а выжимка из самых ярких).

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

Агент, который будет манипулировать контекстом в таких условиях это будет что то монструозное и сложное... но в принципе реален. И однозначно, даже сильные модели, если контекст слишком заполнен, будут пропускать важные моменты (если у вас среди 100к токенов есть заметка, не забудь обновить состояние голода после еды, то она отработает с вероятностью в 80%, т.е. после 5-6 приемов пищи начнет сбоить.

p.s. адекватный агент, симулирующий жизнь NPC в виртуальном мире будет требовать десятки-сотни запросов, tool call, и внешних инструментов, на каждое действие,.. без моделей, работающих на скоростях в десятки тысяч токенов в секунду это играбельным не будет.

я так ждал что компания Taalas (собиралась выпускать чипы с зашитыми весами, недавно представила 10к tps для маленькой llama 8b, это просто шикарно, например moe на такой архитектуре была бы еще круче) выдаст миру что то полезное, а они направили свой взор на корпоратов а потом вовсе продались amd, т.е. считайте можно смело ставить крест на этой технологии, другим стартапам инвесторы после такого деньги на это не дадут (теория заговора - возможно это и было целью как один из шагов сдерживания развития ИИ по миру) а amd в сторону людей не повернется (для себя - пожалуйста, сделают аналог dlss не больше).

Есть конечно Cerebras, 3k tps для gpt-oss-120b, за 1$ за 1m токенов и неясной моделью кеширования, если что типовой диалог агента, решающего простейшую задачу 1-3m токенов, никто в здравом уме не будет платить по баксу за несколько взаимодействий одного npc, да никто и 1 цент платить не будет... хороший мир это десятки npc и часы игры.

Только хотел написать эту мысль и специально зашел проверить комменты не оставил ли подобного текста.

Я тоже уверен, что ИИ не хватает правильного контекста. Пример:

Представим, есть человек, но мы полностью вырезали у него понимание того:

  • Где он

  • Зачем он сюда пришел

  • Кто он

  • Что было день, месяц, год назад

А потом мы подсунули ему бумажку со списком типа "Ты любишь спиртное, у тебя травма и ты всего боишься". Логично, человек ничего о себе не знает, не знает причин, по которым он любит спиртное или боится чего либо. Он просто знает, что ему надо отыгрывать эту роль.

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

  • Ты любишь спиртное, потому что однажды давно провел отлично время с друзьями с бутылкой эля, и теперь каждый раз вспоминаешь это состояние

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

Можно заметить, как сильно раздулась личность человека. А ведь это только начало, два мелких факта, которые позволят человеку более-менее понять, как он должен себя вести в разных ситуациях и, в том числе, при диалогах.

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

Как правильно отметил человек выше, надо еще уметь жонглировать релевантностью, актуальностью и силой воспоминаний, применять ко всему этому потребности и много других операций.

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

Я все хочу потрогать HyppoRag для этого, но так руки и не доходят.

Спасибо автору за статью, было интересно почитать!

Sign up to leave a comment.

Articles