А АTuesday, 23 December 2025

Фішки wildcards.

Привіт привіт.

Мені здається що підтримка wildcards в Forge та Fooocus то найкраща фіча яка вже ніколи не з'явиться в інших GenAI інструментах. Я можу таку функціональність реалізувати в Pixel AI Studio, але вона швидко використає ваші кошти на АРІ-запити.((

То ж в мене всі карти знаходяться на сервері в окремій теці на які зроблені посилання:

  • /wildcards/ for Foooocus (config.txt)
  • /wildcards/ by symlink for Forge (Dynamic Prompts extension)

Згадав я про мегапак від в'єтнамських шанувальників wildcards, де промпт з wildcard посилається на інший wildcard і так далі. Як то виглядає?

Можливо так:

masterpiece,ultra realistic,32k,extremely detailed CG unity 8k wallpaper, best quality,({summer day | autumn day | winter day | spring day }),lady ,necklace ,eardrop, __*/city__, ( __*/colors__ __*/mixwear__ ) , __*/haircolor__ hair __*/hairstyle__ ,

або навіть так:


Уявіть, і це працює!))

Питання 1: мені треба в промті використати двічі myword, але в цьом випадку з карти myword випадають різні значення, а мені треба щоб воно співпало в одному промпті.

Це класична проблема роботи з вайлдкардами (wildcards). За замовчуванням кожен виклик __myword__ — це незалежний кидок кубика, тому вони й видають різні результати.

Щоб "зафіксувати" значення і використати його кілька разів в одному промпті, потрібно використати механізм змінних.

Рішення для Forge (та Fooocus, якщо встановлено Dynamic Prompts)

У більшості систем, які базуються на Stable Diffusion (як Forge, A1111), за роботу з вайлдкардами відповідає розширення Dynamic Prompts. Воно підтримує синтаксис змінних.

Тобі потрібно:

  1. При першому згадуванні присвоїти значення вайлдкарда змінній.
  2. При другому згадуванні викликати цю змінну.

Синтаксис виглядає так: ${змінна=__wildcard__}.

Приклад:

Припустимо, у файлі colors.txt є кольори (red, green, blue).

Неправильно (будуть різні кольори):

A __colors__ car and a __colors__ bike.

(Результат: A red car and a blue bike)

Правильно (буде однаковий колір):

A ${val=__colors__} car and a ${val} bike.

(Результат: A red car and a red bike)

Як це працює:

${val=__colors__} — система бере випадкове слово з файлу (наприклад, "red") і запам'ятовує його під іменем val.

${val} — система просто підставляє те, що запам'ятала раніше ("red").

Нюанс щодо Fooocus

Fooocus прагне до простоти та мінімалізму.

Якщо ви використовуєте Fooocus-MRE або форк з підтримкою Dynamic Prompts, метод вище ${val=...} спрацює ідеально. Якщо це "чистий" стандартний Fooocus, він може мати спрощений парсер вайлдкардів, який не розуміє змінні ${}.

Тому для Fooocus гарного рішення немає.(


Питання 2: в Fooocus є штатна опція щоб вичитувати карту послідовно, а як з цим в Forge?

У WebUI Forge вбудована робота з вайлдкардами базова, тому для просунутих функцій, таких як послідовне читання, майже завжди використовується розширення Dynamic Prompts. Воно, як правило, вже встановлене або його легко додати. Щоб змусити Forge брати слова з файлу по порядку (1-ше, 2-ге, 3-тє...), а не випадково, потрібно використати режим Combinatorial Generation (Комбінаторна генерація).

Ось як це зробити:

Відкрийте вкладку/секцію Dynamic Prompts (зазвичай вона внизу ліворуч, під налаштуваннями розміру зображення).

Знайдіть і поставте галочку на Combinatorial generation.

Важливий момент з кількістю (Batch Count):

Коли увімкнено цей режим, Forge ігнорує звичайний рандом і намагається створити всі можливі варіанти.

Якщо у вашому файлі __myword__ 10 слів, він створить 10 картинок (по одній на кожне слово по порядку).

Якщо ви хочете лише перші 5 слів зі списку — встановіть у налаштуваннях Dynamic Prompts ліміт Max generations (або просто зупиніть генерацію вручну).

Якщо потрібно просто "циклічно" брати слова, не генеруючи всі комбінації одразу:

У Dynamic Prompts це працює трохи складніше, ніж у Fooocus. Але комбінаторний режим — це саме той аналог.

Приклад - у вас у файлі colors.txt:

red

blue

green

Ви пишете промпт: A __colors__ car.

Вмикаєте Combinatorial generation.

Натискаєте Generate.

Forge створить чергу з 3 зображень:

A red car

A blue car

A green car

Як бути, якщо у вас кілька вайлдкардів?

Якщо у вас промпт A __color__ __animal__ (3 кольори, 3 тварини), і увімкнено Combinatorial generation, Forge згенерує 3 × 3 = 9 зображень (усі можливі пари). Це найпотужніша фішка цього режиму, якої часто бракує у Fooocus.

Тому ще раз і чому таке налаштування важливе:

Combinatorial generation - змушує систему пройтися по всіх варіантах зі списку.
Disable sorting - ще один ключовий момент. За замовчуванням програма може відсортувати твій список за алфавітом, перш ніж почати генерувати.

  • Без галочки: Якщо у файлі перший рядок "Zebra", а другий "Apple", система почне з "Apple" (бо A перша).
  • З галочкою (Disable sorting): Система піде чітко: 1-й рядок файлу, 2-й рядок, 3-й... незалежно від літери.

Тож так, це ідеальний рецепт для суворого послідовного перебору карток у Forge:

Batch count: 1

Dynamic Prompts -> Combinatorial generation: ✅ ON

Settings (Dynamic Prompts) -> Disable sortings of wildcards: ✅ ON

Ось тепер ти маєш повний контроль над тим, що і в якому порядку генерується! 🔥

Успіхів.


No comments:

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное