NoassTavern
Ссылка на актуальную версию
https://tavernikof.github.io/NoAssTavern/
Github: https://github.com/Tavernikof/NoAssTavern
Что это?
Это новый фронтенд, вдохновленный глупой таверной, но заточенный чисто под безжоп. Основная мотивация - исправить то что плохо сделано в таверне и добавить новый функционал. Для работы не нужен бекенд, поэтому запускается чисто через браузер (есть некоторые ограничения, об этом ниже).
На данный момент это очень сырая версия и подходит для тех, кто умеет в редактирование пресетов или хотя бы на базовом уровне понимает, как работает лоботомит. Хотя покумить уже можно и сейчас, базовые настройки в наличии
Основные отличия:
- НОДЫ. Да-да, ты не ослышался, влажная мечта уже здесь
- Жирные чаты. Ближайший аналог FatPresets, но без ограничений таверны. Внутри чата хранится история сообщений, информация о всех персонажах и настройки пресета. (настройки прокси остаются глобальными и не хранятся вместе с чатом).
- Редактор промптов. Позволяет более очевидно контролировать, что уйдет в запросе
Что умеет на данный момент:
- Базовые вещи: карточки персонажей, персоны, чаты, пресеты, прокси
- Бекенды: Клод, Гемини, OpenAI (в теории должно поддерживаться все совместимые)
- Внешние блоки
Что НЕ умеет на данный момент:
- Мобильная версия
- Саммари (силлипидор не украдет твой саммари, если его нет)
- Лорбуки
- Регексовская магия
- Плагины и темы
Как начать
Окей, для начала потребуется некоторые базовые настройки:
- Добавить настройки подключения.
Не бойся, твой токен никто не украдет, все хранится в браузере
- Добавить карточки персонажей и персоны
Персоны больше не нужны. Вместо этого создавай свою карточку прямо тут.
Для карточек, которые будут использоваться как персоны, в описании все равно надо указывать {{char}}
- Создать чат
- Готово, вы восхитительны!
В любой момент можно добавить/удалить участников, изменить настройки промптов.
!Внимание! если стереть сохраненную в чате карточку (которая отмечена пометкой current), то она удалится без возможности восстановления
(1) В блоке настройки персон отображаются все добавленные в данный момент карточки. Галочки отвечают за активность карточек. Иконкой отмечена карточка текущего юзера.
Confusing moment
Для карточки юзера действуют особые правила в отношении переменных. При ее обработке автоматически заменяются {{char}}
> {{user}}
и {{description}}
> {{persona}}
.
Если в карточке персонажа написано что-то вроде {{char}} hates {{user}}
, то{{char}}
всегда будет указывать на имя карточки, а {{user}}
на другую карточку.
(2) Impersonate - маленький хелпер, который позволяет быстро сменить префксс юзера и стоп-стринги. Удобно если хочется быстро написать какое-то сообщение за другого персонажа, не пердолясь с настройками карточки
(3) Рычаги - прямо как в таверне. (Одна из немногих вещей, которая была сразу хорошо сделана)
Настройки генерации
В основе генерации лежит нодовый интерфейс. По умолчанию существуют 3 процесса, каждый из них запускается, при определенных действиях:
- Main. Нажатие кнопки "отправить" на последнем сообщение юзера
- Generate. Создание нового свайпа
- Translate. После редактирования сообщения
- Дополнительно можно создать любое количество процессов, все они будут работать как внешние блоки
Ноды
На данный момент существует всего 4 вида нод. Вот они слева направо:
- Create message. Создает пустое сообщение с указанной ролью
- Generate. Запускает генерацию с выбранным промптом на последней выбранной ноде. По умолчанию генерация происходит для выбранного сообщения, но если в процессе создаются новые сообщения через Create message, то все последующие манипуляции будут происзодиться с последним созданным сообщением.
- Translate. Переводит сообщение на нужный язык через я.переводчик. Чекбокс "Overwrite original message" нужен для обработки флоу: пишешь сообщение на русском - нажимаешь отправить - русское сообщение переводится на английский и подставляется вместо русского. Короче поведение аналогично таверне.
- Run scheme. Запускает другой процесс из текущего. Берегись лупов, защиты от дурака нет
Промпты
За основу взят пресет соляночника и адаптирован под нужный формат https://rentry.co/noass4anon2
Низкий поклон и поцелуй в пузико
Можно попробовать импортировать пресет из таверны, но функционал работает криво и подходит только как отправная точка, чтобы не копировать тексты руками
Промпты представляют из себя совокупность 3 сущностей из таверны: пресет + апи + прокси.
Редактор промптов максимально приближен к тому, как формируется запрос в апи:
- Редактор разбит на сообщения. Каждое сообщение будет преобразовано в сообщение в апи, если оно не пустое.
- Внутри редактора можно выделять текст в отдельные блоки, которые используются как "рычаги" в чате. Если текст не выделен в блок, то он всегда будет добавлен
- Для динамического контента работают переменные, их поведение аналогично таверне
Переменные
Переменная | Описание |
---|---|
{{user}} |
Имя юзера |
{{persona}} |
Описание юзера |
{{char}} |
Имя персонажа |
{{description}} |
Описание персонажа |
{{scenario}} |
Сценарий |
{{personality}} |
Персона (хз кому оно вообще надо) |
{{history}} |
История сообщений<br/>asd |
{{external}} |
Внешний блок |
{{lastUserMessage}} |
Последнее сообщение юзера |
{{random}} |
Случайное значение из списка |
Confusing moment #2
Если в чате несколько карточек персонажей, то {{char}}
и {{description}}
можно использовать с аргументами, чтобы обратиться к конкретной карточке, например {{char:1}}
, индексы начинаются от 1 и карточка юзера учитывается в нумерации.
Использование history отличается от таверны. Задавая аргументы, можно брать диапазон сообщений, таким образом можно делать аналог in-chat блоков с глубиной. Пара примеров:
{{history}}
- все сообщения
{{history:1:10}}
{{history::10}}
- последние 10 сообщений
{{history:11}}
- все сообщения начиная с 11
{{history:7:10}}
- последние 4 сообщения начиная с 7
Полный пример. Делаем аналог current_info на глубине 7:
Ограничения
- Нет бекенда и хранение всей инфы происходит в браузере. Из-за этого что-то может пропадать, если на девайсе мало свободного места. В планах добавить импорт/экспорт и синхронизацию с облачными хранилищами (все лежит в IndexedDB со всеми вытекающими последствиями)
- Запросы к прокси идут напрямую из браузера и из-за этого могут не работать некоторые прокси и не работает google translate, вместо него для переводов используется яндекс (чертовы CORS, можно решить через прокси типо CORS Anywhere, но гонять прокси через прокси другой прокси - отдельный вид извращений)
Контакты
Не стесняйся заводить ишью и слать ПР если ты КОДЕР
Github: https://github.com/Tavernikof/NoAssTavern
Почта: sick_kind@proton.me