Generar una imagen para campaña

Resumen

Aprender a generar imágenes con la API de OpenAI te permite integrar la creación de assets visuales como una feature dentro de tu producto, no como una app de arte aislada. Si construyes campañas o herramientas de marketing con inteligencia artificial, este flujo te muestra cómo pasar de una idea a una imagen renderizada en el navegador y guardada en tu directorio.

La idea central es sencilla: usamos el endpoint de generación de imágenes de OpenAI para producir material promocional a partir de un brief estructurado. Y aquí viene lo interesante: el mismo sistema genera primero el brief desde una idea corta y luego convierte ese brief en una imagen lista para usar.

Qué endpoint uso para crear imágenes con OpenAI

Los modelos de imágenes son distintos a los de generación de texto, así que el endpoint también cambia. En lugar del típico llamado de chat, aquí trabajamos con client.images.generate [00:47].

La documentación de OpenAI entrega un ejemplo mínimo que sirve como referencia directa. Necesitas importar tres piezas clave para que todo funcione:

  • base64 para decodificar la imagen que llega codificada.
  • El SDK de OpenAI, que instancias como una variable de cliente.
  • Una variable para capturar el llamado al endpoint de generación.

Dentro del llamado defines los parámetros que controlan el resultado. El modelo del ejemplo es GPT Image, el prompt describe lo que quieres, y hay dos parámetros más que conviene distinguir.

¿Cuántas imágenes puedo generar por llamado? El parámetro N controla el número de imágenes y es opcional: acepta un mínimo de 1 y un máximo de 10. Si no lo defines, se genera una sola imagen.

El tamaño de la imagen, en cambio, no es opcional: siempre tienes que marcarlo [01:24].

Cómo leo y renderizo la imagen que devuelve la API

La respuesta no es la imagen directamente, sino un objeto grande con varios datos. Entender su estructura es lo que te permite mostrar la parte correcta.

Ese objeto incluye la fecha de creación, el parámetro data con la imagen codificada en base64, y un objeto usage con el detalle de tokens [02:10]. Ahí puedes ver cuántos tokens entraron, cuántos salieron y el conteo específico de image tokens.

Para convertir esa respuesta en un archivo visible, la documentación recomienda un flujo concreto:

  1. Define una variable, por ejemplo image_bytes, que decodifique con base64 el campo b64_json del primer elemento de image.data.
  2. Abre un archivo output.png, que es el nombre del archivo generado.
  3. Escribe esos bytes en el archivo para tenerlo en tu carpeta.

Después de escribir el archivo local, el paso extra es pedirle al servidor que lo renderice también en el navegador. Así no queda solo en disco.

¿Qué es base64 en este contexto? Es el formato en el que la API envía la imagen: texto codificado en lugar de un archivo binario. Lo decodificas para reconstruir la imagen real y guardarla como PNG.

Cómo integro la generación de imágenes en el código del proyecto

El trabajo se reparte entre el cliente de OpenAI y el servidor. En el archivo del cliente importamos base64 justo debajo del sistema operativo y creamos la función que genera la imagen [03:00].

Esa función, ubicada debajo de la de analizar imagen de referencia, recibe como parámetro un brief del tipo campaign_brief que ya definimos en clases anteriores. El prompt le pide crear una imagen promocional con título, objetivo, audiencia y tono, con un estilo moderno, claro, profesional y usable en redes sociales.

Algo importante del diseño: si el brief no recibe algún dato, ese campo queda nulo o vacío. El prompt solo suma las partes que llegan como parámetro.

El llamado real usa client.images.generate con el modelo GPT Image 1, el prompt armado y el tamaño definido. La lógica de lectura del objeto es la misma que entrega la documentación: convertir el resultado a URL y luego a imagen, dejando el archivo en el directorio.

Qué cambios necesita el servidor y el home

Para exponer la función hacen falta ajustes en el server. Debajo del endpoint de analizar imagen agregamos uno nuevo para generar imagen [04:10].

Este endpoint recibe una idea vía formulario y ejecuta dos pasos encadenados:

  • Genera un brief estructurado a partir de la idea.
  • Pasa ese brief a la función de generación de imagen.

Después importamos la nueva función generar_imagen_de_campaña desde app, leemos el archivo generado y lo insertamos en un bloque HTML con un H1 de título y el render de la imagen. Finalmente agregamos el nuevo formulario al render del home para que aparezca al ejecutar el servidor.

Cómo funciona el flujo completo en el navegador

Con el servidor corriendo, el home muestra la última cajita del formulario: generar una imagen para campaña [05:20]. Como el brief se genera internamente, no necesitas pasarlo tú.

Un ejemplo real del flujo: escribes "una imagen para una campaña de un meetup en Buenos Aires" y das clic en generar. Detrás ocurren los dos procesos: primero se arma el brief detallado desde esa idea, luego se envía al endpoint con el modelo GPT Image 1 para producir la imagen.

El resultado tiene doble salida:

  • Muestra la imagen en el navegador junto al título del HTML.
  • Guarda la imagen en el directorio del repositorio como output.png.

Lo curioso del resultado es la inteligencia del modelo. Aunque no le pasamos fecha ni hora, agrega esos datos como placeholder para que después los ajustes tú. Y como contexto visual coloca el obelisco de la avenida 9 de Julio y un call to action de "regístrate" [06:40].

Esa imagen no queda efímera. Al estar guardada como archivo puedes reutilizarla, almacenarla o enviarla a una base de datos, lo que necesites para tu campaña.

¿Ya probaste integrar la generación de imágenes en tu propio proyecto? Cuéntame en los comentarios qué assets visuales te gustaría automatizar.