Diffusers documentation

Prompting

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Prompting

Les prompts décrivent ce qu'un modèle doit générer. De bons prompts sont détaillés, précis et structurés, et ils produisent de meilleures images et vidéos.

Ce guide vous montre comment rédiger des prompts efficaces et présente des techniques pour les renforcer.

Rédiger de bons prompts

Tout prompt efficace nécessite trois éléments fondamentaux.

  1. Sujet - ce que vous souhaitez générer. Commencez votre invite ici.
  2. Style - le médium ou l'esthétique. À quoi devrait-il ressembler ?
  3. Contexte - détails sur les actions, le décor et l'ambiance.

Utilisez ces éléments comme un récit structuré, et non comme une liste de mots-clés. Les modèles modernes comprennent mieux le langage qu’une simple correspondance de mots-clés. Commencez simple, puis ajoutez des détails.

Le contexte est particulièrement important pour créer de meilleurs prompts. Essayez d’ajouter des détails sur l’éclairage, des éléments artistiques et l’ambiance.

Un adorable chat se prélassant sur une feuille dans une piscine lors d'un après-midi d'été paisible, dans un style artistique lofi, illustration.
Un adorable chat se détend sur une feuille flottant dans une piscine scintillante lors d'un après-midi d'été paisible. Des reflets clairs ondulent à la surface de l'eau, tandis que la lumière du soleil projette des reflets doux et lisses. L'illustration est détaillée et soignée, avec des lignes élégantes et des couleurs harmonieuses, évoquant une ambiance lofi relaxante, sereine et fantaisiste, inspirée de l'anime et visuellement apaisante.

Soyez précis et ajoutez du contexte. Utilisez des termes photographiques tels que le type d’objectif, la focale, les angles de prise de vue et la profondeur de champ.

Essayez un amplificateur de prompt pour vous aider à améliorer la structure de votre prompt.

Guidage et négatifs

La plupart des pipelines Diffusers pilotent encore l'échantillonnage avec le classifier-free guidance et un negative_prompt facultatif.

Sur les pipelines de la famille Stable Diffusion, passez guidance_scale et negative_prompt. Une valeur plus élevée de guidance_scale suit le prompt plus fidèlement. Des valeurs trop élevées peuvent donner un rendu artificiel ou sur-saturé.

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]

Sur les points de contrôle plus récents tels que Qwen-Image et Flux, le CFG classique est généralement true_cfg_scale associé à negative_prompt. Les négatifs s’appliquent toujours lorsque le CFG réel est activé (true_cfg_scale > 1 et un negative_prompt). Leur argument guidance_scale correspond à un guidage distillé ou intégré lorsque le transformeur le prend en charge, ce qui n’est pas la même chose. Consultez l’API du pipeline pour le modèle que vous chargez.

Les Diffusers modulaires peuvent remplacer l'algorithme de guidage par un guider. Voir Guider.

Pondération des prompts

Le pondération des prompts rend certains mots plus forts et d'autres plus faibles. Il met à l'échelle les scores d'attention afin que vous puissiez contrôler l'influence de chaque concept.

Diffusers gère cela grâce aux arguments prompt_embeds et pooled_prompt_embeds, qui acceptent des vecteurs d’embeddings de texte mis à l’échelle. Utilisez la bibliothèque sd_embed pour générer ces embeddings. Elle prend également en charge des prompts plus longs. Pour un pondération de la famille Stable Diffusion avec une syntaxe plus simple, vous pouvez également utiliser Compel.

La bibliothèque sd_embed ne prend en charge que Stable Diffusion, Stable Diffusion XL, Stable Diffusion 3, Stable Cascade et Flux. Le pondération des prompts n'aide pas toujours sur les modèles de type Flux, qui suivent déjà les prompts de près.

uv pip install git+https://github.com/xhinker/sd_embed.git@main

Formatez le texte pondéré avec des multiplicateurs numériques ou des parenthèses. Plus il y a de parenthèses, plus la pondération est forte.

formatmultiplier
(cat)augmenter de 1,1x
((cat))augmenter de 1,21x
(cat:1.5)augmenter d'un facteur 1,5
(cat:0.5)fixer le poids à 0,5×

Créez un prompt pondéré et transmettez-le à get_weighted_text_embeddings_sdxl pour générer des embeddings.

Vous pouvez également passer des prompts négatifs à negative_prompt_embeds et negative_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)

Transmettez les embeddings à prompt_embeds et pooled_prompt_embeds pour générer votre image.

image = pipeline(prompt_embeds=prompt_embeds, pooled_prompt_embeds=pooled_prompt_embeds).images[0]
Update on GitHub