← К блогу

Зачем генерировать арт локально

SillyTavern исторически полагается на внешние API для изображений: NovelAI, Stability, DALL·E. Это удобно, но упирается в цену за генерацию, лимиты и прива…

Опубликовано
  • comfyui
  • image-generation
  • local-llm
  • character-cards
  • sillytavern

Связка «SillyTavern + ComfyUI» через расширение позволяет генерировать портреты для character cards и сцены по ходу ролевой сессии, не покидая интерфейс.

Что понадобится

  • ComfyUI — установленный и запущенный локально (по умолчанию порт 8188).
  • SillyTavern — свежая версия, расширение ComfyUI из встроенного менеджера расширений.
  • Модель — SDXL или Flux для портретов; для пиксель-арта отдельный чекпойнт (например, Pixel Art XL).
  • VRAM — 8 ГБ хватает для SDXL с --lowvram; 12+ ГБ комфортно для Flux.
  • Character card — ваша или скачанная, с заполненными полями описания и внешности.

Шаг 1: настройка ComfyUI

Запустите ComfyUI с флагами под вашу видеокарту. Для слабых GPU:

python main.py --lowvram --preview-method auto

Соберите базовый граф: CheckpointLoader → CLIPTextEncode (positive/negative) → KSampler → VAEDecode → SaveImage. Не усложняйте на первом этапе — сначала убедитесь, что API отвечает.

Проверьте доступность:

curl http://127.0.0.1:8188/system_stats

Если ответ JSON — всё готово к интеграции.

Экспорт workflow в API-формат

SillyTavern отправляет запросы в /prompt, а не в UI. Включите в ComfyUI режим «Enable Dev mode Options» и нажмите «Save (API Format)». Полученный JSON — это то, что нужно расширению. Обычный Save не подойдёт.

Шаг 2: подключение к SillyTavern

  1. Откройте Extensions → ComfyUI.
  2. Укажите URL: http://127.0.0.1:8188.
  3. Загрузите API-JSON workflow.
  4. Свяжите плейсхолдеры: в промпте используйте %prompt% и %negative_prompt% — расширение подставит их из настроек персонажа.
  5. Задайте размеры: 832×1216 для портретов SDXL, 1024×1024 для сцен.

Сохраните конфигурацию. Теперь кнопка генерации появляется в меню сообщения.

Шаг 3: промпты для character cards

Качество портрета определяется не моделью, а описанием. Держите структуру:

  • Субъект: 1girl, solo, portrait, upper body
  • Внешность: цвет волос, глаз, одежда — по полям карточки
  • Стиль: digital painting, pixel art, anime screencap
  • Качество: masterpiece, best quality, detailed face
  • Негатив: lowres, bad anatomy, extra fingers, watermark, text

Для Iris the Pixel Painter рабочий промпт выглядит так:

pixel art, 1girl, artist, paint-stained apron, short teal hair,
goggles on forehead, holding brush, warm studio lighting,
limited palette, 16-bit aesthetic, sharp pixels

Ключевой момент: тег pixel art в SDXL без LoRA даёт грязный результат. Подключите специализированный чекпойнт или LoRA — иначе получите размытые «псевдопиксели».

Согласованность между генерациями

Чтобы персонаж не менялся от сцены к сцене:

  • Фиксируйте seed в настройках расширения.
  • Используйте один чекпойнт и одну LoRA для всех изображений карточки.
  • Держите неизменным блок внешности в промпте — меняйте только окружение и позу.
  • Для продвинутых сценариев — IPAdapter или Reference-only ControlNet по первому удачному портрету.

Шаг 4: сцены по ходу сессии

Сцены генерируются иначе, чем портреты. Здесь важен контекст: локация, время суток, действие.

Подход — два режима в расширении:

РежимКогда использоватьПромпт
CharacterПортрет, эмоция, крупный планИз полей карточки
SceneИллюстрация к сообщениюИз последнего ответа модели + шаблон

Для сцен удобно держать шаблон вида %scene_description%, cinematic lighting, wide shot, detailed background. Расширение подставит описание из текста, а вы не будете переписывать промпт вручную.

Оптимизация скорости

  • Снижайте steps до 20–25 для SDXL — разница с 40 незаметна.
  • DPM++ 2M Karras — баланс скорости и качества.
  • Кэшируйте модель в VRAM: не перезагружайте чекпойнт между запросами.
  • Для Flux ставьте --fast и уменьшайте разрешение до 768 px по короткой стороне.

Типичные проблемы

Пустое изображение или таймаут. Увеличьте timeout в настройках расширения до 120 секунд. Первый запуск грузит модель в VRAM — это долго.

Ошибка «node not found». Ваш workflow использует кастомные ноды, которых нет в API-режиме. Либо установите их, либо упростите граф до встроенных.

Промпт игнорируется. Проверьте, что плейсхолдеры %prompt% стоят именно в CLIPTextEncode, а не в KSampler. Расширение подменяет строки по имени ноды.

Персонаж «плывёт». Зафиксируйте seed и не меняйте порядок тегов — CLIP чувствителен к позиции.

Итог

Локальная генерация через ComfyUI снимает зависимость от платных API и даёт полный контроль над стилем карточки. Связка с SillyTavern превращает character cards из текстовых описаний в визуальные — портреты и сцены появляются по ходу сессии без переключения окон.

Если не хочется возиться с нодами и флагами запуска, посмотрите готовые решения в каталоге карточек MiniTavern — там же доступны мобильные приложения для iOS и Android и расширение для Chrome, которые работают с теми же character cards.

Другие статьи, которые могут вам понравиться

Как писать приветствия для карточек персонажей SillyTavern: примеры и лучшие практики

Создание убедительного приветствия — это первый шаг к тому, чтобы ваш персонаж ожил в SillyTavern. Приветствие задаёт тон, характер и контекст для всего ди…

  • greetings
  • character-cards
  • sillytavern
  • writing-guide
Читать

Зачем разбирать анатомию карточки

Карточка персонажа — это не просто «имя и описание». Это структурированный объект, который движок подставляет в контекст модели по строгим правилам. Понима…

  • sillytavern
  • character-cards
  • card-anatomy
  • beginners
Читать

Решаем проблемы с карточками персонажей в SillyTavern: от ошибок до идеального ответа

Вы создали потрясающую карточку персонажа, загрузили её в SillyTavern, но вместо увлекательного диалога получили бессвязный текст или сообщение об ошибке?…

  • sillytavern
  • character-cards
  • troubleshooting
  • ai-roleplay
Читать