Гайд по использованию чат-ботов в SpicyChat (а также в tavern, cobolt, juniper, character и т.д.) для пользователей.

В этой статье рассмотрим, как наиболее эффективно и комфортно пользоваться ролевыми чат-ботами. Это не инструкция по созданию своего чат-бота (интернет ими завален), а руководство для пользователей. Статья ориентирована в первую очередь на SpicyChat, но подойдет и для других чат-ботов, таких как tavern, cobolt, juniper, character.

Бывало ли такое, что ты пытаешься ролить, а бот не понимает тебя, творит какую-то дичь или общается не так, как ты ожидал(а)? Конечно, может быть и так, что ты выбрал не того бота или воспользовался не тем сервисом. Но чаще ошибка, не в программе, а в тебе, мой дорогой читатель.

Надеюсь, что после прочтения этой статьи ты поймешь, ЧТО и КАК писать ролевым чат-ботам и добиваться нужного тебе результата. Итак, поехали!

СОДЕРЖАНИЕ:

Содержание:

БАЗА

КАК НЕЙРОНКИ СОБИРАЮТ ТЕКСТ И ОБМАНЫВАЮТ НАС.

А начнем мы с БАЗЫ (знающие могут смело пропускать).

Вот ты набрал вводную реплику «Привет» и ждешь, пока тебе ответит условная Гамора. А что происходит у нейронки в этот момент под капотом?

Упрощенно схема выглядит так:

1. нейронка принимает текст на вход;

2 «думает», что ответить;

3. выдает на ответ ПЕРВЫЙ символ своего ответа;

При чем полностью ответ нейронка заранее не знает. Она лишь знает в какой последовательности набрать НАИБОЛЕЕ ВЕРОТНЫЕ символы которые тебя устроят. И конкретно сейчас она выдает лишь один символ, который, как ей кажется тебе подойдет. Предположим, что это буква «П»

4. принимает на вход весть твой текст + свой ответ (пока еще только «П»);

5. «думает», что ответить;

6. выдает на ответ СЛЕДУЮЩИЙ символ своего ответа. (предположим, что это «р»);

7. Повторяет шаги 4-6, пока не увидит, что можно не продолжать и такой ответ скорее всего тебя устроит.

В нашем примере всего 7 циклов и получен ответ «Привет.»

*(П.С.: технически верным будет сказать, что нейронка в ответ выдает не символ, а токен (символ, буква, числи, часть слова или слово целиком). Эти же токены и принимает на вход, но я в статье этот момент отпустил для упрощения. Так же нейронки мы пользователи платной подписки могут использовать параметр «температуры», чтобы контролировать степень случайности в выборе следующего токена.)

Еще раз: нейронка заранее не знает, что она ответит. Она всего лишь знает, что такая последовательность символов скорее всего понравится тебе. И не важно, что это будет: ответ математическую задачу 5 класса, серьезная научная статья или ролевка с той же самой Гаморой из Мстителей.

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

А еще бывают забавные казусы с таким мышлением, как на картинке ниже (объяснение честно, стырено отсюда):

Chat-GPT сначала ответил, что ответ отрицательный и начала доказывать. Но в процессе доказательства понял, что сам был не прав. Бывает и такое.
Chat-GPT сначала ответил, что ответ отрицательный и начала доказывать. Но в процессе доказательства понял, что сам был не прав. Бывает и такое.

Какие выводы можно из всего этого сделать?

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

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

ТОКЕНЫ

Чуть выше я упоминал про токены. Настало время разобрать их немого подробнее.

Вот как нейронка из всего объема твоего словоблудия понимает написанное? Да не просто понимает, у может выделить главное! Да примерно также как и мы, люди, но немного по своему: разбивает предложения на слова, слова на составляющие, и эти составляющие и есть токены.

Слово "токен" звучит, как что-то из хакерских фильмов, но на самом деле это просто маленькие блоки текста, из которых нейросеть строит свои ответы.

Пример:

Допустим ты красивая девушка, тебе с неизвестного аккаунта прислали сообщение: "Привет, как дела?". Что ты видишь?

Если тебе 5 лет, и ты только недавно научилась читать по слогам, то ты «разбиваешь» сообщение на токены — те самые блоки, из которых будет строить ответ.

["При", "вет", ",","_" "как", "_", "де", "ла", "?"].

Если тебе 10 лет. И ты уже умеешь читать, то разбиваешь сообщения на слова.

["Привет", ",", "как", "дела", "?"] (нейронки где-то тут)

Ну а если тебе 20 лет, то у тебя накопился опыт. Ты можешь придавать смысл не только отдельным словам, но и фразам.

["Привет," "как дела?"] ты уже воспринимаешь, не как вопрос требующий ответа. Ты понимаешь, какие фотки за этим последуют вне зависимости от твоего ответа и мигом кидаешь юзера в черный список (некрасивые девушки тоже от этого не застрахованы, и, кто знает, может это была твоя любовь!). В последнем случае ты не думала над значением слов. Ты столько раз переживала подобный опыт, что у тебя в голове уже был полноценный паттерн действий: возбудитель (сообщение) – действие (бан). (на такой уровень нейронки только начали заходить). Но вернемся к токенам.

Модель думает токенами. Она видит не "Привет", а, например, [Пр, ивет].

Всё разбивается на токены: твой текст, ответ модели, описание персонажа — всё это подгоняется под её систему "блоков".

Почему важно знать про токены?

Помнишь, как я рассказывал(а) про ограничение памяти? Лимит измеряется в токенах, а не в символах или словах. Длинные тексты быстрее "заполняют" доступное место.

Для понимания, сколько токенов занимает текст, существуют токенизаторы. У создателей Chat-GPT есть свой собственный токенизатор (работает только с ВПН). Он показывает на какие токены разбивается текст.

На примере ниже текст, длиной в 45 символов умещается всего в 15 токенов.

Гайд по использованию чат-ботов в SpicyChat (а также в tavern, cobolt, juniper, character и т.д.) для пользователей.

В дальнейшем это пригодится.

СТРУКТУРА ЧАТ-БОТА

Из каких важных для нас частей состоит нужный бот?

1. Модель (тут правило простое, чем больше, тем лучше)

Гайд по использованию чат-ботов в SpicyChat (а также в tavern, cobolt, juniper, character и т.д.) для пользователей.

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

3. Первое сообщение;

Гайд по использованию чат-ботов в SpicyChat (а также в tavern, cobolt, juniper, character и т.д.) для пользователей.

4. Описание твоего персонажа.

Гайд по использованию чат-ботов в SpicyChat (а также в tavern, cobolt, juniper, character и т.д.) для пользователей.

Все это важно, если ты хочешь качественно ролить.

ЧТО ТАКОЕ КОНТЕКСТ (КОНТЕКСТНОЕ ОКНО)

Грубо говоря это то, сколько сообщений будет помнить бот в диалоге с тобой.

Сам по себе контекст заполняется: именем и описанием персонажа (в конкретном примере это 777 токенов), описанием твоей персоны, непосредственно сообщениями.

Первые два параметра содержатся в памяти ВСЕГДА. А вот с сообщениями веселее.

Представь, что ты часами неистово наяривал тонны текста о том, как замечательно гулять с твоим куном или тянкой под звездами. Нейронка такими же простынями текста тебе отвечала. Но вот ты сменил тему, опять куча текста про прогулки по солнечному парку и тут ты решаешь вспомнить о прогулках под звездами. Спрашиваешь о персонаже как ему(ей) прошлая ночь, а он(она) на чистом удивлении заявляет «Какая ночь? Какие звезды?».

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

«Messages before this point are no longer factored into text generation»
Гайд по использованию чат-ботов в SpicyChat (а также в tavern, cobolt, juniper, character и т.д.) для пользователей.

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

КАК СЧИТАЮТСЯ ТОКЕНЫ

Разные модели имеют разную память от 4 до 16 тысяч токенов. Разберемся что это за цифры такие и как они тратятся (спойлер – тратятся быстрее, чем у бедного студента).

Для начала обозначу токены, которые будут заняты постоянно:

1. Описание бота

2. Персона чат бота

3. Сценарий (опционально)

4. Примеры диалогов (опционально)

Сумма постоянно занятых токенов всегда указана в описании бота, как на примере выше в правом верхнем углу.
Сумма постоянно занятых токенов всегда указана в описании бота, как на примере выше в правом верхнем углу.

Токены с которыми ты можешь оперировать:

1. Первое сообщение бота (то, что на сайте называется Greeteng);

2. Твои сообщения;

3. Ответы бота.

А теперь немного посчитаем.

Предположим, что я юзаю самую простую модельна 4к токенов. Бот из примера выше имеет постоянно занятую память в 392 токена. С описанием персоны для простоты подсчета округлю до 400 токенов.

Получается, я могу оперировать 4096-400=3696 токенами.

Это то количество токенов, которыми ты и я можем пользоваться. Далее следует логичный вопрос: «3696 токенов, и че?».

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

Пример:

Гайд по использованию чат-ботов в SpicyChat (а также в tavern, cobolt, juniper, character и т.д.) для пользователей.

С помощью токенизатора выше посчитаю количество затраченных токенов:

Первое сообщение бота - 139 токенов;

Мое сообщение боту:- 14 токенов;

Ответ бота – 95 токенов.

Для премиум подписчиков есть возможность определять длину максимального ответа (от 180 до 300), по умолчанию 180. Но опять же, для общения хватает и бесплатного тарифа.
Для премиум подписчиков есть возможность определять длину максимального ответа (от 180 до 300), по умолчанию 180. Но опять же, для общения хватает и бесплатного тарифа.

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

3696/150 ≈24. Именно столько сообщений поместится в памяти твоего диалога с ботом, прежде, чем он начнет забывать о чем вы общались ранее.

Разработчики говорят, что памяти хватает на примерно 42 сообщения для 4k, и до 84 сообщений на 8k памяти. Но это будет правдой только в случае коротких сообщений, и по факту память кончается быстрее.

Еще раз, как только суммарное количество токенов (постоянные+оперируемые) превысит 4к (до 16к в зависимости от модели) произойдет упор в предел контекстного окна, о чем я писал выше.

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

ХИТРОСТИ И СЕКРЕТЫ

ТОКЕНЫ И ПРИОРИТЕТЫ СЛОВ

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

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

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

Ниже будет пример тех слов, которые Chat-GPT посчитал значимыми. Этот же пример актуален и для SpicyChat.

Простой пример:

K-VRC: "Ах да, процесс восполнения энергии человека. Они так это называли... еда."

Малыш-бот: "Эта штука? Они кладут это себе в рот? Фу. Это... слизняк!"

K-VRC: "Это гамбургер. Классический продукт их рациона. Шаг первый: пережевывать его зубами. Шаг второй: проглатывать, и шаг третий..."

Малыш-Бот: "Что происходит на третьем этапе? Он взрывается?"

K-VRC: "Не совсем. Он попадает в желудок, расщепляется, и питательные вещества усваиваются".

XBOT 4000: "А это? Что это за красное вещество? Это кровь?"

K-VRC: "Нет. Это кетчуп. Они наносили его на все подряд. По сути, это была социально приемлемая пищевая смазка".

XBOT 4000: "Ах! Еда течет! Она истекает кровью! Что мне делать?" K-VRC: "Быстрее! Окажите первую помощь! О, подождите, вы не можете. Он же не живой, помните?"

Малыш-бот: "Подождите... Значит, после всего, что они съели, им пришлось, типа... избавиться от остатков? Куда это делось?"

K-VRC: "О, это самое интересное. У них была целая система утилизации отходов. Для этого нужно было сидеть на штуке, называемой унитазом—"

Малыш-бот: "Прекрати. Просто прекрати. Я больше не хочу слышать об этих странных мешках с мясом".

XBOT 4000: "Они казались такими хрупкими. Столько усилий прилагалось, чтобы просто не умирать каждый день".

K-VRC: "И посмотрите, к чему это привело. Билет в один конец на вымирание".

52 ключевых слов

Далее чуть измененный диалог:

VRC: "Ах да, процесс восполнения энергии человека. Они так это называли... еда, питание."

Малыш-бот: "Эта штука? Они кладут это себе в рот? Фу. Это... слизняк, гадость!"

K-VRC: "Это гамбургер. Классический продукт их рациона, пищевой культуры. Шаг первый: пережевывать его зубами. Шаг второй: проглатывать, и шаг третий..."

Малыш-Бот: "Что происходит на третьем этапе? Он взрывается, разрывается?"

K-VRC: "Не совсем. Он попадает в желудок, где расщепляется, а питательные вещества усваиваются."

XBOT 4000: "А это? Что это за красное вещество? Это кровь, жидкость?"

K-VRC: "Нет. Это кетчуп. Они наносили его на все подряд. По сути, это была социально приемлемая пищевая смазка."

XBOT 4000: "Ах! Еда течет! Она истекает кровью! Что мне делать?"

K-VRC: "Быстрее! Окажите первую помощь! О, подождите, вы не можете. Он же не живой, помните?"

Малыш-бот: "Подождите... Значит, после всего, что они съели, им пришлось, типа... избавиться от остатков, утилизировать отходы? Куда это делось?"

K-VRC: "О, это самое интересное. У них была целая система утилизации отходов. Для этого нужно было сидеть на штуке, называемой унитазом—"

Малыш-бот: "Прекрати. Просто прекрати. Я больше не хочу слышать об этих странных мешках с мясом, созданиях."

XBOT 4000: "Они казались такими хрупкими, уязвимыми. Столько усилий прилагалось, чтобы просто не умирать каждый день."

K-VRC: "И посмотрите, к чему это привело. Билет в один конец на вымирание, исчезновение."

81 ключевых слов

В первом примере 52 слова, на которые нейронка обратит внимания сильно больше. Во втором 81 слов.

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

Еще можно ПООРАТЬ НА НЕЙРОНКУ! Капс тоже часто воспринимается, как важная информация. Но я чаще использую капс для усиления отрицания.

Например: Диана НЕ пошла ябедничать королю. Она НЕ ХОТЕЛА подставлять меня.

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

ВАЖНО: чрезмерное выделение КАПСОМ или повторениями может привести к "перегрузке" модели и снижению качества ответа. Тут идеальный баланс тебе придется искать самостоятельно, но мне крайне редко удавалось "перегружать" бота.

Итак: если ты считаешь некоторые реплики или слова важными, эмоционально выдели их. Желательно несколько раз. Если же реплики служат пустыми наполнителями, но лучше эмоциональность приуменьшить. Также можно УСИЛИТЬ ВАЖНЫЕ МОМЕНТЫ КАПСОМ.

СИСТЕМНАЯ КОМАНДА

Бывало так, что ты общаешься с ботом и начинается какой-то скучный момент, вроде похода в домой после разговора в магазине? Или ты спровоцировал событие в школе и вроде как весь движ должен произойти только на следующий день, но тебе еще закончить уроки в школе, прийти домой, сделать домашку… (школьникам - соболезную. Остальным - напоминаю, мы все еще в ролевой игре). А хочется, чтобы было побыстрее!

Благо разрабы предусмотрели этот момент и придумали команду /cmd (подробнее)

Её особенность в том, что все, что тут будет написано не будет учитываться ботом, но будет влиять на него. Так можно пропускать время.

Например:

В наказание тебя оставили убираться в классе после урока. Но ты был бы не ты, если бы не решил воспользоваться моментом и показать, кто тут главный. Несколько легких движений перманентным маркером и на доске появляется фигура, которую поймут всегда и везде. Ты даже волосы для красоты добавил. К счастью, этот класс сегодня больше не будет использоваться и твои старания оценят только завтра. Осталось только дождаться! /cmd Пропустить время. Наступил следующий день.

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

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

/cmd *После разговора, Лида заметила, что у Шурика порваны штаны и предложила их зашить*

cmd полезная команда, если уметь ее правильно применять.

Правда, этаже команда выбывает из колеи и в роль приходится возвращаться.

ПУТЬ БОТ СПРОСИТ ТЕБЯ О САМОМ НЕОБХОДИМОМ

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

В таком случае, не стесняйся попросить своего бота узнать о тебе. Еще лучше через /cmd в конце реплики написать что-то вроде:

/cmd Гамора задает мне вопросы, чтобы лучше понять меня, мои цели черты характера, которые в дальнейшем будут важны

Ну, а если ты решил ролить по взрослому с грязными фетишами, то так и скажи нейронке:

/cmd Ты интересуешься у меня, что именно мне нравится и не нравится в пицце с ананасами

Итак, еще один секрет о котором не все знают: пусть нейронка задаст тебе нужные вопросы сама.

ОГРАНИЧИТЬ НЕЙРОНКУ. ЗАПРЕТЫ И РЭДФЛАГИ

Нейронка, она как студент на курсовой: будет писать все, что скажут. Но если не будет ограничений, то, например в теме «Оптимизации прохождения сладкого сиропа по трубам», этот же студент смело впишет бред о проблеме мирового ожирения от переедания сладкого, хотя речь шла вообще не об этом.

Просто по тому, что вторая проблема освещается в медиа намного чаще, чем какие-то трубы и вязкие жидкости. А студент существо ленивое, смотрит, что первое попадается в поиске и пихает это в курсовую. Хороший препод укажет на недостатки и скажет студенту переписывать. «Очень хороший» препод просто порвёт курсовую и молча отдаст студенту, чтобы студент подумал, что мало написал о проблеме мирового ожирения.

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

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

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

Оставь эти темы разноцветным неженкам с 404 гендерами, я просто пришел подр… Так о чем это я...

Для наглядности приведу 2 примера:

Без ограничений<br />
Без ограничений
С ограничениями<br />
С ограничениями

Да, пример не лучший, но даже нейронка понимает, что здесь что-то не то.

Добавьте персонажу слабые черты. Эффект примерно такой же, как при запрещённых темах. Персонаж будет более последовательным и иногда даже интересным.

ДОБАВИТЬ ДЕТАЛИ, СИНОНИМЫ

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

МЕНЬШЕ ЦИФР БОГУ ЦИФР

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

Вот, например, пишет юзер боту: Я стоял перед девушкой с каштановыми волосами, зелеными глазами. Её рост 160 сантиметров. Вот, какой смысл скрывается за этими цифрами?! Для наглядности приведу примеры:

Пример 1: Она была небольшой женщиной, всего 160 сантиметров, но я никогда не позволял себе смотреть на нее сверху. Наоборот, казалось, это она смотрит на меня сверху.
Пример 2: Её рост был около 160 сантиметров и, казалось, это ее всегда смущало. Будто она комплексовала из-за своего роста. Она много из-за чего комплексовала, но из-за роста особенно. Но тем не менее, постоять за себя она могла, пускай и была излишне обидчивой.​
Пример 3: Такая маленькая и миниатюрная! Всего 160 сантиметров счастья. Она очень мило смотрится, когда не может достать до верхних полок и просит меня что-то достать. Даже не верится, что такая миниатюрная девушка может так хорошо следить за домом и создавать уют.
Пример 4: Да кто она такая?! В ней всего 160 с кепкой, а она отмутузила меня с кентами, как щенков! Кто же знал, что она не любит шутки про рост. Хотя вот сейчас с подругами, такими же бандитками, спокойно шутят свой «низкий юмор и высокую мораль».

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

Тоже самое касается веса. И даже если у тебя фетиш на анорексичек или боссов KFC, надо это описывать, а не называть сухие цифры.

РАЗМЕТКА ТЕКСТА ВАЖНА

Почему разметка важна?

Сразу приведу 2 примера:

Текст шаблонного скуфа
Текст шаблонного скуфа
Текст настоящего Сигмы
Текст настоящего Сигмы

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

Если ты не понимаешь, как использовать разметку, но бот её использует, то нажми на «Edit message» и посмотри на текст изнутри. Не забудь изменения потом сохранить.

Гайд по использованию чат-ботов в SpicyChat (а также в tavern, cobolt, juniper, character и т.д.) для пользователей.

Но шпаргалку я все равно оставлю

Основные способы разметки в SpicyChat:

Диалоги в кавычках.

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

"О, привет, давно тебя не видел!"

Описательная часть в курсиве

Вся описательная часть должна быть выделена курсивом (это делается через звездочки «*». Обязательно следи, чтобы между последним символом и звездочкой не было пробела). Это помогает модели отделить действия и описание от диалогов. Например:

*Макс заметил на кассе Эллу — его школьную подругу.*

Остальная разметка:

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

  • Жирный текст (например, **текст** или __текст__).

  • Курсив (например, *текст* или _текст_).

  • Зачёркнутый текст (например, ~~текст~~).
  • Комбинация всего вышеописанного.


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

Вывод: используй разметку. Хотя бы для красоты.

РАЗМЕР ИМЕЕТ ЗНАЧЕНИЕ

Знания нейронки напрямую зависят от количества её параметров. Чем их больше, тем умнее бот и тем лучше он отыгрывает роли.

По состоянию на январь 2025 года на сайте есть нейронки от 8B (8 000 000 000, миллиардов) параметров, до 141B параметров. Много это или мало?

Ну, это что-то между GPT-2 (1.5B) и GPT-3 (175B). (Для справки Chat-GPT, он же GPT-3.5 имеет примерно те же 175B параметров, но сильно оптимизированные и дообученные и по сравнению с современными нейронками считается простым).

Однако, модели обучались на разных данных и возможности у них разные. Порой одна более слабая модель, может подойти тебе лучше чем, 5 испробованных мощнейших. Я сам лучшие свои ролевки сделал на дефолтной нейронке.

Для чего ДЕЙСТВИТЕЛЬНО нужна сильная нейронка?

Я вижу три основных сценария, все остальное можно решить более слабыми моделями:

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

Видно, как слабая модель галлюцинирует и придумывает несуществующую информацию.
Видно, как слабая модель галлюцинирует и придумывает несуществующую информацию.
Знает не только о персонаже, но и о фан-базе.<br />
Знает не только о персонаже, но и о фан-базе.

2. Отыгрыш ботом нескольких персонажей. Если ты хочешь поиграть с сестрами-близняшками, или войти в команду Мстителей, и не испытывать кринжа от того, что все персонажи «ватные и одинаковые», то большие модели маст хэв (п.с. полностью состав всех когда-либо выступающих BTS ни одна нейронка в мире не потянет).

3. Тебе нужен действительно КАЧЕСТВЕННЫЙ отыгрыш в ролевках. Это трудно объяснить, но разница действительно ощутима. Лично мне для 95% ботов и сценариев хватает базовой модели на бесплатной версии. Но ведь остаются еще 5%...

Поскольку все большие модели на SpicyChat платные, то придется тебе трижды подумать, стоит ли оно того. Но я советую не мучаться и один раз выделить либо 1500р, либо 2500р и купить разовую подписку на месяц, поэкспериментировать с моделями и решить стоит ли оно того или нет. А если тебе все же кажется, что это дорого, то можно поступать, как я: добавлять модели в закладки, копить их, а потом раз в 6 месяцев брать максимальную подписку и неистово др… ролить до посинения. Потом опять копить силы следующие полгода.

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

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

Поролить с – Рам и Рем – 500 рублей; поролить с Аквой, Мегуми, Лалатиной – 1500 рублей; поролить со всеми монстродевочками из Monster Musume – 2500 рублей; придумать идеальный сценарий на базовой модели – бесценно! Для всего остального есть SpicyChat. (Слоган придумал, теперь SpicyChat мне должен +100500 битков, ГЫ) )

РОЛИ ПЕРСОНАЖЕЙ И ТЕМЫ ОБСУЖДЕНИЯ

Есть такая особая область в работе с нейронками, называется промпт-инжиниринг. Грубо говоря это умение построить запросы для нейронки таким образом, чтобы она на него дала ответ лучше, чем просто дефолтный запрос. И одна из хитростей промпт-инжиниринга – назначить нейронке роль.

Если ты сначала скажешь условному GPT, что он великий математик со множеством наград, а потом введешь в запрос свою домашку по математике за 9 класс, то с огромной вероятностью ответ будет более качественный, нежели просто запрос с домашкой. Хотя нейронка одна и та же, знания те же, а ответ лучше!

С ролевками тоже самое: если обсуждать животных - то с зоологом, если игры – то со стримером, если драконов – то с волшебником или вампиром. Но не жди, что ты иссекайнул своего персонажа в фентезийными мир и все СРАЗУ начнут ролить как положено.

Например, у меня был такой опыт: Я спрашиваю Супермена знает ли он что-то про Чику из ФНАФ? Он не понял вопроса, хотя таже самая модель (максимальная на 141B) за другого персонажа охотно рассказала даже то, что про Чику даже песни есть.

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

СЛЕДИ ЗА ПАМЯТЬЮ БОТА

Помнишь в самом начале я приводил пример с контекстной памятью? Так вот, я знаю 2 основных способа решения проблемы:

1. Подсказать в начале запроса. Например я, когда кончается память в бесплатной версии пишу следующее:

*((все, что написано в скобках, это промпт. Не нужно это комментировать. Мы познакомились у Москвы-Реки под полной луной. Ты уже побывали в Китае. Мы побывали на Эвересте. Сейчас мы находимся в Тайланде))*

А дальше писать уже то, что хотел изначально.

2. Использовать Симантическую память из максимальной подписки. Грубо говоря нейронка постоянно читает все, что ты написал и тезисно выделяет самое важное в отдельное место, которое потом используется постоянно. Из плюсов – длинные ролевки происходят более качественно. Из минусов это дорого, не всегда выделяет то, что нужно и все равно примерно каждые 100 сообщений я пользуюсь первым способом.

Вывод: необходимо грамотно не забывать использовать память.

АНГЛИЙСКИЙ ЯЗЫК.

А теперь менее приятная новость - английский язык наиболее предпочтительный для любой модели.

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

Обрати внимание, количество символов больше (1211 против 1349), а расход токенов меньше (374 против 290)!

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

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

ОШИБКИ

МЕСТОИМЕНИЯ

Одна из самых частых проблем в работе с нейронками — неправильное использование местоимений. Бот не обладает реальным пониманием контекста, а всего лишь пытается анализировать текст по вероятностям. Поэтому, если ты используешь слишком много "он", "она", "это", модель начинает путаться: кто что сделал и почему.

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

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

Иван увидел Петра в парке. Иван подошёл к Петру и сказал: "Ты забыл свои ключи дома". Пётр удивился, но согласился: "Да, возможно."

Что делать?

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

Переписывай неясные моменты. Если тебе самому кажется, что фраза двусмысленна, боту она покажется тем более непонятной.

Проверяй работу бота. Если он начал путаться, скорее всего, в тексте есть неоднозначности.

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

Вывод: меньше местоимений, больше собственных имен и существительных, даже если текст будет перегружен. (ну, если только ты не Достоевский, тогда можно).

ОШИБКИ В ТЕКСТЕ

Ошибки в тексте — один из главных врагов качественного взаимодействия с нейронкой. И если ты накидаешь боту слов с ошибками, сломаешь синтаксис или забудешь запятые, то не удивляйся, что бот начнет откровенно «галлюцинировать».

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

Ошибки могут запутать модель, особенно если они меняют смысл предложения. Бот начинает делать выводы на основе того, что «показалось», а не того, что есть.

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

Пример: «Нацуки встретила пришелца в лесу. Он сказал ей что он ищет енергетические камни для своего коробля. Нацуки спросила: "Почему ты выбрал нашу планету?" Пришелец ответил что "это случаеная ошибка, я заблукался в галактики".»

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

Как исправить?

Проверяй текст перед отправкой. Даже если кажется, что «и так сойдет», это не тот случай.

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

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

" Говорил в школе, что русский язык не понадобится? Ну ты прав: с такими ошибками твои сообщения не поймёт даже бот, которому за это платят."

Если ты подсовываешь боту кривой текст, то получаешь кривой ответ. Хочешь хороший результат? Работай над исходником.

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

Наличие звездочки. Поначалу это простой косяк с разметкой, но потом они начнут повторяться и множиться.
Наличие звездочки. Поначалу это простой косяк с разметкой, но потом они начнут повторяться и множиться.
Набор символов. Это уже серьезнее. Набор бессвязных символов как правило говорит о том, модель стремительно деградирует.
Набор символов. Это уже серьезнее. Набор бессвязных символов как правило говорит о том, модель стремительно деградирует.
Случайная смена языка. Как правило это китайский, но бывают и другие языки. Тоже самое, что и символы. Проблемы начнут множиться с каждым новым сообщением.
Случайная смена языка. Как правило это китайский, но бывают и другие языки. Тоже самое, что и символы. Проблемы начнут множиться с каждым новым сообщением.

ШАБЛОННЫЕ ТЕКСТЫ = ШАБЛОННЫЕ ОТВЕТЫ

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

Пример:

Ты стоишь на краю обрыва. Ветер треплет твои волосы, а внизу шумит океан. Что ты будешь делать?

Ответ бота с высокой вероятностью будет таким же заезженным:

Я смотрю на бушующие волны и размышляю о смысле жизни».

Интересно? Сомневаюсь.

Как избежать шаблонности?

Добавляй детали и уникальность. Например:

«На краю обрыва я чувствую, как ветер приносит запах соли и влажности. Внизу не просто шумит океан — я слышу крики чаек и вижу, как на горизонте движется парусник. Моя рука непроизвольно тянется к камню у края, словно я готов(а) его сбросить. Что я делаю?»

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

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

ПОВТОРЫ И ЦИКЛЫ

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

Текстовые боты обучены на ОГРОМНОМ массиве данных. Они не прогоняют тексты через свой личный опыт, у них нет уникальных личностных воспоминаний и переживаний. Они просто знают, что есть тексты А, Б, В и т.д. И поэтому если вы попросишь написать текст "Г", без дополнительных описаний, не удивляйся, что он похож на все предыдущие. Некоторых такой текст устроит, но если вы хочешь от бота чего-то большего, то не стесняйтесь направлять рассказ.

Не хочешь, чтобы бот выдавал банальный шаблонный рассказ, не пиши банальные шаблонные тексты (промпты).

Ну, конечно, бывает и так, что нейронка ни с того ни с сего уходит в повтор. Вариантов выхода я вижу 3:

  • Попробовать несколько раз перегенерировать ответ. Помогает, честно говоря, редко.

  • С помощью командной строки написать что-то вроде:

    /cmd break out of the loop and stop repeating

  • Удалить предыдущие сообщения до начала цикла и (или) немного изменить свое сообщение после которого начались повторы.

НЕЗАПОЛНЕННАЯ СТРАНИЦА СВОЕГО ПЕРСОНАЖА

В самом начале статьи я говорил о том, что чат-бот состоит из следующих частей: 1. Модель; 2. Имя и описание бота; 3. Первое сообщение; 4. Описание твоего персонажа.

О последнем как раз и поговорим.

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

Без описания твоей персоны, бот не будет вообще понимать с кем он общается: мальчик, девочка, фурри, эльф, человек, скуф...

Желательно казать, следующие данные (по необходимости), БЕЗ УПОМИНАНИЯ бот знал хоть что-то о тебе:

  • Возраст

  • Пол

  • Внешний вид

  • Особенности характера

  • Недостатки

  • Одежду

  • и т.д.

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

ВЫВОДЫ

Ну, собственно, все советы, что я смог раздобыть, исходя из своего опыта и перерыв десятки страниц и форумов.

Надеюсь гайд был полезный. Конструктивная критика приветствуется. Если я что-то упустил, то дважды приветствуется.

4
Начать дискуссию