Diffusers documentation

Prompting

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Prompting

Los prompts describen lo que un modelo debe generar. Los buenos prompts son detallados, específicos y estructurados, y generan mejores imágenes y videos.

Esta guía te muestra cómo escribir prompts efectivos y presenta técnicas que los hacen más sólidos.

Escribir buenos prompts

Todo prompt eficaz necesita tres elementos esenciales.

  1. Sujeto: lo que quieres generar. Comienza tu indicación aquí.
  2. Estilo: el medio o la estética. ¿Cómo debería verse?
  3. Contexto: detalles sobre las acciones, el escenario y el estado de ánimo.

Utiliza estos elementos como una narrativa estructurada, no como una lista de palabras clave. Los modelos modernos comprenden mejor el lenguaje que el simple emparejamiento de palabras clave. Comienza de forma sencilla y luego añade detalles.

El contexto es especialmente importante para crear mejores prompts. Prueba a añadir iluminación, detalles artísticos y ambiente.

gato adorable descansando sobre una hoja en una piscina durante una tranquila tarde de verano, en estilo de arte lofi, ilustración.
Un gato adorable se relaja sobre una hoja flotante en una piscina reluciente durante una tranquila tarde de verano. Reflejos claros ondulan sobre el agua, mientras la luz del sol proyecta destellos suaves y delicados. La ilustración es detallada y pulida, con líneas elegantes y colores armoniosos, evocando un ambiente lofi relajante, sereno y caprichoso, inspirado en el anime y visualmente reconfortante.

Sé específico y añade contexto. Utiliza términos de fotografía como tipo de lente, distancia focal, ángulos de cámara y profundidad de campo.

Prueba un prompt enhancer para ayudarte a mejorar la estructura de tu prompt.

Guía y negativos

La mayoría de las pipelines de Diffusers aún dirigen el muestreo con classifier-free guidance y un negative_prompt opcional.

En las pipelines de la familia Stable Diffusion, pasa guidance_scale y negative_prompt. Un guidance_scale más alto sigue el prompt con mayor fidelidad. Valores demasiado altos pueden resultar poco naturales o con saturación excesiva.

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]

En puntos de control más recientes, como Qwen-Image y Flux, el CFG clásico suele ser true_cfg_scale junto con negative_prompt. Los negativos siguen aplicándose cuando el CFG verdadero está habilitado (true_cfg_scale > 1 y un negative_prompt). Su argumento guidance_scale es una guía destilada o integrada cuando el transformador lo admite, lo cual no es lo mismo. Consulta la API de la pipeline para el modelo que cargues.

Los Diffusers modulares pueden reemplazar el algoritmo de guía con un guider. Consulte Guiders.

Pesos de los prompts

El ponderado de prompts hace que algunas palabras sean más fuertes y otras más débiles. Escala las puntuaciones de atención para que controles la influencia que tiene cada concepto.

Diffusers gestiona esto mediante los argumentos prompt_embeds y pooled_prompt_embeds, que aceptan vectores de incrustación de texto escalados. Utilice la biblioteca sd_embed para generar estas incrustaciones. También admite prompts más largos. Para el ponderado de la familia Stable Diffusion con una sintaxis más simple, también puede utilizar Compel.

La biblioteca sd_embed solo es compatible con Stable Diffusion, Stable Diffusion XL, Stable Diffusion 3, Stable Cascade y Flux. La ponderación de prompts no siempre resulta útil en modelos de la clase Flux, que ya siguen las instrucciones de manera muy cercana.

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

Formatea texto ponderado con multiplicadores numéricos o paréntesis. Cuantos más paréntesis, mayor es la ponderación.

formatmultiplicador
(cat)aumentar 1,1 veces
((cat))aumentar 1,21 veces
(cat:1.5)aumentar 1,5 veces
(cat:0.5)establecer el peso en 0,5×

Cree un prompt ponderado y páselo a get_weighted_text_embeddings_sdxl para generar embeddings.

También puedes pasar prompts negativos a negative_prompt_embeds y 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)

Pasa los embeddings a prompt_embeds y pooled_prompt_embeds para generar tu imagen.

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