Создание персонажей

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

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

Интерфейс редактора персонажа

Интерфейс редактора персонажа

Импорт и экспорт: Если у вас есть готовая карточка персонажа с нашего Discord-сервера или с какого-нибудь другого места, то вы можете импортировать её в программу. Вся информация о персонаже автоматически вставится в соответствующие поля и вам необходимо будет просто нажать на кнопку создания персонажа, после чего он появится в списке на главном меню.

Методы Ali:Chat и PLists

Думаю не стоит объяснять, что такое аватарка персонажа и его имя, тут вы сами разберетесь. Давайте лучше перейдём к другим полям, которые будут отвечать за внешность, поведение персонажа и его манеру общения, но перед этим я расскажу вам об эффективной методике создания карточек персонажей под названием Ali:Chat, которой мы и будем пользоваться. Ali:Chat - это метод форматирования описания персонажа, созданный Ali:Cat. Основная идея Ali:Chat заключается в укреплении черт персонажа через примеры диалогов. Именно поэтому обычно все говорят про их важность, ведь это сильно помогает модели во время генерации текста. Языковые модели являются по своей сути технологией по поиску закономерностей, чем и пользуется Ali:Chat, создавая чёткие паттерны, на которые модель может опираться при генерации ответов.

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

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

Но использование Ali:Chat имеет недостаток, а именно отсутствие четкого структурирования информации. В качестве решения придумали использовать так называемые PLists или Python Lists - это метод перечисления черт персонажа, который является наиболее эффективным в задачах экономии токенов. PLists позволяет структурировать информацию о персонаже в компактной форме. Вы можете создавать различные категории, такие как внешность, личность, поведение и так далее. Важно также сохранять краткость черт, чтобы не тратить и так вечно недостающие токены в контекстном окне языковой модели. Не ставьте артикли "a" или "the" перед словами - достаточно только ключевых слов.

Пример PLists

Пример использования PLists в описании персонажа

Получается, что Ali:Chat и PLists идеально друг друга дополняют. Ali:Chat укрепляет наиболее важные черты персонажа через примеры диалогов, а PLists их удобно сортирует, так что ни человек, ни модель не запутаются в описании. Это особенно важно, так как по мере продолжения диалога с персонажем, его описание перемещается выше в истории чата, которая, в свою очередь, подаётся модели при генерации каждого нового сообщения, поэтому модель может просто забыть некоторые факты о персонаже. Контекстное окно работает так, что нижние части контекста сильнее всего влияют на генерацию текста. В начале диалога карточка персонажа находится внизу контекста и сильно влияет на ответы модели. Чтобы решить эту проблему рекомендуется поместить PLists в поле авторских заметок с глубиной сканирования в 4 сообщения. Это позволяет основной информации о персонаже находиться ближе к той части контекста, которая имеет сильное влияние на ответы модели. Но это уже опционально.

Описание персонажа

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

[Name: Имя персонажа,
 Age: Возраст персонажа,
 Gender: Пол персонажа,
 Appearance: Перечисление черт внешности,
 Backstory: Предыстория персонажа, кто он, чем занимается и так далее,
 И другие необходимые вам категории]
Пример описания персонажа

Пример заполнения поля описания персонажа

Личность персонажа

Тут вы должны будете в таком же виде описать черты личности вашего персонажа. Можете придерживаться такой структуры:

[Personality: Личностные качества персонажа. Например, добрая, грустная, холодная,
 Behaviour: Как обычно себя ведёт при общении,
 Likes: Что персонажу нравится (события, действия, черты характера и т.д.),
 Dislikes: Что персонажу не нравится,
 И другие необходимые вам категории]
Пример личности персонажа

Пример заполнения поля личности персонажа

Сценарий

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

[Scenario: {{user}} meets {{char}} in a dangerous forest; Tags: fantasy, adventure, magical]
Пример сценария чата

Пример заполнения поля сценария

Первое сообщение

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

Пример первого сообщения

Пример заполнения поля первого сообщения

Примерные сообщения

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

⩽START⩾
{{user}}: Вопрос или реплика пользователя
{{char}}: Ответ персонажа с действиями и речью
⩽START⩾
{{user}}: Вопрос или реплика пользователя
{{char}}: Ответ персонажа с действиями и речью
Пример примерных сообщений

Пример заполнения поля примерных сообщений

Альтернативные приветствия

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

Пример альтернативных приветствий

Пример заполнения поля альтернативных приветствий

Остальное

Заметки создателя - это описание карточки от создателя, оно никак не влияет на поведение персонажа. Тут вы можете написать, что добавили в карточку, чем она примечательна, сколько приветствий имеет и так далее. Она отобразится в чате с персонажем под его именем. Версию карточки можете указать, если вы решили обновить её. Также при наличии персоны, системного промпта или лорбука, можете их назначить для карточки. Подробнее о них вы сможете узнать в "Вводном курсе в AI RP".

Советы по созданию карточки и общению с персонажем

  1. Качество важнее количества: старайтесь писать карточку персонажа грамотно и в соответствии с описанными ранее методами. Лучше один хорошо написанный пример диалога и первое сообщение, чем несколько, но плохих. Если вы хотите дать больше информации о персонаже, лучше сделайте это через лорбуки, это будет намного эффективнее.
  2. Будьте последовательны в стиле написания: если вы пишите в настоящем времени, продолжайте в том же стиле.
  3. Если используете метод интервью при написании примерных диалогов, то приучайте модель к тому, что короткое сообщение пользователя = длинный и детализированный ответ персонажа. Однако если у вас стоит цель создать разговорного бота, то можете пренебречь данным советом.
  4. Избегайте гибридного стиля написания: языковые модели обучаются на определенных паттернах и ожидают последовательного формата. Можете использовать один из двух форматов - новелльный ("Привет," сказала она, поправляя волосы) или markdown-стиль (*Она поправила волосы и улыбнулась* "Привет!"). Языковые модели работают лучше, когда формат один и не смешивается с другими, так ответы от модели будут более качественными. Также обратите внимание на используемые в тексте кавычки. Используйте один тип кавычек - прямые, угловые или другие.
  5. Не бойтесь экспериментировать со стилем написания карточек персонажей. Творите и тестируйте свои карточки, добиваясь идеального баланса между количеством токенов и качеством написания.

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