Inicio

generateImage — Creando Imágenes con Código

Capítulo 8: generateImage — Creando Imágenes con Código

Hasta ahora todo ha sido texto: prompts, respuestas, structured output, herramientas. Pero el AI SDK también puede generar imágenes. En este capítulo construiremos un generador de thumbnails para YouTube que demuestra el poder de combinar generación de texto con generación de imágenes.

Código Primero

Ejecuta esto y tendrás una imagen PNG en tu directorio.

¿Qué Acaba de Pasar?

  1. generateImage — Función del AI SDK para generar imágenes
  2. openai.image('gpt-image-1') — Especifica el modelo de imagen (no de texto)
  3. prompt — Descripción textual de la imagen deseada
  4. size — Dimensiones de la imagen
  5. image.base64 — La imagen codificada en base64

A diferencia de generateText que retorna strings, generateImage retorna objetos con la imagen en múltiples formatos.

Modelos de Imagen Disponibles

Comparativa de Modelos OpenAI

ModeloVelocidadCostoUso recomendado
gpt-image-1MediaMayorProducción, calidad máxima
gpt-image-1-miniRápidaMenorPreviews, iteración rápida
dall-e-3MediaMedioCompatibilidad con código existente

Parámetros de generateImage

Nota: Los modelos DALL-E no soportan aspectRatio. Usa size en su lugar.

Tamaños Disponibles

SizeAspectoUso típico
1024x1024CuadradoInstagram, perfil
1536x1024HorizontalYouTube thumbnail
1024x1536VerticalStories, Pinterest

Anatomía de la Respuesta

El objeto image siempre es la primera imagen generada. El array images contiene todas.

Pipeline Inteligente: Texto + Imagen

Un prompt directo como "thumbnail de React" genera resultados genéricos. La magia está en optimizar el prompt antes de generar:

Este patrón de pipeline es fundamental: el LLM entiende el contexto y genera prompts visuales mucho mejores que los que escribiríamos manualmente.

Sistema de Estilos

En lugar de un solo thumbnail, genera variantes con diferentes estilos:

Generación en Paralelo

Para generar los 4 estilos simultáneamente:

Usamos Promise.allSettled en lugar de Promise.all para que un error en una imagen no cancele las demás.

Redimensionando con el Cliente OpenAI

Para generar la misma imagen en diferentes formatos (YouTube, Instagram, Stories), usamos el cliente OpenAI directamente con images.edit():

Nota: images.edit() requiere el cliente OpenAI nativo (openai package), no el AI SDK. Esto es porque el AI SDK aún no expone esta funcionalidad directamente.

Proyecto Completo: Generador de Thumbnails

Combinemos todo en un módulo reutilizable:

Integrando con React Router v7

Mostrando Imágenes Base64 en React

Descarga de Imágenes desde el Navegador

Costos y Consideraciones

Precio por Imagen (OpenAI, enero 2026)

Modelo1024x10241536x1024 / 1024x1536
gpt-image-1~$0.04 USD~$0.08 USD
gpt-image-1-mini~$0.02 USD~$0.04 USD

Ejemplo de costo: Generar 4 variantes de thumbnail:

  • 4 imágenes con mini × $0.02 = $0.08 USD (~$1.50 MXN)
  • Más optimización de prompts: ~$0.01 USD

Límites de Rate

OpenAI tiene límites por minuto según tu tier. Para aplicaciones con alto volumen, implementa una cola de procesamiento.

Manejo de Errores

Resumen

ConceptoQué aprendiste
generateImage()Genera imágenes desde texto
openai.image('gpt-image-1')Modelo de imagen de OpenAI
openai.image('gpt-image-1-mini')Versión rápida y económica
image.base64Imagen codificada para web
Pipeline texto→imagenOptimizar prompts con LLM antes de generar
Promise.allSettledGeneración paralela tolerante a fallos
Cliente OpenAI nativoPara images.edit() y redimensionado

¿Cuándo usar generateImage?

Usa generateImageNO uses generateImage
Thumbnails, banners, ilustracionesFotos de personas reales
Contenido de marketingLogos con texto preciso
Variantes de productoAlto volumen sin cola
Visualizaciones de conceptosEdición compleja de fotos

En el próximo capítulo exploraremos Embeddings: cómo convertir texto en vectores numéricos para búsqueda semántica, la base de los sistemas RAG que permiten a tu aplicación "entender" documentos.

¿Ya compraste el libro?

Si compraste el libro y no encuentras tu email de descarga, ingresa tu email y te enviamos un nuevo enlace.