IT18 de agosto de 2026

Nuestro canal de contenido de IA funciona con GPT-5.6 — y genera menos imágenes que antes

Por Andrea Borghi
Nuestro canal de contenido de IA funciona con GPT-5.6 — y genera menos imágenes que antes

Nuestro canal de contenido de IA funciona con GPT-5.6 — y genera menos imágenes que antes

Cada prompt de texto en el canal de contenido de Green Yoga Inc ahora se dirige a GPT-5.6. Esa parte es un cambio de una línea por archivo. La parte que merece la pena comentar es lo que ocurrió con la generación de imágenes, que eliminamos por completo del canal.

Dónde se elige realmente el modelo

Los prompts viven en ai-prompts/ como archivos de texto plano con una cabecera, nunca como literales de cadena en el código fuente de Lambda. Hoy hay 19, además de un manifiesto JSON para lotes de imágenes puntuales. Quince llevan MODEL: gpt-5.6.

Dos no lo llevan, a propósito:

  • 21-content-translation.txt sigue en gpt-5.4-mini. Traduce el sitio a ocho idiomas, y es la carga de trabajo en la que el volumen importa más que el último incremento de calidad. Una re-traducción completa de todo cuesta unos diez céntimos.
  • Los tres archivos de prompt gptimage-* no llevan ningún encabezado MODEL:, porque nada en la Lambda los envía ya a OpenAI. Más sobre esto abajo.

Ambas Lambdas — ai-content-engine y yoga-script — resuelven lo que diga la cabecera a través de normalizeModel():

function normalizeModel(raw?: string): string {
  if (!raw) return "gpt-5.6";
  // Legacy GPT-5.x ids -> current flagship
  if (m === "gpt-5" || m === "gpt-5.1" || ... || m === "gpt-5.5" || m === "gpt-image-1.5") {
    return "gpt-5.6";
  }
  if (m === "gpt-4o" || m === "gpt4o") return "gpt-4o";
  return m;
}

Cualquier id heredado — gpt-5 hasta gpt-5.5, y el antiguo gpt-image-1.5 — se reduce a gpt-5.6. Un archivo de prompt que nadie ha tocado en seis meses no puede llamar a un endpoint obsoleto; en silencio obtiene el modelo insignia actual. gpt-4o y gpt-4o-mini pasan intactos, porque una ruta de código sigue necesitando deliberadamente gpt-4o.

Ambas Lambdas hablan con Chat Completions

La generación de texto va a POST /v1/chat/completions desde ambas Lambdas. Si lees nuestra publicación de abril, eso es una marcha atrás: habíamos consolidado sobre la API de Responses. Volvimos atrás. Chat Completions es la superficie aburrida y bien entendida para lo que realmente hacen estas dos funciones, que es tomar un prompt del sistema y un prompt del usuario y devolver prosa.

Lo único que sigue llamando a POST /v1/responses es scripts/generate-pose-images.mjs, un script de desarrollo ejecutado manualmente desde una estación de trabajo. Usa la herramienta image_generation en gpt-5.6 a 1024x1024. Eso es un trabajo por lotes local, no tráfico del navegador, y llama a OpenAI directamente a propósito.

El Yoga Sequence Builder presupone su propio tiempo

El Yoga Sequence Builder genera scripts de enseñanza a través de la Lambda yoga-script, impulsada por 05-yoga-script-generator.txt en GPT-5.6. La generación de scripts es lenta y variable, así que la Lambda dedica la mayor parte de su lógica a la aritmética más que al prompting:

  • un único intento principal está limitado a siete minutos, para que una llamada lenta no se coma toda la invocación
  • se reservan 25 segundos al final para serializar y devolver una respuesta
  • existe una alternativa gpt-4o, pero solo se ejecuta si quedan al menos dos minutos de margen

Esa última regla es la que importa. Si el intento principal falla al final y no queda tiempo suficiente, la Lambda se niega a iniciar la alternativa y devuelve en su lugar un error explícito: Skipping gpt-4o fallback: insufficient Lambda time remaining. Iniciar una llamada que no puedes terminar solo convierte un error claro en un timeout, que es mucho peor de depurar.

Dejamos de generar imágenes automáticamente

Este es el cambio real desde abril.

generateImage() en ai-content-engine ahora es un stub sin efecto. Recibe sus argumentos, los ignora y devuelve la imagen de portada de reserva:

/** Kept as a no-op stub for callers that still reference it directly. */
async function generateImage(imagePrompt: string, s3Key: string): Promise<string> {
  void imagePrompt;
  void s3Key;
  return FALLBACK_COVER_IMAGE;
}

Lo que lo reemplazó no es otro modelo. Es una persona. generateOrReuseImage() escribe el prompt de imagen en DynamoDB con una clave S3 vacía y devuelve la imagen de reserva, y el correo de aprobación lleva ese prompt a una persona. Cuando la respuesta vuelve con una imagen adjunta, una Lambda separada media-receiver completa el recurso real.

El prompt se almacena como tres campos separados — clipL, t5xxl y negative — en lugar de un único bloque, porque quien lo renderiza por lo general no está usando OpenAI. Esos son espacios de prompt de modelos de difusión, y mantenerlos separados significa que el operador puede pegar cada uno en la casilla correcta en lugar de deshacer una cadena concatenada.

Por qué un canal más lento es el canal correcto

La generación automática de portadas era la función con más probabilidades de poner algo embarazoso en el sitio sin que nadie lo viera antes. El texto ya pasa por un correo de aprobación. Las imágenes no — se generaban, se subían y se publicaban en un solo paso sin supervisión.

Eliminar eso sí hizo más lenta la publicación. También significa que cada imagen de este sitio fue revisada por una persona antes de publicarse, que es la propiedad que realmente queríamos. El modelo mejoró y le dimos menos que hacer sin supervisión. Eso no está reñido.


Los prompts están en ai-prompts/; las Lambdas están en lambda/ai-content-engine y lambda/yoga-script. Si quieres ayuda para diseñar un flujo de aprobación para tu propio canal de contenido de IA, contáctanos.