Промпт: как модель его читает

<!-- lesson: prompt -->

Урок «prompt» в группе Картинки: первые шаги списка уроков. Шагов: 13.

Чему вы научитесь

Поймёте, что модель делает с текстом, и научитесь управлять картинкой словами.

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

  • Урок продолжает Первая картинка из текста. Карточка говорит об этом; это подсказка, а не замок.
  • Ноды: CLIP Text Encode (Prompt), KSampler.
  • Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.

Шаги

Слова каждого шага, как их показывает урок. Имена нод выделены.

  1. Что модель делает с текстом (чтение)

    Модель не понимает текст так, как человек. Её учили на картинках с подписями, и она запомнила, какие слова стояли рядом с какими картинками. Ваш промпт тянет результат в сторону похожих подписей.

    Из этого следуют три вещи:

    • слово, которого не было в подписях, не сработает, как бы точно оно ни звучало;
    • промпт не приказ: каждое слово тянет в свою сторону, и сильные слова перетягивают слабые;
    • о чём вы промолчали, модель решит сама.

    Дальше вы разберёте промпт по частям на своём графе.

  2. Нужен граф с картинкой

    Этот урок продолжает граф из урока «Первая картинка из текста». На холсте должны быть две ноды CLIP Text Encode (Prompt), подключённые ко входам positive и negative ноды KSampler.

    Если их нет, сначала пройдите тот урок.

  3. Два способа читать (чтение)

    Текст читает отдельная часть модели: она превращает слова в числа. Таких частей два вида, и пишут для них по-разному.

    Первый вид читает слова и короткие фразы через запятую. Так устроены SD 1.5, SDXL и модели на их основе: Pony, Illustrious. Им подходит такой промпт: portrait of a woman, red coat, night street, rain, soft light.

    Второй вид читает связные предложения и понимает, кто что делает и что где находится. Так устроены Flux, SD 3, Qwen-Image, Wan. Им подходит такое: A woman in a red coat stands on a night street in the rain. Soft light from a shop window falls on her face.

    Какая у вас модель, видно в её карточке во вкладке «Модели»: строка «Семейство». Большинство моделей учили на английских подписях: пишите по-английски.

  4. Порядок и длина (чтение)

    Слова в начале промпта весят больше, чем в конце. Поэтому главное ставят первым: кто или что в кадре, потом что происходит, потом место, свет и стиль.

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

    Лишние слова не безвредны: каждое отнимает внимание у остальных. Десять точных слов работают лучше, чем сорок случайных.

  5. Перепишите промпт

    В поле text ноды CLIP Text Encode (Prompt), которая идёт во вход positive, напишите промпт заново: сначала главное, потом действие, место, свет. Нужно не меньше 40 знаков.

    Пример для модели первого вида: portrait of a woman, red coat, night street, rain, soft light.

  6. Вес: как выделить важное (чтение)

    Если модель упускает что-то из промпта, этому можно прибавить вес. В ComfyUI вес пишут так: (red coat:1.2). Слова в скобках получают силу 1.2 вместо обычной 1. Число меньше 1 ослабляет: (rain:0.8).

    Держите вес от 0.5 до 1.5. Выше картинка выгорает и искажается. Чаще всего хватает 1.1-1.3.

    Записи из других программ в ComfyUI не работают. <lora:name:1> ничего не подключает: LoRA добавляют отдельной нодой. BREAK, AND и квадратные скобки модель прочтёт как обычные знаки. Промпта с чужих страниц часто полны такими записями: уберите их.

    Три записи ComfyUI понимает сам. Кроме веса это embedding:name для файлов из папки embeddings и фигурные скобки: из вариантов, записанных в них через вертикальную черту, при каждом запуске берётся один. Обычные скобки, которые должны остаться в тексте, пишут с обратной чертой: \( и \).

    На модели второго вида вес действует слабо и непредсказуемо. Для них важное говорят словами и ставят в начало.

  7. Выделите одну вещь

    В том же поле text заключите в скобки самое важное и поставьте вес: например, (red coat:1.2). Вес должен быть от 0.5 до 1.5 и отличаться от 1.

    Если ваша модель второго вида, сильного действия не ждите. Шаг нужен, чтобы запомнить запись: она встретится в чужих промптах.

  8. Второй текст: чего быть не должно (чтение)

    Текст, который идёт во вход negative, работает иначе, чем первый. На каждом шаге модель делает два наброска: по вашему промпту и по второму тексту. Потом она отходит от второго наброска в сторону первого.

    Поэтому во втором тексте называют сами вещи, от которых надо уйти: blurry, extra fingers, watermark, text. Писать там «нет» не нужно.

    В основном промпте отрицания вредны. Напишете no hat, и шляпа, скорее всего, появится: слово hat тянет к шляпам, а no почти ничего не весит. Всё, чего быть не должно, переносите во второй текст.

    Длинный второй текст не лучше короткого. Называйте то, что действительно лезет в ваши картинки.

  9. Заполните второй текст

    В поле text ноды, которая идёт во вход negative, перечислите через запятую два или три дефекта. Например: blurry, extra fingers, watermark.

    Потом сравните картинки с этим текстом и без него.

  10. cfg: насколько строго слушать текст (чтение)

Поле cfg в сэмплере задаёт, как далеко модель уходит от второго наброска к первому. Чем больше число, тем строже она следует промпту.

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

Обычные значения:

  • SD 1.5: 7-8;
  • SDXL, Pony, Illustrious: 5-7;
  • ускоренные модели и ускоряющие LoRA: 1-2;
  • Flux: 1. Строгость у него задаёт отдельная нода, а не это поле.

При cfg 1 второй набросок не делается совсем. Текст из входа negative тогда не действует, что бы в нём ни стояло. Точные числа автор пишет на странице модели: начните с них.

  1. seed: одна правка за раз (чтение)

Поле seed задаёт шум, с которого начинается картинка. То же число при тех же настройках и том же промпте даёт ту же картинку.

Этим пользуются, чтобы понять, что сделала правка. Оставьте seed прежним, поменяйте в промпте одну вещь и сравните. Если менять сразу и число, и слова, не узнать, что подействовало.

В ComfyUI под полем seed стоит переключатель control_after_generate. При значении randomize число меняется после каждого запуска, при fixed остаётся.

Когда промпт готов, меняйте seed, чтобы получить разные картинки по одному промпту. Часть из них не удаётся просто случайно: это нормально.

  1. Если картинка не слушается (чтение)

Что проверять и в каком порядке:

  • модель упускает часть промпта: переставьте это ближе к началу, уберите лишние слова, прибавьте вес до 1.2-1.3;
  • цвета и детали перепутались между предметами: модели первого вида читают слова без связи между ними. Опишите каждый предмет отдельной фразой и уберите лишние цвета;
  • картинка выгорела: слишком большой cfg или вес выше 1.5;
  • картинка мутная и вялая: слишком маленький cfg или мало шагов в поле steps;
  • лишние руки, две головы, удвоенные фигуры: размер больше того, на котором училась модель. Для SD 1.5 это 512, для SDXL 1024;
  • второй текст ничего не меняет: проверьте, что cfg больше 1;
  • ничего не помогает: смените seed. Потом проверьте по карточке модели, что промпт написан в её манере.
  1. Приложение читает промпты вместе с вами (чтение)

Кнопка «Проверить» на верхней панели читает промпты графа так, как их прочтёт ComfyUI. Она скажет, если в тексте остались чужие записи, не сошлись скобки, вес слишком велик, одно и то же стоит в обоих текстах или второй текст не действует из-за cfg 1. Это советы, а не ошибки: граф запустится и с ними.

Карточка модели во вкладке «Модели» показывает то, что записал автор: слова, которые включают LoRA, силу, которую он советует, и промпты, по которым он делал свои примеры. Лучше всего учиться на чужом удачном промпте: скопируйте его и меняйте по одной вещи.

Что проверяет урок

Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:

  • Шаг 2, Нужен граф с картинкой:
    • нода CLIP Text Encode (Prompt).
    • нода CLIP Text Encode (Prompt).
    • нода KSampler.
    • CONDITIONING ноды CLIP Text Encode (Prompt) (промпт) во вход positive ноды KSampler.
    • CONDITIONING ноды CLIP Text Encode (Prompt) (негатив) во вход negative ноды KSampler.
  • Шаг 5, Перепишите промпт:
    • text ноды CLIP Text Encode (Prompt) (промпт): не меньше 40 знаков и 4 настоящих слов, без отрицаний вроде «no hat».
  • Шаг 7, Выделите одну вещь:
    • text ноды CLIP Text Encode (Prompt) (промпт): есть вес в форме ComfyUI (слова:1.2), от 0.5 до 1.5 и не 1.
  • Шаг 9, Заполните второй текст:
    • text ноды CLIP Text Encode (Prompt) (негатив): не меньше 5 знаков, не копия поля text ноды CLIP Text Encode (Prompt) (промпт).

Частые ошибки

  • Вес больше 1.5 (шаг его не примет) или ровно 1 (ничего не даёт).
  • Писать no hat в основном промпте вместо hat в негативном.
  • Ждать действия негативного промпта при cfg 1.
  • На модели, читающей предложения, ждать сильного действия от веса.

Что дальше

Этот урок продолжают: Pony и Illustrious: теги вместо предложений.

См. также

Страница перенесена из wiki репозитория приложения (docs/wiki/lessons/Prompt.ru.md, ревизия b8e3f71). То же руководство встроено в приложение: «Справка ▸ Руководство».

Чтобы обновить её, выполните npm run import, а затем npm run build в папке сайта.