,000 por noche. Escuchas hablar de las APIs de lotes.
El procesamiento por lotes garantiza un 50% de descuento de inmediato. También activas el almacenamiento en caché de prompts en el prompt del sistema (compartido por todas las 50,000 llamadas). Acumulados ambos recursos, el costo diario desciende a
80 — cerca del 9% del precio base. El mismo pipeline, con solo tres cambios de configuración.
El procesamiento por lotes es la palanca de reducción de costos más barata y menos utilizada en el conjunto de herramientas de LLM. El motivo es mayoritariamente organizativo: los equipos piensan en "tiempo real" cuando, en realidad, el SLA de entrega es "para la mañana". Esta lección enseña a no dejar el 90% de tu presupuesto de infraestructura en la mesa.
El Concepto
Las tres APIs de lotes
OpenAI Batch API: Carga de archivo JSONL con una lista de solicitudes. Plazo de entrega prometido de 24 horas (generamente de 2 a 8 horas en la práctica). Descuento del 50% en los tokens de entrada y de salida. Endpoint /v1/batches. Las entradas elegibles al caché también acumulan el descuento de tokens en caché por encima.
Anthropic Message Batches: Carga de JSONL. Plazo de entrega de 24 horas. Descuento del 50%. Admite cache_control — las escrituras de caché son explícitas, y las lecturas subsiguientes ocurren de forma automática dentro del lote.
Google Vertex AI Batch Prediction: Entrada mediante BigQuery o GCS. Descuento del 50% equivalente para la familia Gemini. Se integra de manera nativa con los pipelines de Vertex.
Semántica: asíncrono, no lento
El procesamiento por lotes significa "garantizo la entrega en un plazo de 24 horas" — y no "esta llamada tardará 24 horas". El tiempo medio típico (P50) es de 2 a 6 horas. Los proveedores programan el procesamiento de lotes en periodos de inactividad, cuando la utilización de GPUs está en baja.
Acumulando con caché
Un flujo de resumen de 50,000 documentos compartiendo el mismo prompt de sistema de 4K tokens:
- Síncrono sin caché: 50,000 × ($entrada × 4000 + $salida × 200) con tarifas normales.
- Síncrono con caché: prompt de sistema en caché tras la primera escritura; las 49,999 llamadas siguientes reciben entrada 10x más barata.
- Lotes con caché: se suma el ahorro de la caché con el descuento adicional del 50% tanto en las escrituras como en las lecturas.
El resultado de la acumulación: lotes + caché = ~10% del costo síncrono original. Toda carga que se ejecute por la noche y tenga un prompt de sistema compartido debe usar este enfoque.
Clasificación de cargas de trabajo
Interactiva — el usuario espera la respuesta directamente en la pantalla. El TTFT es crítico. Llamada síncrona con caché de prompt activado. No acepta lotes.
Semi-interactiva — el usuario envía la tarea y regresa minutos después para verificar. Fila asíncrona con fallback síncrono si el lote no está disponible. Ejemplo: indexación de RAG de volumen moderado.
Por lotes (Batch) — el usuario espera el resultado "para la mañana" o "en la siguiente hora". Pipelines de contenido, clasificación volumétrica, análisis offline. Siempre por lotes, siempre acumulando caché.
Error común: clasificar todo como interactivo bajo la justificación de que el pipeline se ejecuta en producción. Producción no define la latencia — el SLA la define.
La trampa de la interactividad parcial
Algunas funcionalidades parecen interactivas, pero toleran de 5 a 10 minutos de espera. Ejemplo: un informe de salud del cliente generado bajo demanda con un botón de "actualizar". El usuario hace clic; esperar 10 minutos es aceptable. Sin embargo, el equipo implementa el flujo de forma síncrona. Cincuenta clics simultáneos de actualización cuestan 10 veces más de lo que costaría el procesamiento por lotes entregado por correo electrónico.
La pregunta crucial: "¿Qué significa el plazo de 24 horas para este usuario?". Si la respuesta es "no notarían la diferencia", procésalo por lotes.
La trampa del formato de salida
Los formatos de los archivos de lotes difieren según cada proveedor:
- OpenAI: JSONL, una solicitud por línea.
- Anthropic: JSONL, una mensaje por línea, con el formato de respuesta integrado.
- Vertex: Tabla de BigQuery o directorio GCS con archivos TFRecord.
Desarrollar un único cliente de lotes unificado exige código de adaptación (adapters) para cada proveedor. Las pasarelas de pago que prometen lotes multi-proveedor (como Portkey o LiteLLM en ciertas capas) solo envuelven la estructura cruda.
Números que deberías recordar
- Descuento de lotes entre los proveedores: 50% de descuento plano en tokens de entrada y salida.
- Plazo de entrega (SLA): 24 horas garantizadas, con P50 típico de 2 a 6 horas.
- Acumulación de lotes + caché de entrada: ~10% del costo síncrono convencional.
- Regla de clasificación: si la latencia de 24 horas es aceptable, siempre procesa por lotes.
Pruébalo
code/main.py calcula los costos comparativos entre síncrono, síncrono+cáché, lotes y lotes+cáché para un flujo de 50,000 documentos. Muestra el ahorro en dólares y en porcentaje.
Envíalo a Producción
Esta lección produce outputs/skill-batch-triager.md. Dadas las características de la carga de trabajo, realiza la clasificación en interactiva/semi/lotes y calcula la proyección de ahorro.
Ejercicios
- Ejecuta
code/main.py. Para un pipeline de 100,000 documentos con prompt de sistema de 3K tokens y salida de 500 tokens, calcula el ahorro de la acumulación completa (lotes + caché) contra la línea base síncrona.
- Elige tres funcionalidades de un producto real que conozcas. Clasifica cada una en interactiva/semi/lotes.
- Un usuario se queja de que su informe tomó 3 horas en generarse. ¿Fue un error de clasificación del lote o un caso de uso legítimamente interactivo? Escribe los criterios de esa decisión.
- El SLA de retorno de tu API de lote es de 24h, pero el P99 real es de 20 horas. ¿Cómo le comunicas esto al usuario y cuál es el comportamiento del sistema en los casos extremos de lentitud?
- Calcula el punto de equilibrio (break-even): ¿con qué longitud de prefijo compartido el procesamiento por lotes + caché se vuelve más barato que ejecutar la infraestructura nocturna en una GPU reservada propia?
Términos Clave
| Término |
Lo que la gente dice |
Lo que realmente significa |
| API de lotes |
"descuento asíncrono" |
50% de descuento con plazo de entrega de 24h |
| JSONL |
"formato de lote" |
Formato de un objeto JSON por línea; estándar de OpenAI/Anthropic |
| Message Batches |
"lote de Anthropic" |
Nombre comercial de la API de lotes de Anthropic |
| Batch prediction |
"lote de Vertex" |
Producto de API de lotes de Vertex AI |
| SLA de entrega |
"promesa de 24h" |
Garantía contractual máxima; el tiempo típico real es de 2 a 6h |
| Clasificación de carga de trabajo |
"decisión de interactividad" |
Decisión de enrutamiento de flujos en interactivo, semi-interactivo o lote |
| Formato de salida |
"esquema de respuesta" |
Layout JSONL específico de cada proveedor; no portable |
| Descuento acumulado |
"lote + caché" |
~10% de la factura síncrona original al acumular ambos recursos |
Lecturas Recomendadas
0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).