SillyTavern
SillyTavern (Таверна) — фронтенд для общения с языковыми моделями. Сама по себе она не запускает модели — она подключается к бэкенду (KoboldCPP, llama.cpp, Ollama и другим) и предоставляет интерфейс для чата и RP. Если кобольд это мозг, то таверна — лицо.
Репозиторий: https://github.com/SillyTavern/SillyTavern
Официальная документация: https://docs.sillytavern.app/
Подключение модели
Кнопка подключения — иконка штекера в верхней панели.
Таверна поддерживает два принципиально разных режима работы с локальными моделями: Chat Completion и Text Completion. Это важно понять сразу.
Chat Completion (OpenAI-совместимый API) — рекомендуется новичкам
В этом режиме таверна отправляет в бэкенд структурированные сообщения (роль + текст), а бэкенд сам применяет нужный формат шаблона модели. Тебе не нужно разбираться с instruct-шаблонами вручную.
Все популярные бэкенды поддерживают OpenAI-совместимый API:
KoboldCPP:
- Запусти KoboldCPP, загрузи модель, нажми Launch
- В Таверне: API Type → OpenAI → Base URL:
http://127.0.0.1:5001/v1 - API Key можно оставить пустым или написать любое слово
llama.cpp:
llama-server -m модель.gguf -ngl 99 --jinja
Флаг--jinjaвключает встроенный шаблон модели — без него форматирование может быть неправильным- В Таверне: API Type → OpenAI → Base URL:
http://127.0.0.1:8080/v1
Ollama:
ollama run <модель>- В Таверне: API Type → Ollama → URL:
http://127.0.0.1:11434/
После подключения в настройках появится список доступных моделей — выбери нужную.
Text Completion — для продвинутых
В этом режиме таверна сама собирает весь промт в одну строку и отправляет в бэкенд. Бэкенд просто генерирует продолжение. Это значит, что именно таверна отвечает за правильное форматирование — и ты должен вручную настроить instruct-шаблон под свою модель. Подробнее в разделе Instruct Format.
Когда это нужно: если Chat Completion даёт плохие результаты с конкретной моделью, или если нужен полный контроль над промтом.
Карточки персонажей
Карточка — файл .png или .json с описанием персонажа. Модель читает её при каждом ответе, так что качество карточки напрямую влияет на качество RP.
Где брать:
- characterhub.org
- chub.ai
- botbooru.com — относительно новый сайт, более лояльный к контенту для взрослых
Как импортировать: перетащить файл прямо на страницу Таверны, или через кнопку импорта в разделе персонажей.
Поля карточки
Description — основное описание: внешность, характер, мир, история. Занимает фиксированное место в контексте при каждом запросе.
First Message — первое сообщение персонажа. Модель ориентируется на стиль и длину этого сообщения сильнее, чем на что-либо ещё. Хочешь длинных ответов в нужном стиле — пиши длинное первое сообщение в нужном стиле.
Personality — краткая выжимка характера, несколько строк. Дублирует часть Description, но помогает модели удерживать характер.
Scenario — контекст встречи и обстоятельства.
Examples of Dialogue — примеры диалогов с тегами {{char}}: и {{user}}:. Разделяются тегом <START>. Помогают модели удерживать стиль речи, но занимают контекст — для длинных сессий можно убрать после разгона.
Alternate Greetings — альтернативные первые сообщения. Удобно держать несколько вариантов завязки.
"Про эффективность полей"
Поля карточки вставляются в промт в определённом порядке и занимают реальные токены. Чем длиннее карточка — тем меньше места остаётся на историю чата. Не пиши в Description то, что можно поместить в лорбук.
Разметка (стиль текста)
Модели не имеют встроенных правил о том, как форматировать RP-текст — они просто подражают стилю из карточки и истории чата. Поэтому стиль разметки определяешь ты сам через First Message и примеры диалогов.
Самые распространённые стили:
- Проза — чистый нарративный текст без специальных символов. Подходит для сторителлинга.
- Звёздочки —
*действия в звёздочках*, "диалог в кавычках". Самый популярный стиль в RP-сообществе. - Кавычки —
"диалог в кавычках", действия обычным текстом.
Какой бы стиль ты ни выбрал — модель подхватит его из First Message. Если она начинает смешивать стили или уходить в другой формат — исправь несколько последних сообщений руками (редактирование есть в таверне) и она вернётся в нужное русло.
Instruct Format (только для Text Completion)
"Если ты используешь Chat Completion (OpenAI API) — этот раздел тебя не касается. Бэкенд сам применяет нужный формат."
Каждая языковая модель при обучении видела текст в определённом формате — с конкретными токенами-разделителями для ролей system/user/assistant. В режиме Text Completion таверна сама собирает промт, поэтому она должна знать этот формат. Таверна не умеет определять нужный шаблон автоматически — его нужно выбрать вручную.
Неправильный шаблон → модель не понимает структуру → мусорные теги в ответах и деградация качества.
Настраивается: меню подключения → вкладка Instruct Mode → включить → выбрать шаблон из списка.
Как найти правильный шаблон
- Открой карточку модели на HuggingFace
- Найди секцию Chat template или Prompt format — там обычно написан нужный формат
- Выбери соответствующий шаблон в Таверне
Популярные форматы и какие модели используют
ChatML — Qwen3/3.5/3.6, Mistral NeMo, большинство новых моделей:
Llama 3 — Meta LLaMA 3.x, многие файнтюны на её базе:
Gemma — Google Gemma 3/4 (системный промт вшивается в первый user-turn):
Mistral V1 — старые Mistral 7B и Mixtral:
Проверка что шаблон правильный
Открой логи промта в таверне (Prompt Debug или через кнопку просмотра последнего промта) и убедись что спецтокены присутствуют в нужных местах.
"Признак неправильного шаблона"
Если в ответах модели появляются [INST], <|im_start|>, <start_of_turn> или другие токены как видимый текст — шаблон выбран неправильно или включён когда не нужен.
Структура промта
Прежде чем разбирать отдельные поля, важно понять как таверна собирает промт, который уходит в модель. В упрощённом виде порядок такой:
Понимание этой структуры объясняет почему некоторые настройки работают, а некоторые — нет.
Системный промт (System Prompt)
Инструкция для модели: кто она, как должна себя вести, что можно и нельзя. Настраивается в AI Response Formatting → System Prompt.
Типичный системный промт для нецензурированного RP:
Если модель отказывается от контента, постоянно извиняется или выходит из роли — первым делом меняй системный промт. У сообщества есть готовые варианты под разные модели, ищи в треде.
Макросы: {{char}} заменяется именем персонажа, {{user}} — именем пользователя, {{persona}} — описанием персоны пользователя.
Author's Note
Author's Note — это кусок текста, который вставляется не в начало промта, а в определённую глубину истории чата (обычно за 2-4 сообщения до конца). Из-за этого модель воспринимает его как «недавнее и важное», а не как общий фон.
Зачем: напомнить модели о важных деталях которые могли уйти далеко в контекст. Задать тон, атмосферу, текущее состояние сцены.
Где: иконка автора в верхней панели чата (или Ctrl+Shift+A). Можно задать дефолтный Author's Note в Advanced Formatting.
Глубина (Depth): на сколько сообщений от конца вставлять. Обычно 2-4. Чем ближе к концу — тем сильнее влияние.
Примеры использования:
[Current scene: dark forest, night, rain. Tone: tense and suspenseful.][{{char}} is currently wounded and scared. Do not forget this.][Write long, detailed paragraphs. Minimum 3 sentences per action.]
Семплеры
Модель не выдаёт готовый текст — она выдаёт распределение вероятностей по всему словарю токенов (десятки тысяч вариантов). Семплеры решают, как из этого распределения выбрать следующий токен. Неправильные настройки = лупы, бред, или наоборот — деревянные одинаковые ответы.
Настраиваются в меню Generation или через Presets (иконка шестерёнки в верхней панели).
Temperature
Первый и главный параметр — применяется до всех остальных.
Температура масштабирует разброс вероятностей: при < 1.0 разрыв между вероятными и маловероятными токенами увеличивается (модель «увереннее» в своих предсказаниях), при > 1.0 — сглаживается (маловероятные токены получают больший шанс). При = 0 модель всегда берёт самый вероятный токен (детерминированный режим, ответы не меняются).
Простой пример: токен А имеет вероятность 60%, токен Б — 20%, токен В — 10%.
- При
temp=0.5→ А~85%, Б~10%, В~4% — модель почти всегда выберет А - При
temp=1.0→ без изменений - При
temp=1.5→ А~45%, Б~25%, В~18% — маловероятные варианты конкурируют с лучшим
Для RP обычно 0.8–1.1. При >1.3 модель начинает выдавать нелогичные переходы, выдумывать факты и уходить в шизу. Признак слишком высокой температуры — текст постепенно теряет связность к концу ответа.
Top-P (Nucleus Sampling)
Отсекает «хвост» маловероятных токенов. Алгоритм: берёт токены по убыванию вероятности пока их суммарная вероятность не достигнет P, остальные выбрасывает.
Важная особенность: top-p адаптивен. Если модель уверена в следующем слове (один токен имеет 90% вероятности), top-p=0.9 оставит только его. Если модель не уверена (много токенов по 5-10%), top-p=0.9 оставит большой список вариантов. То есть порог не фиксированный, а ситуативный.
1.0— выключен (все токены допустимы)0.9–0.95— типичные значения для RP- Если используешь Min-P — top-p обычно можно поставить в
1.0
Min-P
Более современная альтернатива top-p. Отсекает токены с вероятностью ниже min_p × вероятность_лучшего_токена.
Преимущество над top-p: порог масштабируется относительно текущего «лучшего» токена. При уверенном предсказании (лучший токен 70%) — порог высокий, отсекается много мусора. При неуверенном (лучший токен 10%) — порог низкий, остаётся больше вариантов. Это более естественное поведение.
0.05–0.10— хорошие значения для RP- Можно использовать вместо top-p или вместе с ним
Top-K
Простейший фильтр: оставить только K наиболее вероятных токенов, остальные выбросить. В отличие от top-p и min-p, не адаптируется к контексту.
0— выключен20–100— типичные значения- Используется как грубый ограничитель, часто в связке с top-p
Repetition Penalty
Снижает вероятность токенов, которые уже встречались в недавней истории. Конкретно: делит логит токена на значение штрафа (>1 снижает вероятность, <1 повышает).
1.0— без штрафа1.05–1.15— мягкий штраф, хорош для RP без заметных артефактов> 1.2— начинает ломать стиль: модель избегает слов из карточки персонажа, лексика беднеетpenalty_range— на сколько токенов назад смотреть (обычно 1024–2048)
Признак слишком высокого штрафа: модель начинает использовать синонимы там где не нужно, или перефразировать то что сказала только что.
DRY (Don't Repeat Yourself)
Более умная альтернатива repetition penalty. Находит повторяющиеся последовательности токенов (фразы, а не отдельные слова) и штрафует их продолжение. Работает там где обычный rep penalty не справляется — когда модель циклится на целых предложениях или абзацах.
Доступен в современных версиях llama.cpp и KoboldCPP. Параметры: multiplier (~0.8), base (~1.75), allowed_length (сколько токенов повтора допустимо).
XTC (Exclude Top Choices)
Экспериментальный семплер, делает обратное top-p: с заданной вероятностью (probability) убирает из выборки самые вероятные токены (кроме последнего), оставляя менее очевидные варианты. Делает текст менее предсказуемым и более «живым» не поднимая температуру. Значения: threshold=0.1, probability=0.5.
Порядок применения семплеров
Семплеры применяются последовательно, и порядок имеет значение. Стандартный порядок в Таверне:
Temperature применяется первой и меняет само распределение. Остальные фильтры работают уже с изменённым распределением.
Рекомендации для старта
Для RP на современных моделях (Qwen3, Gemma 4, Llama 3):
Если ответы слишком монотонные — повышай Temperature до 1.1–1.2.
Если модель начинает бредить — снижай Temperature или повышай Min-P.
Если циклится на фразах — включай DRY или повышай Rep Penalty.
Готовые пресеты от сообщества: https://huggingface.co/sphiratrioth666/SillyTavern-Presets-Sphiratrioth
Интерактивная демонстрация семплеров: https://artefact2.github.io/llm-sampling/
Контекст и история чата
Как работает контекст
Модель «видит» только то, что влезает в контекстное окно. Всё что вышло за его пределы — забыто. Контекст заполняется так: системный промт и карточка занимают фиксированное место, остальное — история чата. Чем длиннее история, тем старее сообщения вытесняются.
Context Size в настройках подключения — максимум токенов. Ставь столько, сколько реально поддерживает модель (обычно 8k–128k), но помни что большой контекст = больше VRAM/RAM.
Squash (сжатие истории)
Когда история чата разрастается и начинает вытеснять старые важные события, помогает Squash (сжатие сообщений). Таверна умеет объединять несколько старых сообщений в одно суммарное — это называется Message Squash.
Найти в меню чата → Squash Messages или через кнопку с иконкой сжатия в истории. Можно выделить блок старых сообщений и заменить их кратким резюме, которое потом корректируешь руками.
Альтернатива: вынести ключевые факты о персонажах и событиях в лорбук или Author's Note — тогда они будут в контексте всегда, независимо от длины чата.
Что делать когда контекст заканчивается
- Squash старые сообщения вручную — самый контролируемый способ
- Переключить важные факты в World Info (лорбук)
- Использовать Author's Note для «текущего состояния» сцены
- Увеличить Context Size в настройках (если железо позволяет)
Лорбуки (World Info)
Лорбук — динамический справочник. Ты задаёшь ключевые слова, и когда они появляются в сообщениях чата, связанный текст автоматически вставляется в контекст.
World Info в боковом меню → New Lorebook.
Структура записи
- Keys (ключи) — слова-триггеры через запятую. Например:
Melissa, Мелисса, рыжая - Content (содержимое) — текст, который вставится в контекст при срабатывании ключа
- Position — куда вставить: перед описанием персонажа, после него, или в начало/конец истории
- Depth — на какой глубине от конца чата искать ключевые слова
Для чего использовать
- Описания персонажей, которых не нужно держать в карточке постоянно
- Описания локаций — вставляются когда упоминается место
- Правила мира, которые нужны только в определённых контекстах
- Секреты сюжета, которые должны «всплывать» при упоминании
Привязка к персонажу
Лорбук можно прикрепить к карточке персонажа (в редакторе карточки → World Info) — тогда он будет активен только при общении с этим персонажем.
Персоны (Personas)
Персона — твоё описание от лица пользователя. Имя, аватар, характер — всё что модель должна знать о «тебе» в RP.
Управление персонами → иконка в верхней панели.
Описание персоны вставляется в промт в настраиваемой позиции: в системный промт, в Author's Note, или на определённой глубине чата.
Можно привязать разные персоны к разным персонажам — удобно если ты играешь разных «себя» с разными карточками.
Расширения (Extensions)
Перевод
Переводит ответы модели на лету. Extensions → Translation.
Поддерживает DeepL, Google Translate, LibreTranslate и другие движки. Полезно если модель хорошо пишет по-английски но плохо по-русски.
Гайд по настройке: https://rentry.co/magic-translation
Пошаговое мышление
Расширение от тредовичка, добавляет chain-of-thought в ответы — модель «думает» перед ответом. Улучшает сложные сцены.
https://github.com/cierru/st-stepped-thinking
TTS (Text-to-Speech)
Extensions → TTS — озвучка ответов персонажа. Поддерживает Silero, ElevenLabs, Coqui и другие движки.
Частые проблемы
Модель отказывается от контента / постоянно извиняется
Меняй системный промт. Если не помогает — модель слишком «соевая», нужна другая.
Мусорные теги в ответах ([INST], <|im_start|> и т.п.)
Неправильный Instruct Format. Выбери правильный шаблон под свою модель.
Модель нарушает стиль разметки
Отредактируй несколько последних сообщений руками, приведя их к нужному формату — модель подхватит.
Лупы (модель повторяется)
Увеличь Repetition Penalty или включи DRY в настройках. Попробуй другой пресет.
Модель «забыла» персонажа / важные события
Кончился контекст. Squash старые сообщения, перенеси ключевые факты в лорбук.
Медленная генерация
Проверь количество GPU-слоёв в бэкенде (GPU Layers / n-gpu-layers). Должно быть максимальным, пока влезает в VRAM.
Модель пишет слишком коротко
Напиши длинное First Message в карточке. Добавь в Author's Note: [Write detailed, long paragraphs. Minimum 200 words per response.]
Модель смешивает язык
Укажи язык явно в системном промте: Write all responses in Russian. Или используй расширение Translation.
Полезные ссылки
- Официальная документация: https://docs.sillytavern.app/
- Подключение бэкендов: https://docs.sillytavern.app/usage/how-to-use-a-self-hosted-model/
- Пресеты для RP: https://huggingface.co/sphiratrioth666/SillyTavern-Presets-Sphiratrioth
- Карточки персонажей: https://www.characterhub.org
- Пошаговое мышление: https://github.com/cierru/st-stepped-thinking
- Гайд по переводу: https://rentry.co/magic-translation
- Таверна на Android (Termux): https://web.archive.org/web/20241201232031/https://rentry.co/STAI-Termux
- Вики KoboldCPP (настройка бэкенда): https://github.com/LostRuins/koboldcpp/wiki