Técnica
Cómo escribir prompts cuando nada los reescribe
Si ninguna capa reescribe tu prompt, lo que tecleas es exactamente lo que se renderiza: tu redacción es la única variable que tienes y lo único que hay que depurar. Por eso escribir prompts se vuelve una disciplina y no una bolsa de trucos. Describe el cuadro y la luz en lugar de apilar adjetivos, cambia una cosa a la vez para saber a qué atribuir la diferencia y trata el prompt negativo como un campo que declara cada modelo, no como una costumbre: algunos lo tienen, la mayoría no.
Qué lleva de verdad una solicitud
Una solicitud de generación lleva un ID de modelo, un prompt y las opciones que ese modelo acepta: un tamaño si es imagen; si es video, una resolución, una duración y, en algunos modelos, una relación de aspecto; además de las direcciones de las imágenes de referencia que adjuntes. Esa es toda la superficie, y la referencia de la API la detalla endpoint por endpoint. Entre tu texto y el render no hay nada: ni etapa de reescritura, ni perilla de guidance, ni número de pasos. La seed y el prompt negativo están abiertos en algunos modelos y en la mayoría no; el endpoint del catálogo y la página de cada modelo te dicen cuáles. Si un modelo trae un expansor de prompts como ajuste del proveedor, se envía apagado.
Esa capa intermedia que falta explica por qué casi todos los trucos de prompt nacieron en otra parte. La documentación de generación de imágenes de OpenAI dice que su modelo "will automatically revise your prompt for improved performance", devuelve el texto reescrito en un campo revised_prompt y no documenta ninguna forma de desactivarlo. Hackear prompts no es otra cosa que negociar con un reescritor, y aquí no hay nadie con quien negociar; un generador de imágenes que no reescribe prompts desarma esa capa.
Las claves que el endpoint no define ni siquiera se leen. Mete un valor cfg o un número de pasos en el JSON y no ocurre nada, ni tampoco aparece un error. seed y negative_prompt son la excepción: se leen en los modelos que los declaran, y un modelo que no declara alguno de ellos responde 400 en vez de tragarse el campo. Conviene saberlo antes de gastar una tarde afinando un campo que nunca llegó a destino.
Cambia una sola cosa y conoce tu piso de ruido
Una comparación solo se lee cuando se movió una sola cosa. Si en la misma prueba cambias la redacción y el tamaño, la diferencia tiene dos explicaciones y ninguna forma de separarlas: esa prueba no te enseñó nada, salvo que algo pasó.
Hay una segunda fuente de variación y no es tuya. Si omites la seed, el adaptador sortea una nueva en cada solicitud, y en los modelos que no declaran seed ni siquiera existe un campo para fijarla; por eso un mismo prompt enviado dos veces no vuelve como una sola imagen. Elegir resolución y duración explica el mecanismo y por qué repetir con más calidad es un sorteo nuevo y no una ampliación. Mídelo antes de sacar conclusiones de un cambio. Corre tu versión base dos veces, mira qué tan lejos cae una de la otra y toma esa distancia como la diferencia mínima que tiene que superar un cambio de redacción. Hazlo en la opción más barata del modelo, porque cada intento gasta créditos y la página de precios indica cuánto cobra cada una.
No necesitas una libreta. El prompt se guarda literal junto a la generación y regresa en cada registro del endpoint de generaciones, así que tu historial ya es la bitácora del experimento. Copia de ahí la frase que funcionó en lugar de teclearla otra vez: volver a escribirla es un cambio que no pensabas hacer.
Describe el cuadro, no el ambiente
Apilar adjetivos le deja la composición al modelo. Melancólico, etéreo, hiperdetallado: ninguno nombra un sujeto, una posición o la dirección de la luz; expresan un deseo sobre el resultado, no describen una imagen. La guía de prompts de Hugging Face Diffusers da la regla sin rodeos: enumera sujeto, estilo y contexto y luego pide "use these elements as a structured narrative, not a keyword list", porque los modelos actuales leen lenguaje en vez de emparejar palabras clave.
Las listas largas, además, fallan de una manera documentada. En Attend-and-Excite (Chefer et al., SIGGRAPH 2023), los autores estudian lo que llaman "catastrophic neglect, where the model fails to generate one or more of the subjects from the input prompt" y reportan que el modelo también "fails to correctly bind attributes (e.g., colors) to their corresponding subjects". El problema aparece con dos sujetos y dos colores, no con diez.
Entonces escribe decisiones. Qué hay en el cuadro y dónde está, de dónde viene la luz y qué tan dura es, qué le hace el lente al fondo. Cada una se puede comprobar contra el render: ves si la luz entró por la izquierda. No puedes ver si fue etérea, de modo que esa palabra jamás te dirá si tu cambio funcionó.
No todos los modelos tienen prompt negativo
Ir directo al prompt negativo es memoria muscular de los pipelines locales, y nunca fue una manera de escribir. Es un argumento aparte que recibe el bucle de muestreo. La referencia de Diffusers define negative_prompt como "the prompt or prompts not to guide the image generation" y aclara que se ignora si no hay guidance ("ignored when not using guidance"): el campo existe porque hay un paso de guidance con una rama incondicional de la cual alejarse.
Aquí el prompt negativo solo existe en los modelos que lo declaran; en el resto, todo lo que escribas es descripción. "Sin marca de agua, sin texto" es una frase que nombra una marca de agua y un texto. Formula lo positivo: en lugar de sin sombrero, di qué lleva en la cabeza; en lugar de nada borroso, di qué está nítido y con qué rapidez se desenfoca el fondo.
Si un elemento que no quieres sobrevive a varios intentos, deja de tirar los dados. Pasa el cuadro que ya tienes a un modelo de edición como referencia y describe el cambio sobre él: es un argumento más corto y otro tipo de solicitud. El catálogo marca qué modelos leen referencias, y mantener un personaje consistente cuenta qué sostiene un adjunto que una frase no puede sostener.
Lo que ninguna redacción consigue
El video le exige más al mismo campo. Un clip se renderiza en una sola toma, así que tu frase tiene que llevar el movimiento y la cámara además del cuadro, y la cámara es justo lo que la gente olvida: si no la mencionas, el modelo la elige por ti. Convertir una imagen en video cubre ese traspaso, y llamar la API desde tu código es el mismo ciclo controlado desde un script.
Lo que ninguna forma de decirlo consigue es saltarse las reglas. La verificación automática examina el prompt contra una lista fija de categorías prohibidas, con los menores al frente; la solicitud que detecta se rechaza antes de empezar, así que no te cuesta nada. Busca categorías, no interpreta tu tono, y reformular no saca una solicitud de ellas. Los términos prohíben usar a una persona real sin su consentimiento; la verificación rechaza un nombre conocido, pero una persona común depende de los términos y no de la detección, y cambiar las palabras tampoco altera eso. Qué se permite y qué se bloquea traza la línea.
Preguntas frecuentes
¿Algo cambia mi prompt antes de que el modelo lo vea?
No. No hay etapa de reescritura, y cuando un modelo trae un expansor de prompts como ajuste del proveedor, va apagado. El texto guardado junto a tu generación es el que se renderizó, así que una frase copiada de tu historial se comporta igual que la primera vez.
¿Dónde pongo un prompt negativo?
En el campo negative_prompt de los modelos que lo declaran; la página de cada modelo y el endpoint del catálogo dicen cuáles son. Si lo mandas a un modelo que no lo declara, la solicitud responde 400 en lugar de ignorarlo. Donde no hay campo, escribe la afirmación positiva o devuelve la imagen a un modelo de edición y describe la corrección sobre ella.
¿Por qué el mismo prompt me da dos imágenes distintas?
Sin seed, el adaptador sortea una nueva en cada solicitud, y los modelos que no declaran seed no te dejan nada que fijar. En vez de pelear contra eso, mídelo: corre tu base dos veces y toma la brecha entre ambas como la diferencia mínima que debe superar un cambio de redacción.
