Contenido del curso
Fundamentos de la API de OpenAI
Control de Respuestas
Desarrollo de 'PlatziVision'
Fine-Tuning
OpenAI Batch
OpenAI Assistants
Proyecto Final y Cierre del Curso
Resumir artículos de Wikipedia con OpenAI Batch
Resumen
OpenAI Batch te permite enviar grandes volúmenes de peticiones a la API con un 50% de descuento en la factura, a cambio de esperar entre 0 y 24 horas por la respuesta. Es ideal cuando necesitas procesar datasets extensos, como resúmenes masivos de artículos de Wikipedia, y el tiempo de respuesta no es tu prioridad.
¿Qué es OpenAI Batch y cuándo conviene usarlo?
Es un servicio de OpenAI pensado para procesar peticiones en lote de forma asíncrona. En lugar de enviar un request y esperar la respuesta inmediata, agrupas decenas, cientos o miles de peticiones en un solo archivo y dejas que OpenAI las procese cuando tenga capacidad disponible.
¿Cuándo me conviene usar OpenAI Batch? Cuando tienes que analizar grandes cantidades de datos, no necesitas la respuesta al instante y quieres pagar la mitad. Si trabajas con 12, 120 o 1200 requests, el ahorro se nota.
La lógica es simple: sacrificas inmediatez por costo. En producción, esto se traduce en pipelines de análisis, generación de resúmenes en masa o enriquecimiento de bases de datos donde puedes esperar unas horas sin afectar el negocio [00:18].
¿Cómo se estructura un archivo JSONL para Batch?
El formato de entrada es un archivo JSON Lines, es decir, un JSON por línea sin saltos internos. Cada línea representa una petición independiente y debe contener varios campos obligatorios.
Estos son los elementos que necesitas en cada línea del archivo de input:
- custom_id: identificador único que tú defines para correlacionar input y output. Puede ser
001, el link del artículo o cualquier cosa útil. - method: siempre
POST. - url: el endpoint, normalmente
/v1/chat/completions. - body: incluye el modelo (por ejemplo, GPT-4o mini) y los
messagescon el rol del sistema y del usuario.
El rol del sistema define la tarea, por ejemplo "eres un asistente que resume artículos de Wikipedia", y el mensaje del usuario contiene el texto a procesar [02:48]. Todo debe mantenerse en una sola línea, porque un salto de línea o una doble comilla mal escapada invalida el JSON y hace fallar todo el batch.
¿Por qué importa tanto el custom_id?
Cuando recibes el archivo de salida, también en formato JSONL, las respuestas no necesariamente vienen en el mismo orden que enviaste. El custom_id es tu ancla para emparejar cada respuesta con su petición original. Sin él, terminarías con un montón de resúmenes sueltos sin saber a qué artículo pertenecen [01:34].
¿Cómo se sube y monitorea un batch en la plataforma?
Desde el Dashboard de OpenAI, en la sección Batches, encontrarás el botón verde Create. Ahí subes tu archivo JSONL, eliges la completion window (actualmente solo 24 horas) y seleccionas el endpoint Chat Completions.
El proceso pasa por varios estados:
- Validating: OpenAI verifica que el JSONL esté bien parseado y sin errores de sintaxis.
- In progress: empieza a procesar las peticiones, mostrando por ejemplo 0 de 12 completados.
- Completed o Failed: si una sola línea tiene una doble comilla mal escapada, el batch puede fallar y avisarte antes de procesar el resto.
En una prueba real con 12 requests, el procesamiento tardó 1 hora y 33 minutos [06:13]. El tiempo no depende necesariamente del volumen, sino de la disponibilidad de OpenAI dentro de esa ventana de 24 horas.
¿Qué pasa si una línea del JSONL tiene un error? El batch falla en validación y te lo informa antes de cobrarte. Errores típicos: dobles comillas sin escapar dentro del contenido del usuario o saltos de línea dentro de un mismo JSON.
¿Cómo se interpreta el archivo de salida?
Al completarse el batch, descargas un archivo JSONL desde la sección de storage. Cada línea contiene un batch_id generado automáticamente por OpenAI y, lo más importante, conserva tu custom_id original.
Así, si enviaste un request con custom_id: 001 pidiendo resumir un artículo sobre Wikipedia, encontrarás la respuesta del asistente vinculada a ese mismo identificador. La respuesta del modelo aparece dentro del campo de contenido, lista para que la extraigas y la integres en tu sistema [07:22].
¿Qué modelos puedo usar dentro de Batch?
Todos los modelos de OpenAI son compatibles con Batch, incluyendo modelos de fine tuning. Esto amplía el caso de uso: puedes entrenar un modelo personalizado y aún así beneficiarte del 50% de descuento al procesar grandes volúmenes con él [08:42].
Conceptos clave que aparecen en la clase
Para que todo encaje, vale la pena tener claros estos términos que se mencionan a lo largo del flujo:
- JSONL (JSON Lines): formato donde cada línea es un JSON independiente y válido. Es el estándar de input y output en Batch.
- Endpoint Chat Completions: la URL
/v1/chat/completionsque recibe las peticiones de conversación con los modelos. - System prompt: instrucción inicial que define el comportamiento del asistente, como "resume artículos de Wikipedia".
- Completion window: ventana de tiempo máxima en la que OpenAI se compromete a procesar el lote, hoy fijada en 24 horas.
Generar el JSONL manualmente sirve para entender el formato, pero en producción lo normal es construirlo de forma programática con un script que tome tu dataset y arme cada línea con su custom_id, system prompt y contenido del usuario.
¿Ya pensaste qué dataset tuyo podrías procesar con Batch para ahorrar la mitad? Cuéntame en los comentarios qué tipo de tarea masiva te gustaría automatizar.