Справка по синтаксису промптов

/ai/

https://rentry.org/nai-speedrun
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features
https://journal.tinkoff.ru/stable-diffusion/
https://stable-diffusion-art.com/prompt-guide/
https://andrewongai.gumroad.com/l/beginners-guide-to-stable-diffusion-ebook (надо купить)

Сила тега (Attention/emphasis)

Использование () повышает приоритет и значимость тега, а [] уменьшает. Нейронка может воспринять такое усиление тега даже слишком буквально (смотри пик ниже). Скобочки можно вкладывать друг-в-друга. Но гораздо удобнее выделять нужные теги и менять их вес при помощи ctrl+ вверх/вниз чтобы выставлять числа.

(тег) - увеличивает силу тега в 1.1 раз
((тег)) - увеличивает силу тега в 1.21 раз (= 1.1 * 1.1)
[тег] - уменьшает силу тега в 1.1 раз
(тег:1.5) - увеличивает силу тега в 1.5 раза
(тег:0.25) - уменьшает силу тега в 4 раза (= 1 / 0.25)
\(тег\) - экранирование скобок при помощи обратного слеша необходимо если скобки должны являться частью тега, например, при указании имени персонажа с указанием тайтла, в соответствии с его тегом на бурах. Делай так: rem \(re:zero\), не так rem (re:zero).

Эмбеддинги и дополнительные сети

Embeddings

Для применения эмбеддингов необходимо указать имя файла эмбеддинга без расширения в промпте таким же образом, как указываешь обычный тег (для использования эмбеддинга "bad-hands-5.pt" в промпте укажи bad-hands-5). Так же для эмбеддингов можно настраивать веса при необходимости, по аналогии с обычными тегами, например (bad-hands-5:0.8).

Если всё сделал правильно, то информация об использованном эмбеддинге будет отображаться рядом с инфой о генерации.

LoRA

Используйте синтаксис <lora:имя_файла:сила> или <lora:имя_файла> для подключения лоры напрямую в промпте, где имя_файла это имя файла с лорой без указания расширения, а сила это число (в большинстве случаев в диапазоне от 0 до 1, но возможны как отрицательные значения, так и значения, превышающие единицу) описывающее как сильно лора должна влиять на итоговый результат. Лоры нельзя использовать в качестве негативного промпта, но можно использовать с отрицательным весом в качестве позитивного промпта. В случае, если вы не указали силу лоры, она будет равна 1.

LyCORIS

Для подключения ликорисов (LoCon, LoHa, LoKr, DyLoRA) необходимо использовать синтаксис <lyco:имя_файла:сила> или <lyco:имя_файла>. Все особенности использования лор, описанные пунктом выше, являются применимыми и для ликорисов.

Для актуальной версии автоматика ликорисы работают без каких-либо плагинов.

Dynamic Prompts

Требуется плагин

Синтаксис вайлдардов не поставляется в автоматике по умолчанию, для их использования необходимо установить плагин SD Dynamic Prompts, который проще всего поставить через панель расширений, встроенную в автоматик.

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

Более подробное описание синтаксиса Dynamic Prompts можно найти в официальной документации. Данный документ покрывает только наиболее востребованную часть синтаксиса.


Inline

{option1 | option2 | option3}

С равной долей вероятности будет выбран вариант 1, 2 или 3.


{5::summer | 1::autumn | 3::winter | 1::spring}

Задание распределения вероятностей - вариант с наибольшим числом в префиксе будет выпадать чаще. Если не указать одно из чисел, это будет интерпретировано как указание единицы в качестве веса.


{2$$Biba | Boba | Ilon Mask}

Выбор двух и более опций из нескольких вариантов, которые будут разделены запятой. Данный пример может вернуть один из следующих промптов (порядок элементов может быть произвольным):

  • Biba, Boba
  • Biba, Ilon Mask
  • Boba, Ilon Mask
{2$$ and $$Biba | Boba | Ilon Mask}

Аналогично вариану выше, но между двойными символами $ мы указываем свою строку для разделения. Данный пример может вернуть один из следующих промптов (порядок элементов может быть произвольным):

  • Biba and Boba
  • Biba and Ilon Mask
  • Boba and Ilon Mask

Wildcards

Описанные в текстовых файлах вайлдкарды могут использоваться для рандомизации запроса. Каждая новая строка считается отдельным вариантом из которых происходит выбор.

pose.txt:

1
2
3
4
sitting
standing
lying
leaning forward

Вызов __pose__ в запросе вернёт одну случайную позу из списка.


Так же текстовые вайлдкарды могут использоваться как синонимы к длинным кускам промптам.

destroyed-church.txt

girl explores ruins of church, broken stained glass, deserted spaces, detailed background

Вызов __destroyed-church__ вернёт всю строку целиком.

Поскольку вайлдкарды поддерживают вызов лор/ликорисов, то вы можете
Персонажи

Стиле-лоры

Сцены

Теги качества


__pose__

Используется для получения вайлдкарда из файла. Список файлов с вайлдардами по умолчанию хранится в директории %автоматик%/extensions/sd-dynamic-prompts/wildcards.


__places/*__
1
2
3
4
5
6
7
8
wildcards
├seasons
└places
 ├indoors.txt
 ├outdoors.txt
 └special
    ├abstract.txt
    └space.txt

В данном примере может быть быть выбран варинт indoors.txt, либо outdoors.txt. Вложенные директории не проверяются.

__characters/**/*__
wildcards
├seasons
└characters
  ├male
  └female
    ├evangelion
    └konosuba
      ├aqua.txt
      ├darkness.txt
      └megumin.txt

В данном случае может быть выбран любой вариант, находящийся напрямую в директории characters, либо во вложенной директории.

Prompt editing

Extra Networks

Prompt editing не позволяет динамически переключать дополнительные сети, такие как лоры/ликорисы, а, так же, не позволяет переключать их веса. Такой функционал может быть добавлен при помощи плагина stable-diffusion-webui-composable-lora.

Данный синтаксис позволяет динамически менять промпт в промежутках между отдельными шагами сэмплера (Sampling Steps). В качестве аргумента when во всех примерах указывается либо целочисленное число шагов, после которого происходит переключение запросов, либо указывается число процентов (в виде дробного числа диапазоном от 0 до 1), которое описывает, через сколько процентов шагов произойдёт переключение запроса.


[from:to:when]

Данный синтаксис добавляет в запрос строку from, которая будет заменена на строку to через when шагов.

Для примера, сгенерируем картинку с Sampling Steps = 30, содержащую следующий запрос:
[__backgrounds/autumn__:__backgrounds/destroyed-church__:VAR]

В зависимости от значения VAR, мы получим координально-отличающиеся изображения:

[Открыть картинку]

Определения использованных вайлдкардов в примере:
__backgrounds/autumn__ = autumn, falling yellow leaves, park with trees
__backgrounds/destroyed-church__ = girl explores ruins of church, broken stained glass, deserted spaces

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

0 - мы полность игнорируем запрос на осенний пейзаж и начинаем запрашивать церковь с первого кадра
5 - начинаем запрашивать церковь с пятого шага; как видно, следы осеннего пейзажа полностью пропали
10 - запрашиваем церковь начиная с десятого кадра; наиболее удачный вариант - на изображении присутствуют составляющие обоих запросов
15-30 - картинка с осенним пейзажом была сформирована, и нейронка не смогла перестроить картинку под церковь

Данная конструкция может быть использована для того, чтобы задать общую композицию через запрос from и отдельно описать детали через запрос to.


[to:when]

Добавляет to в запрос через when шагов.


[from::when]

Удаляет from из запроса через when шагов.


[first|second]

Чередует между собой first и second на каждом шаге.

Так же возможно использование более чем двух опций за раз, по типу [first|second|third|fourth]. Для это случая порядок запросов будет first -> second -> third -> fourth -> first и так по кругу.

Дополнительные операторы

BREAK

Искльзование ключевого слова BREAK (обязательно в верхнем регистре) заполняет текущий чанк пустыми символами. Если вы начнёте писать текст после слова BREAK, то это приведет к созданию нового чанка.

AND

TODO

Edit Report
Pub: 18 May 2023 19:34 UTC
Edit: 16 Aug 2023 22:53 UTC
Views: 329