Картинки в Silly Tavern через ExtBlocks

Картинки в Silly Tavern через ExtBlocks

(или как буду полным чайником приручить внешние блоки)
ОТ АВТОРА: Шино, это ты во всем виноват! Вечно ты выложишь какую-нибудь прикольную приблуду в своем паблике, расскажешь как пользоваться только поверхностно, а я потом страдаю дня два, пытаясь в меру своих скудных мозгов это применить! И знаю же, что ты, гад шерстяной, фигню не посоветуешь, но и разобраться бывает сложно.
Ладно. Не ругаюсь. Разобралась. Нравится. Оно того реально стоило :3

ОГЛАВЛЕНИЕ

🔆 Что такое ExtBlocks и зачем оно нам вообще нужно

🔆 Как установить и настроить приблуду

🔆 Понимаем как все работает

🔆 Как бороться с несовершенствами

(по традиции все картинки сделаны через то, про что рассказываю)

🔆 Что такое ExtBlocks и зачем оно нам вообще нужно

Если кратко и без лирики: ExtBlocks, или внешние блоки, — это когда отыгрыш пишет одна модель (крутая, например Клод), а все инфоблоки, например картинки — дешёвый Дипсик. В этом случае две нейронки делят обязанности, как автор и иллюстратор. Причём если Дипсик немного, самую капельку в курсе того, что пишет Клод (надо же ему знать, что рисовать для нас, верно?), то Клод о проделках Дипсика не в курсе — он просто увлечённо строчит нам отыгрыш.

Итак, о плюсах и минусах ExtBlocks коротко и по существу:

✅ Экономия входящего трафика токенов на дорогих моделях
(особенно актуально для тех, кто платит за токены)

✅ Больше голого текста влезает в контекстное окно, так как там нет кода вообще

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

✅ Можно перегенерировать отдельно промт изображения, не трогая текст отыгрыша

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

⛔️ Загрузка картинки становится дольше

⛔️ Нельзя добавить сразу много внешних блоков, если провайдер ограничивает количество сообщений в минуту

⛔️ Неудобно писать ООС, так как его видят сразу две модели

⛔️ Желательно потратить немного времени на настройку перед началом ролевой игры

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

🔆 Как установить и настроить приблуду

Итак, гайд для тех, кто просто хочет взять и играть:

  1. Установите расширение ExtBlocks.
    Ссылка для установки: https://gitgud.io/sleepydraqon/ext-blocks-custom
  2. Создайте новый пресет, импортируйте в него одну или несколько карточек:
    Карточка моего авторства (делает картинки 3:2):
    https://disk.yandex.ru/d/PzhC-PkTCgHUfA
    Карточка от Шино (для комиксов):
    https://disk.yandex.ru/d/xYj8ezLyF_s67w
    ВНИМАТЕЛЬНО: это не два пресета, это две карточки для пресета. Их надо вставлять в расширении по адресу: Preset blocks -> Import
  3. В таверне, во вкладке Соединение с API создайте новое подключение. Назовите его так, чтобы вы потом не забыли, что это, например: ExtBlocks, Блоки. Поставьте там то, что вам не жалко заюзать на генерацию блоков.
  4. В расширении ExtBlocks жмём на кнопку API Settings и в окне Connection Profile выбираем созданное подключение.
  5. И последнее: в расширении НАИстеры (Генерация картинок) не забудьте поставить галку напротив пункта Работа с внешними блоками.

Дальше - просто пользуемся. Если вы импортировали обе карточки - выключаем ненужную.

🔆 Понимаем, как всё работает

Итак, если вы въедливый пользователь и вам хочется не просто пользоваться, а понимать, как это работает и, возможно, сделать что-то своё — добро пожаловать во вторую часть статьи.

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

🔆 Ну, во-первых, полная документация к расширению лежит тут:

https://gitgud.io/sleepydraqon/ext-blocks-custom

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


Первое, что мы видим, открыв расширение, — это две группы вкладок. Они называются Preset blocks и Embedded blocks. По своей функции вкладки ничем не различаются. Просто первая — это блоки, которые можно подтянуть из пресета (например, моего), а вторая — это то, что вы конкретно туда запихали, и оно не будет никак меняться, если вы смените пресет. В остальном те блоки, что вы создадите там, будут работать одинаково.

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

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


Пока что разберём вкладку Block Settings.

1. ЭТО ОЧЕНЬ ВАЖНО. Имя вашего блока, которое вы указали при создании, должно содержать только латинские буквы, никаких символов! Оно нам ниже понадобится.

2. Block Template — образец вашего блока. Смело запихиваем туда нужный нам код. Но есть один нюанс. Если у вас блок называется imagen, вы должны поместить весь ваш блок между <imagen> и </imagen>. Проверяйте, чтобы имя блока и название блока в скобках всегда, всегда, всегда совпадало. Это важно, иначе работать не будет.

3. Block Prompt — инструкция для нейросети, что она должна сделать с вашим шаблоном.

4. Triggers — укажите, что будет триггерить генерацию блока. Самое прикольное, что там можно поставить несколько галочек. И… таким образом вы можете генерить картинки не только к сообщениям бота, но также и к своим собственным сообщениям.

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

6. Injection Role — в целом нет разницы что вы здесь поставите, но я бы рекомендовала поставить System и не рекомендую ставить Assistant. Почему так. В моем понимании системные инструкции и инструкции от юзера нейросеть воспринимает как команду к действию, а все штуки с пометкой Assistant воспринимает как пример того, что он должен генерировать. Я не тестировала, что лучше работает, System или User, так что экспериментируйте!

7. State — для картинок ничего тут не трогаем. Если интересно, почитайте в документации, что там и как.

8. Injection Position — ставим строго In chat и не паримся.

9. Injection Depth — это говорит, куда вставлять блок, а если блоков много — в каком порядке их вставлять. Если коротко:
[-1] — вставляем блок в начало чата
[1] — вставляем блок в конец чата

На этом разбор окна объявляю закрытым, переходим к следующей вкладке.

Открываем вкладку Context Builder. Что это за вкладка? Эта вкладка нужна для того, чтобы строго ограничить тот контекст, что будет получать вторая нейронка. Ей, в отличие от первой, вообще не надо много контекста, если дело касается картинок. Давайте посмотрим, какие есть типы Context Items и решим, что нам тут нужно.

Обратите внимание на первый выпадающий список. Вот по нему и пойдём.

1. Text — здесь на самом деле всё очень просто. Я в своём пресете использовала такие блоки для того, чтобы добавить дополнительные подсказки о внешности персонажей, а также для краткой инструкции в самом конце, которая встряхнёт нейронку после контекста и заставит её работать лучше. Тут можно выставить Item Role — лучше поставить значение System или User, чтобы в контексте нейронка видела это как системные подсказки или подсказки от пользователя.
ЛАЙВХАК (от Шино): для тех кто (как я) в танке и не знает что такое макросы, то конструкция {{persona}} - вставляет в текст карточку вашей персоны, а {{description}} - вставляет карточку бота.


2. Last messages — этот тип контекста отправляет нейронке последние ваши сообщения. Особенно нам тут интересны вкладки Item Role и Messages Count.

  - В Item Role я советую поставить User: тогда дополнительная нейронка будет распознавать ваши сообщения и сообщения первой нейросетки как запросы пользователя, следовательно, будет генерить лучше.

  - Messages Count — это число сообщений, которые нужно отправить нейросети. На самом деле все сильно зависит от ваших задач, длинны этих самых сообщений, наполненности их событиями. В одном случае и 2-3 будет достаточно, а в другом больше будет работать 5-10.


3. Last messages by keyword — опустим, оно нам для картинок не нужно.


4. Previous block — очень важная штука! Эта вкладка добавит в контекст предыдущие блоки.

  - В Block Name надо обязательно указать корректное имя блока, который мы хотим показать нейронке.

  - В Blocks Count ставим количество блоков, которые надо вставить в контекст. По аналогии с количеством сообщений - придется поэкспериментировать.

 НО есть один изрядный недостаток у этого пункта. Плагин НЕ БУДЕТ вставлять эти блоки так, как они идут в контексте, то есть, чередования сообщений от бота и юзера не будет. Плагин просто вставит N блоков одним куском через запытую — и всё. Потому тут вам придётся думать, как выкручиваться.


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

🔆 Как бороться с несовершенствами

  1. ПРОБЛЕМЫ С ООС
    При использовании внешних блоков сложно использовать ООС. Так что если что-то сломалось, то вы можете либо поправить все руками, открыв блок в панели "Действия с сообщениями", или полностью перегенерировать внешний блок. Однако и это может не работать. Как тут еще можно выкрутиться? Вы можете добавить отдельную карточку для ООС во вкладке Context Items (в моем блоке она есть по дефолту). Либо вы можете написать ООС основной модели, попросив после сообщения вставить подробное описание персонажей, одежды и локации. Это обычно помогает.
  2. ПЕРЕГЕНЕРАЦИЯ БЛОКА
    Как я уже упоминала ранее, благодаря внешним блокам вы можете перегенерировать отдельно блок, не трогая само сообщение. Но есть один недостаток. Это делается через команду /extblocks-regenerate. Вводить ее каждый раз может быть неудобно. Так что рекомендую забиндить команду на специальную кнопку при помощи встроенного расширения Quick Reply, которое есть в таверне по умолчанию. Очень удобно и разобраться с ним очень просто.
  3. ГРУППОВЫЕ ЧАТЫ
    Тут вам придется выкручиваться. По дефолту штука генерирует изображение на каждое четное сообщение (это сообщение бота, если вы играете 1 на 1), но в групповых чатах все сложнее. Так что вам придется лезть под капот и что-то там подшаманивать чтобы работало так, как вам нравится.

И на этом моё лютое TLDR объявляю закрытым. Всё, что знала, рассказала. Юзайте!

ЕСЛИ ТЫ ПРОЧИТАЛ ВСЕ ОТ НАЧАЛА И ДО КОНЦА, ТЫ ПРОСТО СУМАСШЕДШИЙ, ЧУВАК. Я ТОБОЙ РЕАЛЬНО ГОРЖУСЬ.

Искренне твоя: @SaraSardis

А еще у меня паблик есть, который я нерегулярно, но веду: https://t.me/escapizmLAO

Report Page