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?
generateImage— Función del AI SDK para generar imágenesopenai.image('gpt-image-1')— Especifica el modelo de imagen (no de texto)prompt— Descripción textual de la imagen deseadasize— Dimensiones de la imagenimage.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
| Modelo | Velocidad | Costo | Uso recomendado |
|---|---|---|---|
gpt-image-1 | Media | Mayor | Producción, calidad máxima |
gpt-image-1-mini | Rápida | Menor | Previews, iteración rápida |
dall-e-3 | Media | Medio | Compatibilidad con código existente |
Parámetros de generateImage
Nota: Los modelos DALL-E no soportan
aspectRatio. Usasizeen su lugar.
Tamaños Disponibles
| Size | Aspecto | Uso típico |
|---|---|---|
1024x1024 | Cuadrado | Instagram, perfil |
1536x1024 | Horizontal | YouTube thumbnail |
1024x1536 | Vertical | Stories, 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 (openaipackage), 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)
| Modelo | 1024x1024 | 1536x1024 / 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
| Concepto | Qué 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.base64 | Imagen codificada para web |
| Pipeline texto→imagen | Optimizar prompts con LLM antes de generar |
Promise.allSettled | Generación paralela tolerante a fallos |
| Cliente OpenAI nativo | Para images.edit() y redimensionado |
¿Cuándo usar generateImage?
| Usa generateImage | NO uses generateImage |
|---|---|
| Thumbnails, banners, ilustraciones | Fotos de personas reales |
| Contenido de marketing | Logos con texto preciso |
| Variantes de producto | Alto volumen sin cola |
| Visualizaciones de conceptos | Edició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.
