Summary

  • Batch API ofrece una rebaja de 50% frente a las API síncronas y una ventana de 24 horas. Si el lote caduca, las peticiones terminadas siguen generando cargos por los tokens consumidos.
  • Las peticiones que quedaron sin procesar se cancelan. El archivo de resultados y el de errores, unidos por custom_id al archivo de entrada, muestran qué trabajo se recibió y cuál debe repetirse.

El precio baja por solicitud. La obligación de entregar un conjunto completo no baja con él.

OpenAI permite reunir peticiones en un archivo JSONL y procesarlas de forma asíncrona con Batch API. La documentación anuncia un costo 50% menor que el de las llamadas síncronas, límites de tasa en una bolsa separada y un plazo de 24 horas. Son condiciones atractivas para clasificar documentos, ejecutar evaluaciones o generar embeddings a escala. También cambian la pregunta de compras: además del precio por token, hay que saber qué sucede con las filas que no llegan al final.

La respuesta oficial es concreta. Un lote que no termina a tiempo pasa al estado expired. Las respuestas completadas se conservan en el archivo de salida; las peticiones inacabadas se cancelan y figuran en el archivo de errores con el código batch_expired. OpenAI cobra los tokens consumidos por las peticiones completadas. El contador se detiene para unas filas, mientras la factura recoge el trabajo que sí se hizo.

El cliente puede estar en una situación extraña y perfectamente normal bajo esas reglas: debe pagar una parte del procesamiento y todavía no dispone de todos los resultados que su propio proyecto exige. Una evaluación incompleta no puede presentarse como una evaluación completa. Un catálogo clasificado a medias tampoco se arregla con un descuento. La diferencia no es semántica; determina si hay que lanzar otra tanda, esperar más o cambiar de vía para las entradas urgentes.

Para saber qué quedó pendiente, los números globales no bastan. Cada petición del archivo de entrada lleva un custom_id único. OpenAI avisa que las líneas de salida pueden llegar en otro orden. Por eso la posición de una línea no demuestra a qué entrada responde. Hay que cruzar los identificadores enviados con los que aparecen en la salida y en el archivo de errores. El resultado de ese cruce es una lista de trabajo, no una impresión general de que el lote “casi acabó”.

El objeto Batch ayuda a fechar y medir el problema. La API expone el estado, expires_at, expired_at, los ID de los archivos de salida y errores, y request_counts con totales, completadas y fallidas. Para los lotes a los que se aplica, también muestra uso de tokens. Los contadores señalan la magnitud de la brecha. Los archivos permiten identificar las filas concretas. Una organización que conserva ambos puede separar el costo del primer intento del costo de completar el encargo.

Reenviar el archivo entero después de un vencimiento incluye peticiones que ya produjeron respuesta. Enviar solo los custom_id pendientes concentra la segunda ejecución en lo que falta. La documentación pública no aporta la factura de un cliente ni la cantidad de peticiones que le haya caducado. Para calcular un caso real hacen falta sus archivos y las tarifas del modelo utilizado.

La rebaja de OpenAI tiene una unidad precisa: trabajo de modelo completado a un precio inferior. El comprador tiene otra unidad: la cobertura de su conjunto de entradas. Entre ambas unidades cabe un lote caducado. Quien no guarda el mapa de custom_id acaba comprando incertidumbre junto al descuento.

Sources