Diffusers documentation
Prompting
Prompting
Prompts descrevem o que um modelo deve gerar. Bons prompts são detalhados, específicos e estruturados, e geram imagens e vídeos melhores.
Este guia mostra como escrever prompts eficazes e apresenta técnicas que os tornam mais fortes.
Escrevendo bons prompts
Todo prompt eficaz precisa de três elementos centrais.
- Assunto - o que você deseja gerar. Comece seu prompt aqui.
- Estilo - o meio ou a estética. Como deve ser a aparência?
- Contexto - detalhes sobre ações, cenário e humor.
Use esses elementos como uma narrativa estruturada, não como uma lista de palavras-chave. Modelos modernos compreendem melhor a linguagem do que a correspondência de palavras-chave. Comece simples e, em seguida, adicione detalhes.
O contexto é especialmente importante para criar prompts melhores. Tente adicionar iluminação, detalhes artísticos e atmosfera.
Seja específico e adicione contexto. Use termos de fotografia, como tipo de lente, distância focal, ângulos da câmera e profundidade de campo.
Experimente um prompt enhancer para ajudar a melhorar a estrutura do seu prompt.
Orientação e negativos
A maioria dos pipelines do Diffusers ainda controla a amostragem com classifier-free guidance e um negative_prompt opcional.
Em pipelines da família Stable Diffusion, passe guidance_scale e negative_prompt. Valores maiores de guidance_scale seguem o prompt com mais fidelidade. Valores muito altos podem resultar em aparência não natural ou super saturada.
import torch
from diffusers import DiffusionPipeline
pipeline = DiffusionPipeline.from_pretrained(
"stable-diffusion-v1-5/stable-diffusion-v1-5", dtype=torch.float16, device_map="cuda" # or "mps", "xpu", "cpu"
)
image = pipeline(
prompt="a cozy reading nook with afternoon light",
negative_prompt="blurry, low quality, distorted",
guidance_scale=7.5,
).images[0]Em checkpoints mais recentes, como Qwen-Image e Flux, o CFG clássico geralmente é true_cfg_scale junto com negative_prompt. Os negativos ainda se aplicam quando o true CFG está habilitado (true_cfg_scale > 1 e um negative_prompt). O argumento guidance_scale é um guidance destilado ou embutido quando o transformer o suporta, o que não é a mesma coisa. Verifique a API do pipeline para o modelo que você carrega.
Modular Diffusers pode substituir o algoritmo de orientação por um guiar. Veja Guias.
Ponderação de prompts
O ponderamento de prompts torna algumas palavras mais fortes e outras mais fracas. Ele escala as pontuações de atenção para que você controle a influência de cada conceito.
Diffusers lida com isso por meio dos argumentos prompt_embeds e pooled_prompt_embeds, que aceitam vetores de incorporação de texto escalados. Use a biblioteca sd_embed para gerar essas incorporações. Ele também suporta prompts mais longos. Para ponderação de famílias Stable Diffusion com uma sintaxe mais simples, você também pode usar Compel.
A biblioteca sd_embed suporta apenas Stable Diffusion, Stable Diffusion XL, Stable Diffusion 3, Stable Cascade e Flux. A ponderação de prompts nem sempre é útil em modelos da classe Flux, que já seguem os prompts de perto.
uv pip install git+https://github.com/xhinker/sd_embed.git@main
Formate texto ponderado com multiplicadores numéricos ou parênteses. Mais parênteses significam ponderação mais forte.
| format | multiplicador |
|---|---|
(cat) | aumentar em 1,1x |
((cat)) | aumentar em 1,21x |
(cat:1.5) | aumentar em 1,5x |
(cat:0.5) | defina o peso para 0,5× |
Crie um prompt ponderado e passe-o para get_weighted_text_embeddings_sdxl para gerar embeddings.
Você também pode passar prompts negativos para
negative_prompt_embedsenegative_pooled_prompt_embeds.
import torch
from diffusers import DiffusionPipeline
from sd_embed.embedding_funcs import get_weighted_text_embeddings_sdxl
pipeline = DiffusionPipeline.from_pretrained(
"Lykon/dreamshaper-xl-1-0", dtype=torch.bfloat16, device_map="cuda" # or "mps", "xpu", "cpu"
)
prompt = """
A (cute cat:1.4) lounges on a (floating leaf:1.2) in a (sparkling pool:1.1) during a peaceful summer afternoon.
Gentle ripples reflect pastel skies, while (sunlight:1.1) casts soft highlights. The illustration is smooth and polished
with elegant, sketchy lines and subtle gradients, evoking a ((whimsical, nostalgic, dreamy lofi atmosphere:2.0)),
(anime-inspired:1.6), calming, comforting, and visually serene.
"""
prompt_embeds, _, pooled_prompt_embeds, *_ = get_weighted_text_embeddings_sdxl(pipeline, prompt=prompt)Passe os embeddings para prompt_embeds e pooled_prompt_embeds para gerar sua imagem.
image = pipeline(prompt_embeds=prompt_embeds, pooled_prompt_embeds=pooled_prompt_embeds).images[0]