Diffusers documentation
Prompting
Prompting
Prompts menjelaskan apa yang harus dihasilkan oleh model. Prompt yang baik bersifat detail, spesifik, dan terstruktur, serta menghasilkan gambar dan video yang lebih baik.
Panduan ini menunjukkan cara menulis prompt yang efektif dan memperkenalkan teknik-teknik yang membuatnya lebih kuat.
Menulis prompt yang baik
Setiap prompt yang efektif membutuhkan tiga elemen inti.
- Subjek - apa yang ingin Anda hasilkan. Mulai prompt Anda di sini.
- Gaya - medium atau estetika. Bagaimana seharusnya tampilannya?
- Konteks - detail tentang tindakan, pengaturan, dan suasana.
Gunakan elemen-elemen ini sebagai narasi terstruktur, bukan daftar kata kunci. Model modern memahami bahasa dengan lebih baik daripada pencocokan kata kunci. Mulailah dengan sederhana, lalu tambahkan detail.
Konteks sangat penting untuk membuat prompt yang lebih baik. Coba tambahkan pencahayaan, detail artistik, dan suasana.
Jadilah spesifik dan tambahkan konteks. Gunakan istilah fotografi seperti jenis lensa, panjang fokus, sudut kamera, dan kedalaman bidang.
Coba gunakan prompt enhancer untuk membantu meningkatkan struktur prompt Anda.
Panduan dan negatif
Sebagian besar pipeline Diffusers masih mengarahkan sampling dengan classifier-free guidance dan negative_prompt opsional.
Pada pipeline keluarga Stable Diffusion, berikan guidance_scale dan negative_prompt. Nilai guidance_scale yang lebih tinggi akan mengikuti prompt dengan lebih ketat. Nilai yang terlalu tinggi dapat menghasilkan tampilan yang tidak alami atau terlalu jenuh.
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]Pada checkpoint yang lebih baru seperti Qwen-Image dan Flux, CFG klasik biasanya true_cfg_scale bersama dengan negative_prompt. Negatif tetap berlaku ketika true CFG diaktifkan (true_cfg_scale > 1 dan negative_prompt). Argumen guidance_scale mereka adalah guidance yang di-distil atau tertanam ketika transformer mendukungnya, yang tidak sama. Periksa API pipeline untuk model yang Anda muat.
Modular Diffusers dapat mengganti algoritma panduan dengan guider. Lihat Guiders.
Penimbangan prompt
Prompt weighting membuat beberapa kata lebih kuat dan yang lain lebih lemah. Ini menskalakan skor perhatian sehingga Anda dapat mengontrol seberapa besar pengaruh setiap konsep.
Diffusers menangani hal ini melalui argumen prompt_embeds dan pooled_prompt_embeds yang menerima vektor embedding teks yang telah diskalakan. Gunakan pustaka sd_embed untuk menghasilkan embedding ini. Ia juga mendukung prompt yang lebih panjang. Untuk penimbangan keluarga Stable Diffusion dengan sintaks yang lebih sederhana, Anda juga dapat menggunakan Compel.
Perpustakaan sd_embed hanya mendukung Stable Diffusion, Stable Diffusion XL, Stable Diffusion 3, Stable Cascade, dan Flux. Pemberian bobot pada prompt tidak selalu membantu pada model kelas Flux, yang memang sudah mengikuti prompt dengan ketat.
uv pip install git+https://github.com/xhinker/sd_embed.git@main
Format teks berbobot dengan pengali numerik atau tanda kurung. Semakin banyak tanda kurung, semakin kuat pembobotannya.
| format | pengali |
|---|---|
(cat) | meningkat 1,1x |
((cat)) | meningkat 1,21x |
(cat:1.5) | meningkat 1,5x |
(cat:0.5) | set weight menjadi 0.5× |
Buat prompt berbobot dan teruskan ke get_weighted_text_embeddings_sdxl untuk menghasilkan embeddings.
Anda juga dapat meneruskan prompt negatif ke
negative_prompt_embedsdannegative_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)Lewatkan embeddings ke prompt_embeds dan pooled_prompt_embeds untuk menghasilkan gambar Anda.
image = pipeline(prompt_embeds=prompt_embeds, pooled_prompt_embeds=pooled_prompt_embeds).images[0]