Как создать ИИ-бот, чтобы ролить с любыми персонажами

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

Играть в текстовые ролевые игры бесплатно

«Ролить» — что это вообще такое?

Начнём с азов, без которых дальше двигаться бессмысленно. Ролевая игра с ИИ (или, как её называют в англоязычных сообществах, AI roleplay) — это переписка, где обе стороны отыгрывают роли по заранее согласованному сюжету, миру и характерам. Вы можете быть собой, а можете — другим персонажем. Бот, в свою очередь, держит заданный образ: говорит определённой лексикой, реагирует по характеру, помнит свою биографию и не вываливается из сцены при первом же неожиданном повороте. Звучит просто. На практике же — задача не из лёгких, ведь языковая модель по умолчанию тяготеет к нейтральному, вежливому и слегка пресному стилю. Именно с этим стилем нам и предстоит бороться.

Выбор движка: на чём всё это поднимать

С чего начинается любой проект? С выбора инструмента. Тут вариантов хватает, и каждый со своими подводными камнями. Самый порог входа низкий у готовых платформ вроде Character.AI, Janitor AI, Chub или Risu — там не нужно ничего программировать, достаточно создать карточку персонажа и нажать «играть». Минус — жёсткая модерация и потолок по тонкой настройке. Чуть глубже копают те, кто берёт SillyTavern: это бесплатный интерфейс-фронтенд, который подключается к разным моделям через API. Хочешь GPT-4o от OpenAI — пожалуйста, хочешь Claude от Anthropic — тоже работает, нравятся опенсорсные Llama 3.1 или Mistral — поднимай локально на своём железе. Ну и, наконец, самый хардкорный путь — собственный бот в Telegram или Discord на Python с библиотекой aiogram или discord.py, где вся логика пишется руками.

Что выбрать новичку? Связка SillyTavern + платный API (OpenRouter даёт доступ почти ко всем моделям сразу) — золотая середина. Свободы много, а возиться с серверами не приходится.

Железо и деньги

Вопрос, который всплывает почти сразу: во сколько это обойдётся? Тут всё зависит от аппетитов. Облачные API работают по токенам — за тысячу слов туда-обратно с моделью среднего уровня уходит несколько центов. Активный ролевик нагоняет где-то 5–15 долларов в месяц, и кошелёк это особо не ударит. А вот если хочется приватности и никаких ограничений по контенту, придётся раскошелиться на локальный запуск. Модели на 13 миллиардов параметров крутятся на видеокарте с 12 гигабайтами памяти (RTX 3060 справляется), а вот 70-миллиардные монстры требуют уже двух карт по 24 гигабайта или серьёзного вложения в специализированное железо. Серединка — квантованные модели в формате GGUF, которые умеют работать частично на процессоре и оперативной памяти. Медленнее, зато доступно почти каждому.

Надоели сериалы и однотипные игры? 🎬

Попробуйте текстовые ролевые игры с ИИ-персонажами — это как интерактивная книга, где главный герой вы сами. Никакого пассивного просмотра: вы говорите, действуете и влияете на сюжет. ИИ подыгрывает в роли персонажа и ведёт историю дальше — увлекает не хуже любимого сериала, только теперь главный — вы.

Попробовать новый формат 👉 https://clck.ru/3Ta8kQ

Карточка персонажа — сердце всего

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

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

Промпт и системные инструкции

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

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

Память: главная боль и как с ней жить

Любая языковая модель страдает короткой памятью. Контекстное окно — это сколько текста бот «видит» прямо сейчас. У старых моделей было 4 тысячи токенов (примерно 3 страницы), у современных вроде Claude 3.5 — уже 200 тысяч. Казалось бы, проблема решена. Но нет. Чем длиннее переписка, тем сильнее модель «забывает» детали из начала, путает имена второстепенных героев и теряет цвет глаз персонажа.

Спасательный круг — суммаризация. Раз в сотню сообщений сюжет сжимается в краткое содержание, которое подкладывается в начало контекста. Второй приём — лорбук (он же worldbook), база знаний о мире, которая подгружается только тогда, когда в диалоге всплывает определённое ключевое слово. Упомянули Северное королевство — в контекст добавилась справка о его географии и политике. Не упомянули — место в памяти не тратится. Третий уровень — векторные базы данных вроде ChromaDB, куда сваливается вся история, а нужные фрагменты выдёргиваются по смысловому поиску. Сложно, зато работает почти как настоящая долговременная память.

Выбор модели под задачу

Не каждая модель подходит для ролевой игры. GPT-4o умна и логична, но порой слишком вежлива и любит морализаторствовать. Claude от Anthropic пишет художественно и атмосферно, держит характер лучше всех, однако имеет довольно строгие фильтры на тёмные темы. Из опенсорса для отыгрыша заточены файнтюны вроде Mythomax, Midnight-Miqu, Nous-Hermes и многочисленные мерджи на базе Llama 3. Они менее умны в логике, зато расслабленнее в стиле и не шарахаются от острых сцен.

Совет простой: не стоит гнаться за самой большой моделью. Иногда грамотно настроенная 13B даёт более живые диалоги, чем сырая 70B без специализации. Тестируйте, сравнивайте, не ленитесь менять. Это нормальный процесс.

Настройки генерации

Помимо модели и промпта, на результат сильно влияют параметры сэмплинга. Температура (от 0 до 2) отвечает за «творческость»: чем выше, тем неожиданнее ответы, но и тем чаще модель уходит в бред. Для ролёвки золотой диапазон — 0.8–1.1. Top-P обрезает маловероятные слова, Repetition Penalty борется с зацикливаниями, Min-P — относительно новый параметр, который многие хвалят за баланс между разнообразием и связностью. Не стоит крутить всё сразу: меняйте по одному, иначе никогда не поймёте, что именно сработало.

А ещё бывает полезно прописать длину ответа. Без указания модель то выдаёт три слова, то простыню на десять абзацев. Просьба «отвечать средними репликами по 100–200 слов с описанием действий и эмоций» творит маленькое чудо.

Этика, безопасность и здравый смысл

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

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

Играть в текстовые ролевые игры бесплатно

С чего начать прямо сегодня

Если хочется попробовать, не утопая в технических деталях — поставьте SillyTavern (есть инструкция на русском), зарегистрируйтесь в OpenRouter, закиньте туда пять долларов и подключите Claude 3.5 Sonnet или DeepSeek. Скачайте с сайта Chub готовую карточку понравившегося персонажа, чтобы понять, как они устроены изнутри. Поиграйте час-другой, отметьте, что раздражает, что нравится. А потом — садитесь писать свою. Первая карточка получится корявой, вторая — терпимой, третья уже заиграет. Это нормальная кривая обучения.

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