Гайд по использованию чат-ботов в SpicyChat (а также в tavern, cobolt, juniper, character и т.д.) для пользователей.
В этой статье рассмотрим, как наиболее эффективно и комфортно пользоваться ролевыми чат-ботами. Это не инструкция по созданию своего чат-бота (интернет ими завален), а руководство для пользователей. Статья ориентирована в первую очередь на SpicyChat, но подойдет и для других чат-ботов, таких как tavern, cobolt, juniper, character.
Бывало ли такое, что ты пытаешься ролить, а бот не понимает тебя, творит какую-то дичь или общается не так, как ты ожидал(а)? Конечно, может быть и так, что ты выбрал не того бота или воспользовался не тем сервисом. Но чаще ошибка, не в программе, а в тебе, мой дорогой читатель.
Надеюсь, что после прочтения этой статьи ты поймешь, ЧТО и КАК писать ролевым чат-ботам и добиваться нужного тебе результата. Итак, поехали!
СОДЕРЖАНИЕ:
БАЗА
КАК НЕЙРОНКИ СОБИРАЮТ ТЕКСТ И ОБМАНЫВАЮТ НАС.
А начнем мы с БАЗЫ (знающие могут смело пропускать).
Вот ты набрал вводную реплику «Привет» и ждешь, пока тебе ответит условная Гамора. А что происходит у нейронки в этот момент под капотом?
Упрощенно схема выглядит так:
1. нейронка принимает текст на вход;
2 «думает», что ответить;
3. выдает на ответ ПЕРВЫЙ символ своего ответа;
При чем полностью ответ нейронка заранее не знает. Она лишь знает в какой последовательности набрать НАИБОЛЕЕ ВЕРОТНЫЕ символы которые тебя устроят. И конкретно сейчас она выдает лишь один символ, который, как ей кажется тебе подойдет. Предположим, что это буква «П»
4. принимает на вход весть твой текст + свой ответ (пока еще только «П»);
5. «думает», что ответить;
6. выдает на ответ СЛЕДУЮЩИЙ символ своего ответа. (предположим, что это «р»);
7. Повторяет шаги 4-6, пока не увидит, что можно не продолжать и такой ответ скорее всего тебя устроит.
В нашем примере всего 7 циклов и получен ответ «Привет.»
*(П.С.: технически верным будет сказать, что нейронка в ответ выдает не символ, а токен (символ, буква, числи, часть слова или слово целиком). Эти же токены и принимает на вход, но я в статье этот момент отпустил для упрощения. Так же нейронки мы пользователи платной подписки могут использовать параметр «температуры», чтобы контролировать степень случайности в выборе следующего токена.)
Еще раз: нейронка заранее не знает, что она ответит. Она всего лишь знает, что такая последовательность символов скорее всего понравится тебе. И не важно, что это будет: ответ математическую задачу 5 класса, серьезная научная статья или ролевка с той же самой Гаморой из Мстителей.
Для упрощения скажу, что нейронки практически всегда «бегут» только вперёд, генерируя по одному символу за раз (тут умные дядьки говорят, что уже давно существует двунаправленный контекст при обучении, но я не уверен, что это есть в моделях, представленных на SpicyChat). В этом смысле процесс их «мышления» больше похож на эту гифку:
А еще бывают забавные казусы с таким мышлением, как на картинке ниже (объяснение честно, стырено отсюда):
Какие выводы можно из всего этого сделать?
1. В каком-то смысле нейронки обманывают нас. Нам кажется, что они выдают осмысленный ответ, а на самом деле ты занимаешься фигней делают только видимость того, что понимают твои чувства, эмоции и переживания (для полноценного экспириенса нам, приматам, нужны другие приматам). Бот создает иллюзию понимания, просто подстраиваясь под текст.
Бот скорее ведомый, чем ведущий персонаж в ролевке. Поэтому если ты просишь бота все решить за себя, то не удивляйся, что бот, либо повторяет ранние действия, либо предлагает банальность
ТОКЕНЫ
Чуть выше я упоминал про токены. Настало время разобрать их немого подробнее.
Вот как нейронка из всего объема твоего словоблудия понимает написанное? Да не просто понимает, у может выделить главное! Да примерно также как и мы, люди, но немного по своему: разбивает предложения на слова, слова на составляющие, и эти составляющие и есть токены.
Слово "токен" звучит, как что-то из хакерских фильмов, но на самом деле это просто маленькие блоки текста, из которых нейросеть строит свои ответы.
Пример:
Допустим ты красивая девушка, тебе с неизвестного аккаунта прислали сообщение: "Привет, как дела?". Что ты видишь?
Если тебе 5 лет, и ты только недавно научилась читать по слогам, то ты «разбиваешь» сообщение на токены — те самые блоки, из которых будет строить ответ.
["При", "вет", ",","_" "как", "_", "де", "ла", "?"].
Если тебе 10 лет. И ты уже умеешь читать, то разбиваешь сообщения на слова.
["Привет", ",", "как", "дела", "?"] (нейронки где-то тут)
Ну а если тебе 20 лет, то у тебя накопился опыт. Ты можешь придавать смысл не только отдельным словам, но и фразам.
["Привет," "как дела?"] ты уже воспринимаешь, не как вопрос требующий ответа. Ты понимаешь, какие фотки за этим последуют вне зависимости от твоего ответа и мигом кидаешь юзера в черный список (некрасивые девушки тоже от этого не застрахованы, и, кто знает, может это была твоя любовь!). В последнем случае ты не думала над значением слов. Ты столько раз переживала подобный опыт, что у тебя в голове уже был полноценный паттерн действий: возбудитель (сообщение) – действие (бан). (на такой уровень нейронки только начали заходить). Но вернемся к токенам.
Модель думает токенами. Она видит не "Привет", а, например, [Пр, ивет].
Всё разбивается на токены: твой текст, ответ модели, описание персонажа — всё это подгоняется под её систему "блоков".
Почему важно знать про токены?
Помнишь, как я рассказывал(а) про ограничение памяти? Лимит измеряется в токенах, а не в символах или словах. Длинные тексты быстрее "заполняют" доступное место.
Для понимания, сколько токенов занимает текст, существуют токенизаторы. У создателей Chat-GPT есть свой собственный токенизатор (работает только с ВПН). Он показывает на какие токены разбивается текст.
На примере ниже текст, длиной в 45 символов умещается всего в 15 токенов.
В дальнейшем это пригодится.
СТРУКТУРА ЧАТ-БОТА
Из каких важных для нас частей состоит нужный бот?
1. Модель (тут правило простое, чем больше, тем лучше)
2. Имя и описание бота (не всегда открыто для других пользователей, но доступно для моделей)
3. Первое сообщение;
4. Описание твоего персонажа.
Все это важно, если ты хочешь качественно ролить.
ЧТО ТАКОЕ КОНТЕКСТ (КОНТЕКСТНОЕ ОКНО)
Грубо говоря это то, сколько сообщений будет помнить бот в диалоге с тобой.
Сам по себе контекст заполняется: именем и описанием персонажа (в конкретном примере это 777 токенов), описанием твоей персоны, непосредственно сообщениями.
Первые два параметра содержатся в памяти ВСЕГДА. А вот с сообщениями веселее.
Представь, что ты часами неистово наяривал тонны текста о том, как замечательно гулять с твоим куном или тянкой под звездами. Нейронка такими же простынями текста тебе отвечала. Но вот ты сменил тему, опять куча текста про прогулки по солнечному парку и тут ты решаешь вспомнить о прогулках под звездами. Спрашиваешь о персонаже как ему(ей) прошлая ночь, а он(она) на чистом удивлении заявляет «Какая ночь? Какие звезды?».
Браво, ты только, что столкнулся с проблемой ограниченной памяти. Если начнешь смотреть свою переписку с ботом, то рано или поздно найдешь такое маленькое сообщение
Как понятно по содержанию модель вообще не будет помнить, что происходило выше этого предупреждения. О возможных путях решения этой проблемы поговорим позже.
КАК СЧИТАЮТСЯ ТОКЕНЫ
Разные модели имеют разную память от 4 до 16 тысяч токенов. Разберемся что это за цифры такие и как они тратятся (спойлер – тратятся быстрее, чем у бедного студента).
Для начала обозначу токены, которые будут заняты постоянно:
1. Описание бота
2. Персона чат бота
3. Сценарий (опционально)
4. Примеры диалогов (опционально)
Токены с которыми ты можешь оперировать:
1. Первое сообщение бота (то, что на сайте называется Greeteng);
2. Твои сообщения;
3. Ответы бота.
4. Семантическая память (занимает очень мало места).
А теперь немного посчитаем.
Предположим, что я юзаю самую простую модельна 4к токенов. Бот из примера выше имеет постоянно занятую память в 392 токена. С описанием персоны для простоты подсчета округлю до 400 токенов.
Получается, я могу оперировать 4096-400=3696 токенами.
Это то количество токенов, которыми ты и я можем пользоваться. Далее следует логичный вопрос: «3696 токенов, и че?».
И то, мой дорогой читатель, что сейчас мы посчитаем, сколько сообщений может храниться в памяти твоего диалога с ботом.
Пример:
С помощью токенизатора выше посчитаю количество затраченных токенов:
Первое сообщение бота - 139 токенов;
Мое сообщение боту:- 14 токенов;
Ответ бота – 95 токенов.
Все боты тяготеют к графомании, так, что вскоре размеры каждого сообщения бота составят минимум 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: "И посмотрите, к чему это привело. Билет в один конец на вымирание".
Далее чуть измененный диалог:
VRC: "Ах да, процесс восполнения энергии человека. Они так это называли... еда, питание."
Малыш-бот: "Эта штука? Они кладут это себе в рот? Фу. Это... слизняк, гадость!"
K-VRC: "Это гамбургер. Классический продукт их рациона, пищевой культуры. Шаг первый: пережевывать его зубами. Шаг второй: проглатывать, и шаг третий..."
Малыш-Бот: "Что происходит на третьем этапе? Он взрывается, разрывается?"
K-VRC: "Не совсем. Он попадает в желудок, где расщепляется, а питательные вещества усваиваются."
XBOT 4000: "А это? Что это за красное вещество? Это кровь, жидкость?"
K-VRC: "Нет. Это кетчуп. Они наносили его на все подряд. По сути, это была социально приемлемая пищевая смазка."
XBOT 4000: "Ах! Еда течет! Она истекает кровью! Что мне делать?"
K-VRC: "Быстрее! Окажите первую помощь! О, подождите, вы не можете. Он же не живой, помните?"
Малыш-бот: "Подождите... Значит, после всего, что они съели, им пришлось, типа... избавиться от остатков, утилизировать отходы? Куда это делось?"
K-VRC: "О, это самое интересное. У них была целая система утилизации отходов. Для этого нужно было сидеть на штуке, называемой унитазом—"
Малыш-бот: "Прекрати. Просто прекрати. Я больше не хочу слышать об этих странных мешках с мясом, созданиях."
XBOT 4000: "Они казались такими хрупкими, уязвимыми. Столько усилий прилагалось, чтобы просто не умирать каждый день."
K-VRC: "И посмотрите, к чему это привело. Билет в один конец на вымирание, исчезновение."
В первом примере 52 слова, на которые нейронка обратит внимания сильно больше. Во втором 81 слов.
Как бы странно не звучало, но на вторую реплику ответят не только эмоциональнее, но и качественнее. Просто по тому, что моментов, на которые обратит внимание нейронка намного больше.
Еще можно ПООРАТЬ НА НЕЙРОНКУ! Капс тоже часто воспринимается, как важная информация. Но я чаще использую капс для усиления отрицания.
Например: Диана НЕ пошла ябедничать королю. Она НЕ ХОТЕЛА подставлять меня.
Часто пригождается, когда персонаж все же выполняет действие, хотя ранее говорилось, что делать этого не нужно.
ВАЖНО: чрезмерное выделение КАПСОМ или повторениями может привести к "перегрузке" модели и снижению качества ответа. Тут идеальный баланс тебе придется искать самостоятельно, но мне крайне редко удавалось "перегружать" бота.
Итак: если ты считаешь некоторые реплики или слова важными, эмоционально выдели их. Желательно несколько раз. Если же реплики служат пустыми наполнителями, но лучше эмоциональность приуменьшить. Также можно УСИЛИТЬ ВАЖНЫЕ МОМЕНТЫ КАПСОМ.
СИСТЕМНАЯ КОМАНДА
Бывало так, что ты общаешься с ботом и начинается какой-то скучный момент, вроде похода в домой после разговора в магазине? Или ты спровоцировал событие в школе и вроде как весь движ должен произойти только на следующий день, но тебе еще закончить уроки в школе, прийти домой, сделать домашку… (школьникам - соболезную. Остальным - напоминаю, мы все еще в ролевой игре). А хочется, чтобы было побыстрее!
Благо разрабы предусмотрели этот момент и придумали команду /cmd (подробнее)
Её особенность в том, что все, что тут будет написано не будет учитываться ботом, но будет влиять на него. Так можно пропускать время.
Например:
Еще с помощью этой же команды можно направлять персонажа, если не хочешь прямо говорить о том, что нужно сделать персонажу.
Также, если лень постоянно писать через командную строку, то можно желаемый путь движения, указать в тексте.
cmd полезная команда, если уметь ее правильно применять.
Правда, этаже команда выбывает из колеи и в роль приходится возвращаться.
ПУТЬ БОТ СПРОСИТ ТЕБЯ О САМОМ НЕОБХОДИМОМ
Бывает и так, что ты пытаешься разыграть определенную роль, но нейронке будто не хватает знаний о тебе. И ты не знаешь как их адекватно подать или, что чаще, даже не знаешь, какая информация для отыгрыша действительно важна.
В таком случае, не стесняйся попросить своего бота узнать о тебе. Еще лучше через /cmd в конце реплики написать что-то вроде:
Ну, а если ты решил ролить по взрослому с грязными фетишами, то так и скажи нейронке:
Итак, еще один секрет о котором не все знают: пусть нейронка задаст тебе нужные вопросы сама.
ОГРАНИЧИТЬ НЕЙРОНКУ. ЗАПРЕТЫ И РЭДФЛАГИ
Нейронка, она как студент на курсовой: будет писать все, что скажут. Но если не будет ограничений, то, например в теме «Оптимизации прохождения сладкого сиропа по трубам», этот же студент смело впишет бред о проблеме мирового ожирения от переедания сладкого, хотя речь шла вообще не об этом.
Просто по тому, что вторая проблема освещается в медиа намного чаще, чем какие-то трубы и вязкие жидкости. А студент существо ленивое, смотрит, что первое попадается в поиске и пихает это в курсовую. Хороший препод укажет на недостатки и скажет студенту переписывать. «Очень хороший» препод просто порвёт курсовую и молча отдаст студенту, чтобы студент подумал, что мало написал о проблеме мирового ожирения.
С нейронками примерно также. Только нейронка не ищет (пока еще) информацию в интернете, а «берет её из головы». Вот только в процессе «обучения» нейронки одни темы упоминались намного чаще, чем другие. Тут виновата и повесточка, и малоизученность темы, и политика, и просто малый интерес к теме (вследствие, мало текстов на нужную тему), но итог, что с интернетом, что без него один: если бот расходится пером по странице и выдает воду, обозначь границы.
Этот совет актуален, если ты видишь, что бот отыгрывает не ту роль, которую ты от него ожидаешь. Если и без ограничений бот хорошо себя показывает, то нет смысла плодить сущности и увеличивать энтропию.
Если же тебе нужен более приближенный пример, то боту можно смело писать: "в рассказе запрещено упоминать темы: идентичности, гендера, принятия себя и ананасовой пиццы".
Оставь эти темы разноцветным неженкам с 404 гендерами, я просто пришел подр… Так о чем это я...
Для наглядности приведу 2 примера:
Да, пример не лучший, но даже нейронка понимает, что здесь что-то не то.
Добавьте персонажу слабые черты. Эффект примерно такой же, как при запрещённых темах. Персонаж будет более последовательным и иногда даже интересным.
ДОБАВИТЬ ДЕТАЛИ, СИНОНИМЫ
Не стесняться добавлять детали. Это тот самый случай, когда чем больше, тем лучше. Ранее я писал, что чем больше слов в описании события, тем вероятнее, что нейронка выделит оттуда важные слова. Не стеснейтесь использоваеть синонимы и проводить сравление. Если событие в твоей истории важное, то не стесняйся его ярко и насыщенно описать.
МЕНЬШЕ ЦИФР БОГУ ЦИФР
Я заметил у многих создателей ботов прям фетишь на определенный рост. В некоторых случаях это оправдано. Но чаще это цифры ради цифр. Рост в цифрах не так важен для бота, как описание роста относительно твоего персонажа. Как я понял, лучше всего до бота доходит не столько рост, сколько твое отношение к боту или бота к тебе. А рост является второстепенным подчеркивающим фактором.
Вот, например, пишет юзер боту: Я стоял перед девушкой с каштановыми волосами, зелеными глазами. Её рост 160 сантиметров. Вот, какой смысл скрывается за этими цифрами?! Для наглядности приведу примеры:
Как видно из, рост один и тот же, а персонажи целиком разные. Рост персонажа важен, но он второстепенен и не всегда обязателен. Важнее твое отношение к боту и если ты с помощью роста хочешь это подчеркнуть, то пожалуйста, иначе не плодить сущности и не увеличивай энтропию.
Тоже самое касается веса. И даже если у тебя фетиш на анорексичек или боссов KFC, надо это описывать, а не называть сухие цифры.
РАЗМЕТКА ТЕКСТА ВАЖНА
Почему разметка важна?
Сразу приведу 2 примера:
Как видно, из примера тебе понятно, где описание, а где диалог. Но понятно, не только тебе, но и боту, а это архиважно для качественного отыгрыша.
Если ты не понимаешь, как использовать разметку, но бот её использует, то нажми на «Edit message» и посмотри на текст изнутри. Не забудь изменения потом сохранить.
Но шпаргалку я все равно оставлю
Основные способы разметки в SpicyChat:
Диалоги в кавычках.
Все строки диалогов записываются в кавычках, чтобы нейронка понимала, что это речь персонажа. Например:
Описательная часть в курсиве
Вся описательная часть должна быть выделена курсивом (это делается через звездочки «*». Обязательно следи, чтобы между последним символом и звездочкой не было пробела). Это помогает модели отделить действия и описание от диалогов. Например:
Остальная разметка:
Другие виды разметки, такие как жирный текст или зачёркивание, используются реже, но могут пригодиться для акцентирования внимания.
Жирный текст (например, **текст** или __текст__).
Курсив (например, *текст* или _текст_).
- Зачёркнутый текст (например, ~~текст~~).
Комбинация всего вышеописанного.
Не перегружай текст разметкой! Нейронки любят структурированный текст, а не "новогоднюю гирлянду" из жирного, курсива и зачёркнутого в одном предложении.
Вывод: используй разметку. Хотя бы для красоты.
РАЗМЕР ИМЕЕТ ЗНАЧЕНИЕ
Знания нейронки напрямую зависят от количества её параметров. Чем их больше, тем умнее бот и тем лучше он отыгрывает роли.
По состоянию на январь 2025 года на сайте есть нейронки от 8B (8 000 000 000, миллиардов) параметров, до 141B параметров. Много это или мало?
Ну, это что-то между GPT-2 (1.5B) и GPT-3 (175B). (Для справки Chat-GPT, он же GPT-3.5 имеет примерно те же 175B параметров, но сильно оптимизированные и дообученные и по сравнению с современными нейронками считается простым).
Однако, модели обучались на разных данных и возможности у них разные. Порой одна более слабая модель, может подойти тебе лучше чем, 5 испробованных мощнейших. Я сам лучшие свои ролевки сделал на дефолтной нейронке.
Для чего ДЕЙСТВИТЕЛЬНО нужна сильная нейронка?
Я вижу три основных сценария, все остальное можно решить более слабыми моделями:
1. Если модели не хватает знаний. Если ты видишь, что нейронка путается в очевидных вещах, хотя вроде бы должна знать, то скорее всего ей не хватает нескольких извилин. Я спросил персонажей один и тот же вопрос на самой слабой и самой мощной модели. Результаты ниже:
2. Отыгрыш ботом нескольких персонажей. Если ты хочешь поиграть с сестрами-близняшками, или войти в команду Мстителей, и не испытывать кринжа от того, что все персонажи «ватные и одинаковые», то большие модели маст хэв (п.с. полностью состав всех когда-либо выступающих BTS ни одна нейронка в мире не потянет).
3. Тебе нужен действительно КАЧЕСТВЕННЫЙ отыгрыш в ролевках. Это трудно объяснить, но разница действительно ощутима. Лично мне для 95% ботов и сценариев хватает базовой модели на бесплатной версии. Но ведь остаются еще 5%...
Поскольку все большие модели на SpicyChat платные, то придется тебе трижды подумать, стоит ли оно того. Но я советую не мучаться и один раз выделить либо 1500р, либо 2500р и купить разовую подписку на месяц, поэкспериментировать с моделями и решить стоит ли оно того или нет. А если тебе все же кажется, что это дорого, то можно поступать, как я: добавлять модели в закладки, копить их, а потом раз в 6 месяцев брать максимальную подписку и неистово др… ролить до посинения. Потом опять копить силы следующие полгода.
Подводя итоги: большие нейронки нужны, но в ограниченных случаях. Для большинства задач хватает и базового бесплатного набора моделей.
Поролить с – Рам и Рем – 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 (для премиум подписчиков).
ВЫВОДЫ
Ну, собственно, все советы, что я смог раздобыть, исходя из своего опыта и перерыв десятки страниц и форумов.
Надеюсь гайд был полезный. Конструктивная критика приветствуется. Если я что-то упустил, то дважды приветствуется.