Volver a herramientas
DisponibleDatos·
OpenAI Batch API
API para enviar grandes volúmenes de peticiones de forma asíncrona con un descuento del 50% sobre el precio estándar. Ideal para clasificación masiva de datos, generación de embeddings y evaluaciones offline.
Compatible con
PythonTypeScriptREST API
batchprocesamiento-masivoasyncopenaicoste
Batch API: procesamiento masivo con 50% de descuento
La Batch API permite enviar hasta 50 000 peticiones en un único lote y obtener los resultados en un plazo de 24 horas, con la mitad del coste de las llamadas síncronas.
Casos de uso ideales
- Clasificar o etiquetar datasets grandes
- Generar embeddings para un corpus completo
- Evaluar modelos contra benchmarks extensos
- Procesar documentos o emails en lote
Crear un lote
from openai import OpenAI
import json
client = OpenAI()
# Preparar peticiones en formato JSONL
peticiones = [
{
"custom_id": f"req-{i}",
"method": "POST",
"url": "/v1/chat/completions",
"body": {
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": f"Clasifica este texto: {texto}"}],
"max_tokens": 50
}
}
for i, texto in enumerate(mis_textos)
]
with open("lote.jsonl", "w") as f:
for p in peticiones:
f.write(json.dumps(p, ensure_ascii=False) + "\n")
# Subir archivo y crear lote
archivo = client.files.create(file=open("lote.jsonl", "rb"), purpose="batch")
lote = client.batches.create(
input_file_id=archivo.id,
endpoint="/v1/chat/completions",
completion_window="24h"
)
print(lote.id) # batch_abc123
Monitorizar y recuperar resultados
# Verificar estado
lote = client.batches.retrieve("batch_abc123")
print(lote.status) # validating | in_progress | completed | failed
# Cuando está completado, descargar resultados
if lote.status == "completed":
contenido = client.files.content(lote.output_file_id)
for linea in contenido.text.split("\n"):
if linea:
resultado = json.loads(linea)
print(resultado["custom_id"], resultado["response"]["body"])
Límites
- Hasta 50 000 peticiones por lote
- Hasta 200 MB por archivo de entrada
- Ventana de completado: 24h (garantizado)