Wildcard в Stable Diffusion: полное руководство по динамическим подстановкам

Wildcard в Stable Diffusion — это текстовые файлы со списками вариантов, из которых интерфейс случайным образом подставляет значения в промпт при каждой генерации. Если вместо красивых вариаций вы получаете буквальный текст вида __hair_color__ прямо на изображении, значит расширение для обработки подстановок не установлено или файл не найден.

Механизм особенно популярен среди пользователей AUTOMATIC1111 WebUI и ComfyUI: он позволяет за один запуск получить десятки разнообразных результатов, не переписывая промпт вручную. Ниже разберём, как устроен синтаксис, куда класть файлы и почему подстановки иногда не срабатывают.

Что такое wildcard и как работает механизм подстановки

Wildcard (подстановочный файл) — обычный текстовый файл в кодировке UTF-8, где каждая строка представляет один вариант значения. Например, файл eyes.txt может содержать строки blue eyes, green eyes, brown eyes. Когда в промпте встречается конструкция __eyes__, расширение выбирает одну из строк случайным образом.

Обработка происходит до того, как промпт попадает в модель. Это значит, что нейросеть видит уже готовый текст с подставленным значением, а сама конструкция с двойными подчёркиваниями никуда не передаётся. Выбор варианта зависит от сида: при фиксированном seed результат подстановки обычно воспроизводим, а при случайном сиде каждая генерация даст новую комбинацию.

Один промпт может содержать несколько wildcard-конструкций одновременно — например, __hair__, __eyes__, __dress__. Каждая из них раскрывается независимо, что даёт комбинаторный взрыв вариаций даже при небольших файлах.

Установка расширения Dynamic Prompts

Базовая версия AUTOMATIC1111 не понимает синтаксис wildcard из коробки — нужно расширение Dynamic Prompts. Устанавливается оно стандартным способом: вкладка ExtensionsInstall from URL, затем перезапуск интерфейса. После активации в настройках генерации появляется соответствующая секция, где функцию можно включить галочкой.

Для ComfyUI существуют отдельные ноды с аналогичной логикой — они подключают файл подстановок к текстовому вводу. Принцип тот же: путь к папке с wildcard-файлами указывается в настройках ноды, а синтаксис в промпте остаётся привычным.

⚠️ Внимание: после установки расширения обязательно полностью перезапустите WebUI, а не просто обновите страницу в браузере. Без перезапуска обработчик подстановок не загрузится, и конструкции __name__ попадут в генерацию как обычный текст.

📊 Как вы используете wildcard в Stable Diffusion?
Варьирую внешность персонажей
Подбираю стили и художников
Генерирую фоны и окружение
Пока только изучаю возможности

Куда помещать файлы wildcard

Расширение ищет файлы в собственной папке wildcards внутри каталога расширения. Точный путь зависит от версии, поэтому надёжнее открыть папку через интерфейс или проверить настройки расширения. Файлы должны иметь расширение .txt и сохраняться в кодировке UTF-8 без BOM — иначе возможны проблемы с кириллицей и спецсимволами.

Поддерживаются вложенные папки. Если файл лежит в подкаталоге colors/warm.txt, обращение к нему выглядит как __colors/warm__. Это удобно для организации больших коллекций: отдельно цвета, отдельно позы, отдельно стили.

  • 📁 Один файл — одна тематика: не смешивайте цвета глаз и стили одежды в одном списке.
  • 📝 Одна строка — один вариант, без пустых строк в конце файла.
  • 🔤 Имя файла без пробелов и спецсимволов — так конструкция вызова останется читаемой.
  • 🗂 Группируйте связанные файлы по подпапкам для быстрого поиска.

Синтаксис и продвинутые возможности

Базовый вызов — двойные подчёркивания вокруг имени файла: __flowers__. Расширение Dynamic Prompts дополнительно поддерживает встроенный синтаксис вариантов без файлов: {red|green|blue} выберет один из перечисленных вариантов. Фигурные скобки и wildcard-файлы можно комбинировать в одном промпте.

Полезная возможность — количественный выбор. Конструкция вида {2$$red|green|blue|yellow} подставит сразу два случайных варианта из списка. Это работает для сцен, где нужно несколько элементов одного типа, например два цвета в градиенте.

Wildcard-файлы могут ссылаться друг на друга: строка внутри одного файла может содержать вызов __другой_файл__. Так строятся иерархические шаблоны — файл «персонаж» подтягивает файлы «причёска», «одежда» и «эмоция» автоматически.

Пример структуры wildcard-файла

Содержимое файла hair.txt может выглядеть так: long black hair / short blonde hair / curly red hair / silver twin tails. Каждая строка — отдельный вариант. При вызове __hair__ в промпте будет выбрана одна из строк.

Типичные ошибки и их решение

Самая частая жалоба — текст __name__ появляется на картинке или в метаданных как есть. Причины почти всегда одни и те же: расширение не активировано галочкой, файл с таким именем отсутствует в папке wildcard, либо в имени файла опечатка. Проверка занимает минуту: откройте папку подстановок и сверьте имя файла с конструкцией в промпте посимвольно.

Вторая типичная ситуация — подстановка работает, но результат не меняется между генерациями. Здесь проверьте сид: при зафиксированном значении seed выбор варианта тоже фиксируется. Установите сид в -1 (случайный), чтобы получать разные комбинации.

☑️ Wildcard не срабатывает — что проверить

Выполнено: 0 / 5

⚠️ Внимание: имена wildcard-файлов чувствительны к регистру на Linux-системах — файл Eyes.txt и вызов __eyes__ не совпадут. На Windows это обычно не критично, но при переносе коллекции на сервер с Linux приводите имена к нижнему регистру.

Сравнение подходов к динамическим промптам

Wildcard — не единственный способ варьировать генерацию. В таблице сравним основные методы по удобству и сценариям применения.

МетодСложностьКогда уместен
Wildcard-файлыНизкаяБольшие переиспользуемые списки вариантов
Синтаксис {a|b|c}НизкаяБыстрый выбор из 2–5 вариантов прямо в промпте
Prompt matrix (X/Y/Z plot)СредняяСистематическое сравнение параметров
Ручное редактирование промптаНизкаяТочечные одиночные эксперименты

Для разовых тестов проще встроенный синтаксис с фигурными скобками. Файлы оправданы, когда список вариантов большой или используется в разных промптах — например, коллекция из сотни художественных стилей.

Практические сценарии использования

Где wildcard даёт максимум пользы? Первый сценарий — вариация персонажей: файлы с причёсками, цветами глаз, одеждой и эмоциями позволяют за один батч получить галерею разных образов при сохранении общего стиля промпта.

Второй сценарий — подбор стиля. Соберите в файл названия художественных техник или референсов, и генерация будет случайно перебирать их. Так быстрее находятся неожиданно удачные сочетания, которые вручную перебирать долго.

  • 🎨 Тестирование модели: один промпт с wildcard по стилям показывает сильные и слабые стороны чекпоинта.
  • 🖼 Генерация фонов: файлы с локациями, временем суток и погодой.
  • 👗 Дизайн персонажей: комбинаторика элементов одежды и аксессуаров.
  • 💡 Поиск вдохновения: случайные сочетания часто рождают идеи, которые не пришли бы в голову осознанно.

Начинайте с малого: создайте два-три файла по 5–10 строк и посмотрите, как меняются результаты. По мере накопления опыта коллекция будет расти естественным образом.

FAQ: частые вопросы о wildcard

Работают ли wildcard без расширения Dynamic Prompts?

В стандартной установке AUTOMATIC1111 — нет, нужно расширение. В некоторых форках и в ComfyUI обработка подстановок встроена или реализуется отдельными нодами, но синтаксис может отличаться — сверяйтесь с документацией вашего интерфейса.

Сколько строк можно поместить в один файл?

Жёсткого ограничения нет — файлы с сотнями и тысячами строк работают нормально. Учитывайте только, что при малом числе генераций редкие варианты могут просто не выпасть.

Можно ли использовать кириллицу в wildcard-файлах?

Технически да, если файл сохранён в UTF-8. Но большинство моделей Stable Diffusion обучены на английских описаниях, поэтому русские строки в промпте обычно дают слабый или непредсказуемый эффект.

Почему при фиксированном seed вариант всегда один и тот же?

Это ожидаемое поведение: сид определяет весь процесс генерации, включая выбор строки из wildcard-файла. Для разнообразия ставьте случайный сид (значение -1) или меняйте его вручную.

Можно ли комбинировать wildcard с весами токенов?

Да, конструкции вида (__subject__:1.2) работают — вес применится к подставленному значению. Также веса можно прописывать прямо в строках самого файла.