Всем привет! После того, как вы запустили LLM-интерфейс oobabooga и интерфейс SilyTavern, что описано в первой части, необходимо его настроить, чтобы получить максимально приятный опыт ролеплея.
Ваш персонаж
В первой части после запуска SillyTavern вы дали имя своему персу, но ему еще можно добавить и черты характера. Открывайте вкладку со смайликом:
Слева вы можете описать себя, а справа можете добавить еще личностей.
Вы — {{user}}, и дальше коротко описывайте себя любимого. А вот эти непонятные буквы ENTP и далее — это тип личности. Модели почему-то отлично понимают их, и по словам играющих — очень понимают. Настолько, что ИИ может вам отказать в рамках отыгрыша (хотя обычно она никогда не отказывает) Его можно добавлять как к своему персонажу, так и к тому, с кем вы будете играть, об этом чуть позже.
Вы можете либо пройти MBTI тест, либо вот табличка:
Настройка ответа ИИ
Эти настройки, находящиеся слева, контролируют ответ ИИ, и их много.
Маленькое отступление, чтобы лучше понять инфу ниже: Если залезть в структуру ИИ-модели, то можно увидеть огромную паутину из нейронов и весов к ним. Пример: Если нейросеть обычная, то после слова «Меня« вероятнее всего ИИ выберет слово «зовут», а если модель, например, пошлая, то после слова «Меня» скорее всего она выберет «заводит», так как вес у него больше, чем у «зовут». Вот из этих взаимосвязей слов и весов и состоит ИИ-модель.
Сверху есть предустановки, это сильно упрощает жизнь. Мне рекомендовали Pygmalion и Deterministic, в комментах тоже есть пара рекомендаций, и есть Mirostat, о котором позже.
Основные, которые вам стоит знать, но не стоит трогать просто так:
- Длина ответа — сколько токенов будет использовано для сообщения. Токены — это минимальная «единица» в структуре модели — слово, часть слова, даже точка. ИИ не обязательно будет использовать все токены, которые ему отведены, но больше заданного значения — нет
- Размер контекста — количество «памяти» ИИ. При каждой генерации в обработчик направляется n количество токенов, содержащие в себе вашу личность, лорбук персонажа, самого персонажа и прошлые сообщения чата, и чем контекста больше, тем лучше. Но не все ИИ поддерживают много, стандарт — 2048. 4096 лучше, но генерация будет заметно дольше
- Температура — Параметр случайности. Чем выше значение, тем более случайными (крейзи) будут ответы ИИ. Приемлемые значения — 0.6-0.8
- Rep. Pen — коэффициент штрафа за повторение. Чем больше значение, тем более строгий отбор следующего токена при формировании ответа
- Диапазон Rep.Pen — Какой диапазон токенов (в памяти, начиная с конца) будет передаваться в Rep.Pen для анализа повторов
- No Repeat Ngram Size — Указывает длину набора токенов, которые нельзя повторять вообще. Чем больше значение, тем большую фразу из токенов ИИ не будет повторять. wiki рекомендует либо не трогать, либо устанавливать сразу высокие значения
- Минимальная длина — минимальная длина сообщения. Помните, что длина ответа не гарантирует использование всех предоставленных токенов? wiki рекомендует вместо этого значения использовать «Запретить EOS-токен» (галочка ниже в настройках)
- Top P — диапазон весов. Чем выше значение, тем больший диапазон связанных слов к предыдущему будет выбираться
- Top-k — сколько слов выбирать для Top P. Это значение определяет, сколько весов взять для выборки. Например, выставив значение 10, при генерации ответа, ИИ будет даваться 10 слов, из которых Top P будет выбирать
- Отсечение эпсилона — выставляет нижний порог, при котором слова с меньшей вероятность выбора будут исключены. wiki рекомендует значение 3
- Отсечка Eta — Я не очень понял, что эта штука делает, но wiki рекомендует значение 3
Приведу список количества токенов, которые модели смогут адекватно обработать:
- Модели до 6B — 1024 токена
- Модели 6B-13B — 2048 токенов
- Модели 13B-20B — 4096 токенов
- LLaMA 2 — 4096 токенов
- OpenAI ChatGPT 3.5 Turbo — 4096 токенов
- OpenAI GPT-4 — 8192 токена
- NovelAI — 8192 токена
Mirostat
It’s revolution, Johnny! Это новый алгоритм обработки генерации ответов «нового поколения», и он может действительно улучшить качество ответов ИИ, но немного замедлит генерацию. Если хотите разобраться, как эта технология работает, тут статья от разработчиков Mirostat. Его настройка:
- Mirostat Mode — значение 0 отключает его, 1 — Mirostat для .cpp, то есть для моделей GGML и GGUF, 2 — Mirostat 2.0 для всего остального. Сильных отличий между ними, если что — нет
- Mirostat Tau — «энтропия», контролирует значение Top K. Mirostat делает это динамически
- Mirostat Eta — Контролирует возвращение Top K к первоначальному значению, то есть чем больше значение, тем он консервативнее
- Важно! Нужно выставить все значения до Mirostat по дефолту, для этого есть предустановка Mirostat.
Параметры персонажа
Когда мы наконец настроили все, можно и персонажа доделать
В принципе с настройками персонажа все понятно, они очевидны. В Promt Overrides можно написать переопределения персонажа — что ему можно и нужно, а что нельзя.
Но устоявшихся стандартов пока нет, тема слишком новая, так что персонажей каждый пишет по-своему. По крайней мере я не нашел какого-то единого шаблона, у всех все по разному. Надеюсь, в каком-нибудь будущем я напишу и о создании персонажа.
В Личную сводку можно написать или дописать его характер по вашему желанию. Снова вспоминаем про тест личности, 4 буковки и циферки, даже их будет достаточно, чтобы придать персу определенные черты характера.
Если персонаж известный, то его тип личности можно посмотреть на этом сайте. Также оставлю ссылку на редактор персонажей, если захотите углубиться в эту тему
Персонаж также состоит из токенов. Их количество указано правее его имени. Permanent токены — это количество, которое передается каждую генерацию. Чем больше токенов, тем лучше, конечно, но нужно знать меру. В идеале, чтобы Длина Контекста была вдвое больше, чем токенов у персонажа, иначе для лорбука и сообщений не останется места, и перс будет топтаться на одном месте в сюжете.
Групповые чаты
Прикольная фишка, но адекватно работает только на моделях от 13B.
Необходимо выбрать персонажа, и нажать на кнопку в его описании, которая подсвечена на картинке. Выбираете название чата, и персонажей, которые будут в него входить:
Как только выберете персонажей, нажимайте на галочку и развлекайтесь.
Формат сообщений
Некоторые специальные символы для общения:
- Прямая речь
- *Действие*
- **Жирный текст**
- «Цитата»
- [Инструкция для ИИ]
Но не все модели правильно понимают эти спец.знаки. Pygmalion-like понимают хорошо, а с другими нужно проверять и экспериментировать.
Расширенное форматирование
Эти настройки отвечает за формат передачи контекста ИИ модели, они скрываются во вкладке «А»:
Шаблон контекста позволяет выбрать формат передачи всего контекста ИИ при каждой генерации. Хватает и Default настроек, но можете поэкспериментировать, я не нашел сильных отличий генерации между режимами. Единственный сильно отличающийся режим — Roleplay, позволяет ИИ в своем ответе писать речь от вашего лица.
ЛОР
Для расширения контекста и раскрытия персонажа, существуют Лорбуки. Они описывают окружающий мир. Лорбук подключаемый и также состоит из токенов.
Как только ИИ видит определенные ключевые слова в вашем сообщении, он сопоставляет их с заранее прописанными к ключевым словам инструкциями в Лорбуке и может добавить в свой ответ контекст из него.
- Глубина сканирования — сколько ваших последних сообщений ИИ будет просматривать на ключевые слова
- Процент контекста — вероятность того, что ключевое слово стриггерит обращение к Лорбуку
- Бюджетный лимит — Сколько токенов в генерации отведено лору. По умолчанию 0 — лимит отключен.
SillyTavern Extras
Extras позволяют вам разнообразить и расширить SillyTavern, например заставить персонажей говорить с помощью TTS или генерировать изображения с помощью Stable Diffusion
Для установки вам требуется дополнительно установить Miniconda
Как только установите:
- Запускайте Anaconda Prompt (miniconda3) и выполняйте команды
- conda create -n extras
- conda activate extras
- conda install python=3.11 git
- git clone https://github.com/SillyTavern/SillyTavern-extras
- cd SillyTavern-extras
- pip install -r requirements-complete.txt
Запуск из папки, куда скачали экстрасы — python server. py —enable-modules=caption, classify, sd, chromadb
Тут описание всех модулей.
Stable Diffusion (sd) работает… странно. Вы вписываете промты сами в SD Promt Templates и SD генерирует и отправляет картинку в чат. И это так в любом режиме.
TTS уже более интересный, но он читает оригинальный английский текст, а не русский. Как это исправить, я не нашел.
Character Expressions (classify) показывает эмоции персонажа, если вы загрузите его картинки. Можете протестировать со стандартным персонажем Seraphina.
Smart Context (chromadb) — Спасение для тех, кому не хватает длины контекста. Эта настройка записывает всю память в БД, и оттуда уже вытягивает нужные данные.
Перевод я освещал в первой части.
Заключение
Искусственному интеллекту далеко до идеала, и он не может заменить реального общения, но он активно стремится к нему. Когда нет времени (или друзей) собирать кучу народа для DnD, почему бы и нет. Думаю, это все, что вы должны знать для комфортного отыгрыша. Для «глубокого погружения» есть документация и десятки веток на Reddit.
Спасибо всем, кто комментирует и помогает в развитии этой темы. Любая полезная информация навеки останется в этой статье.
Делитесь своим опытом в комментариях, и приятной игры!