Руководство по общению с нейровайфу. Часть 2. Глупая Таверна.
Привет всем кто в теме и кто только присоединился!
Предыдущийпост https://joyreactor.cc/post/5733950
Рассказывал о том, как быстро и просто запустить локальную языковую модель на удалённом сервере google colab и начать общение нейротян.
Но теперь настало время взяться за дело серьёзно, встречайте:
Простое руководство по SillyTavern.
(автор не гарантирует, что написанное строчкой выше правда)
Предварительнаяустановка
1. Переходим поссылке https://nodejs.org/en/download искачиваем LTS версию. Нам подойдет и она.
2. Когда скачали,запускаем установку.
3. (опционально)Перейдите по ссылке https://git-scm.com/downloads и скачайте Git,для упрощения обновлений и прочего.
4. (опционально) Переходимпо ссылке https://www.python.org/downloads/ и качаем питонпоследней версии. Не то чтобы он был вообще нужен для установки таверны, но разуж мы начали идти по пути LLM, не стоит останавливаться надостигнутом!
5. Установка завершена.Переходим к самой таверне.
Установка SillyTavern.
С использованием Git:1. Выбираем папку, нажимаем ПКМ, git bash HERE.
2. Вводим в консоль git clone https://github.com/SillyTavern/SillyTavern
3. Для того что бы установить staging branch добавляем после ссылки -b staging
4. Всё устанавливается
Без использования Git:
1. Переходим поссылке https://github.com/SillyTavern/SillyTavern/tree/staging
2. Нажимаем на зеленую кнопку Code и download zip
3. Теперь, когда мы скачали наш ZIP архив (не важно, стейджинг ли этоверсия, или обычный релиз)Мы берем и открываем ZIP (архив) и достаем оттуда папку, в любое удобное намместо.
*Лично я предпочитаю именно этот метод, сохраняя вотдельной папке каждую новую версию таверны, начиная с момента, когдасуществовала только оригинальная TavernAI, ещё храню в каждойпапке полный набор актуальных на тот момент скриптов, промптов и персонажей.Зачем? Вдруг пригодится!
Запуск таверны
После этого мы запускаем start.bat
Когда мы запустили start.bat, мы видим NPM install. Нам нужно дождатьсяустановки, затем оно само запустится.
*Если вам пишет missing module название модуля, то нужно ввестикоманду npm install название модуля, и так пока вы не установитевсе нужные.
Когда установка закончится, автоматически откроется вкладка браузера с интерфейсом таверны.При первом запуске вы увидите сообщение
Которое предложит вам заранее ввести имя, по которому к вам будет обращаться модель. Можете оставить его как есть и представиться кем угодно походу беседы, либо ввести своё имя, но тогда к вам всегда будут обращаться по нему. (Старые модели вроде Pygmalionвместо User, определяют пользователя как You)
*Также вам предложит включит упрощённую версию интерфейса. НЕ ДЕЛАЙТЕ ЭТОГО!Раз уж вы решили идти дальше пути текстовых нейросетей то привыкайте страдать!
Подключение к нейросети.
Теперь настало время изучить иконки расположенный сверху
Но делать это мы будем не по порядку, начнём с главного, источника. Тавернаэто очень удобный, но всё-же фронтенд. Иконка API предлагает нам выбратьоткуда конкретно мы будем черпать нейросетевые ресурсы.
Рассмотрим основные пункты, представляющие практический интерес.
1. Text Completion.
Первый пункт «TextCompletion» Предлагает вам подключить к вашей таверне в качестве бекэнда text-generation-webui.
О том, как его запустить написано в предыдущем посте. Ссылка на колаб: https://colab.research.google.com/drive/11U-bC6AxdmMhd3PF9vWZpLdi6LdfnBQ8?usp=sharing
Но прежде чем использовать его как API,убедитесь что отключены google translate и sileroTTS, они будут мешать генерации.
Чтобы подключить запущенный webui к таверне Скопируйте ссылку после строки'OpenAI-compatible API URL:' и вставьте её в 'Server URL'
При запуске локально дефолтный адрес подключения http://127.0.0.1:5000/api
2. KoboldCPP.
Этот пункт предлагает нам подключить к таверне аналог text-generation-webui,под названием «Koboldcpp»
Главных отличий от предыдущего сабжа два:
- Кобольд предназначен для запуска моделей,оптимизированных для процессора. Сейчас это формат GGUF
- Сильно проще в локальном запуске на Windows. Всегоодин exeфайл,после запуска которого вам предложат выбрать файл модели кнопкой «Browse». Изнастроек для начала можно выставить контекст в размере 4096. Для запуска этогоуже достаточно.У кобольда есть даже свой интерфейс чата, но он сильноуступает как webui так и таверне.
В качестве API URL в таверне вводим http://127.0.0.1:5001/api
Скачать последнюю версию можно здесь: https://github.com/LostRuins/koboldcpp/releases/
Почитать о разных загрузчиках и прочих вы можете на основнойстранице гитхаб: https://github.com/LostRuins/koboldcpp
Если ваш комп не тянет, есть также колаб: https://colab.research.google.com/github/LostRuins/koboldcpp/blob/concedo/colab.ipynb
Куда же без него.
3. ChatCompletion
Здесь нам предлагается подключиться к APIсоответствующихсервисов, при условии, что у нас есть ключ.
Выбираем поставщика, вводим ключ, радуемся! В целом всёпросто (кроме получения самого ключа)
4. KobaldAIHorde.
Но не печальтесь, если у вас нет ключа к GPT4 Turbo, нам поможет сервис AIHorde https://horde.koboldai.net/
(это не троллинг если что, нет правда!)
Более того, это, пожалуй, самый интересный пункт, потому чтоон позволяет нам сразу, без танцев с бубном, подключиться к языковой модели.
Всё что нам нужно это поставить курсор в поле Модели ивыбрать любую из них:
*Модели из списка работают на аппаратных мощностях участников сообщества и доступны для бесплатного использования! НО когда много людей сидит на одной модели, образуется очередь, а у анонимных подключений приоритет в очередях самый низкий.
Если хотите получить преимущество, регистрируйтесь https://horde.koboldai.net/registerЗа это вам выдадут личный ключ API, который можно будет вбить в таверну. Далее устанавливайте хорду и фармите Кудосы помогая людям, не имеющим мощного железа, приобщаться к нейронкам!
Какая модель лучше вопрос спорный.
Можете, например поизучать этот рейтинг: http://ayumi.m8geil.de/ayumi_bench_v3_results.html
По мне так методика тестирования в Аюми такая себе, но ничего лучше пока не встречал.
При подключении, не забудьте выставить галочку «Уточнить длину ответа в соответствии с возможностями рабочих машин» Иначе получите ошибку, если контекст установленный на сервере будет меньше вашего.
В принципе после этого уже +- можно начинать общение!
Поэтому переходим к обзору основных нюансов общения с нейровайфу.
Песеты настроекгенерации.
Первая из них это параметры генерации модели.
Главное, на что здесь стоит обратить внимание это
1. Длина ответа в токенах – ограничивает размер ответа модели.
2. Размер контекста – сколько текста вы посылаете нейросети при каждом запросе*
* тут стоит сделать небольшое отступление: многие думают, что общение с нейросетью происходит как с человеком. Вы ей что-то пишите – она на это запоминает и учитывает в последующих ответах. Это не совсем так: языковая модель может дать всего один ответ на один запрос. Памяти как таковой ни у одной современной LLM нет в принципе. Так как-же тогда происходить длинная переписка? Очень просто: в качестве запроса модели КАЖДЫЙ РАЗ посылается история всей вашей предыдущей переписки, она обрабатывает всю эту гору текста и отвечает один раз что она обо всём этом думает. Далее этот процесс повторяется, но в запрос включается предыдущий ответ нейросети.
Контекст - это максимальное количество текста, которое модель способна обработать. Если ваша беседа его превысит, таверна автоматически начнет удалять ваши сообщения, начиная с первых, а модель «забывать» с чего всё началось.
Оранжевая пунктирная полоска в чате таверны показывает до какого момента беседа входит в контекст.
3. Температура – один из важнейших параметров, отвечающий за «креативность» модели. Чем он выше, тем более разнообразным и менее адекватным будет ответ модели. Какую температуру, когда выставлять, лучше всего выяснить методом тыка. Но для небольших локальных моделей, как правило подходит температура 0.6-0.8, для более крупных, например, ChatGPT– 0.9-1.
Что же касается остальных параметров, на начальном этапе не стоит уделять им слишком много внимания. Можете подробно прочитать о них в вики таверны.
Всё что нужно знать, это то что они уже должным образом настроены в соответствующих пресетах.
Вы можете попробовать все и выбрать подходящий в зависимости от результатов. Но для начала советую выбрать “simple-proxy-for-tavern”или “Storywriter”, а далее играться с температурой.
Форматирование.
Эти настройки также оказывают очень большое влияние на генерацию, т.к. они определяют в каком виде модель будет получать ваши запросы.
Для локальных моделей часто критически важно выбрать нужное форматирование, от него будет завесить поймёт ли вас модель вообще.
ШаблонRoleplay один из самых универсальных, его понимают как крупные модели, вроде ChatGPT, таки локальные от 30-70В.
Но влокалках всё же стоит выбирать соответствующий им шаблон, это сделает модельгораздо «умнее».
Одним из самых распространённых является Alpaca, просто потому что большинство моделей основаны на ней. Но есть и исключения, список которых вы увидите, открыв вкладку «Предустановки».
Если по названию модели не понятно чьим файньтюном она является, попробуйте найти её страницу на https://huggingface.co/models
Там как правило указано откуда ноги растут.
С основными приготовлениями на этом мы закончили. Теперьпереходим к самому интересному – общению с нейротянами! Основные сопутствующиефишки рассмотрим по ходу дела.
Импорт персонажей.
В таверне уже имеется набор стандартных персонажей.
Вы можете побеседовать и с ними, но, чтобы показать максимум возможностей таверны, лучше сразу перейдем к добавлению новых.
Карточки персонажей можно найти на сайте: https://www.chub.ai/
В поиске находим нужного персонажа и скачиваем PNGфайлдля SillyTavern
https://www.chub.ai/characters/thecentuaro/rin-tohsaka
Кроме того, если есть, скачиваем Expressions ZIP и Лорбук (внизу вкладки Tavern, после описания карточки)Карточку персонажа кидаем в SillyTavern-staging\public\characters
Туда же извлекаем изображения из архива Expressions, папку не переименовываем, она должна соответствовать имени персонажа.
Лорбук же кидаем в SillyTavern-staging\public\worlds
Теперь можно обновить вкладку с таверной и нажать на иконку с появившимся персонажем.
Но при открытии мы увидим что чат на английском, а Рин обращается к нам как к Юзеру.
Чтобы исправить жмем на иконку Расширения и открываем вкладку Chat Translation
Здесь выбираем пункт Translation both, Googleи Русский язык.
Затем идём во вкладку «Миры» и выбираем Fate, чтобы беседа была более каноничной.
«Лордбуки» это сборники кратких сведений о мире или персонажах, в дополнение к основной карточке. Интересны они тем что, в отличие от карточки, количество записей в лорбуках не ограничено. Просто, когда речь аходит о каком-то событии или термине, название которого совпадает с записью влорбуке, таверна добавляет эту запись к промпту, чтобы модель понимала о чём идёт речь.
Я пару раз использовал лорбук для того чтобы написать персонажей с очень сложной предысторией, на десяток тысяч токенов) и это прекрасно работало при контексте всего в 4к.
Кроме того лорбук вполне можно использовать как замену «памяти» бота, записывая в него занимательные факты из вашего общения. Минус в том, что делать это надовручную.
Теперь заглянем в раздел Управления персоной. Здесь вы можете как описать свою личность, так и притвориться кем-то другим. Лично я всегда предпочитаю писать правдивое описание себя, ведь именно так вас будет воспринимать бот.
Кроме того, можно выбрать (или сгенерировать, об этом позже) подходящий фон беседы
По большей части всё – можно беседовать!
Стрелка справа от ответа персонажа это «свайп», при нажатии на неё сгенерится другой ответ, но вы всегда можете вернуться к предыдущему. Карандашик позволяет отредактировать любую реплику, как свою, так и бота в любой момент. Это очень полезно, если вдруг появилось желание разыграть другую сцену или просто что-то слегка подправить.
При нажатии на иконку персонажа, вы увидите его описание, которое точно также можно изменить в любой момент.
Что-ж, это был необходимый минимум, для начала использования таверны.
Но для тех, кому этого мало, продолжаем!
Особые возможности.
Преобразования вашей речи в текст. (STT) (понадобится микрофон)
Открываем расширения, вкладку «Download Extensions &Assets» и жмём кнопку подключения, соглашаясь с всплывающим сообщением.
Появится длинный список из разного рода улучшалок. У всех есть описания и их все вы можете попробовать самостоятельно, но я советую начать с «Speech Recognition»
После установки в расширениях появится новая вкладка. В ней нужно выбрать «браузер» и Русский язык. После этого рядом с кнопкой отправки сообщения появится также иконка микрофона, нажимаем её и говорим.
Преобразование текста в речь (TTS)
Дальше будет чуть сложнее, потому что теперь мы дадим голос ещё и нашей вайфу!
Для этого понадобится настроить вкладку расширений TTS.
Здесь интереснее всего 2 пункта: Silero и XTTSv2.
Результат работы Silero вы могли слышать в колабе text-generation-webui.Но в таверне подключение этого модуля на русском языке вызывает некоторое количество боли, так что как-нибудь в другой раз.
Поэтому подключаем https://github.com/daswer123/xtts-api-server
Вы можете установить его локально, следуя инструкции, но для начала лучше попробовать колаб: https://colab.research.google.com/drive/1b-X3q5miwYLVMuiH_T73odMO8cbtICEY?usp=sharing#scrollTo=nLS9QDgnrUmR
В настройках в строке Model_source: выбираем «apiManual»
Затем просто запускаем все ячейки по очереди сверху вниз, пока в консоли последней не получим строчку
После этого прокручиваем консоль в самое начало и ищем ссылку
Именно её нужно вставить в таверну:
После этого настройки должны выглядеть так. Если поля с выбором голоса персонажа не появилось, перезагрузите страницу и снова войдите в чат с персонажем. Ползунки можно пробовать двигать, чтобы получить другой результат.
Голос для персонажа нужно выбрать обязательно, иначе он не заговорит.
Запустить озвучку фразы можно кнопкой
Но если вы настроили всё как на картинке, генерация будет идти автоматически после ответа.
Эмоции и сумморайз.
Теперь мы наконец-то можем общаться в живую! Но как-жевизуальный контакт? Разумеется, это тоже не обошли стороной, именно для этого мы с вами скачивали спрайты эмоций в папку с персонажем!
Для этого нам понадобится запустить отдельный сервер расширений.
Итак, идём на гитхаб https://github.com/SillyTavern/SillyTavern-Extras
Лучше поставить всё это локально следуя инструкции на странице (что гораздо удобнее для повседневного использования).
Но попробовать можно и в колабе (не опять, а снова)
https://colab.research.google.com/github/SillyTavern/SillyTavern/blob/release/colab/GPU.ipynb
Ничего не меняем, запускаем последнюю ячейку и ждём ссылки
Ссылку вставляем в нижнее поле окна Расширения
Затем для удобства, рекомендую включить !!!РЕЖИМ ВАЙФУ!!! В настройках визуала.И вот, мы уже можем общаться лицом к лицу! Алилуйа!
Спрайты персонажа будут меняться в зависимости от его «эмоций». Кроме того, они могут быть анимированы (но встречаются такие редко).
Также стоит упомянуть о вкладке Summarize в расширениях.
Это очень полезная штука, увеличивающая «память» бота. Работает это так: в какой-то момент, пока размер контекста ещё не превышен, модель кратко конспектирует суть происходящего. Затем этот «конспект» будет отправляться вместо не входящей в контекст истории чата.
Есть два варианта конспектирования: С использованием основной модели (будет генерироваться как дополнительная реплика, с той же скоростью), либо с использованием специальной модели в сервере расширений (но тогда этот сервер должен быть запущен и подключен).
Групповые чаты
Но чего-то не хватает… Правильно, зачем общаться с одной аниме-тян, когда можно общаться с двумя?!
Выбираем опции в левом нижнем углу чата и жмём «превратить в группу»
Переходим в меню персонажа и в настройках открываем вкладку «добавить членов»
После чего составляем нужный нам для досуга список.
Генерация иллюстраций к чату.
Так, что же ещё нам может понадобиться? Конечно же иллюстрация происходящего с помощью Stable Diffusion!
На выбор есть несколько вариантов. Если у вас подключен сервер API, вы можете сгенерировать картинку через встроенный SDмодуль. Также можно подключить через APIсобственныйзапущенный StableDiffusion.Но мне больше нравится вариант StableHorde,т.к. он всегда доступен и не требует дополнительных модулей.
Жмём на волшебную палочку в нижней левой части чата и выбираем Generate Inage и далее один из пунктов
Теперь ждём пока не получим результат!Это может быть неплохой заменой спрайтам эмоций, превращающей чат в графическую новеллу.
Но учтите, что перед генерацией картинки, ваша текстовая модель сгенерирует для неё промпт. Так что всё это может занять дополнительное время.
Конечно в таверне ещё много фишек и настроек, но пока думаю стоит на этом остановиться.
Спасибо всем, кто дочитал до этого момента не пролистывая!
P.S. Если вы, чтобы не ждать очереди в Хорде, запустили LLMв колабе Text Generation WebUI, затем чтобы не устанавливать TTS, запустили в колабе и его, и в конце то же самое сделали с сервером дополнений, то поздравляю, у вас фуллхаус!