La Batch API para Large Language Models permite el procesamiento asíncrono de numerosas solicitudes de inferencia y es totalmente compatible con el estándar de la OpenAI API.
La Batch API es una solución rentable cuando no se necesitan resultados de inferencia inmediatos. Proporciona límites de tasa más altos que las llamadas en línea, lo que garantiza que los resultados se entreguen dentro de un plazo razonable de 24 horas.
Esta API es ideal para:
- Realizar evaluaciones y análisis de datos.
- Clasificar conjuntos de datos extensos.
- Generar resúmenes de documentos en modo sin conexión.
Modelos admitidos:
Inicio rápido
1. Preparar archivos por lotes
La Batch API utiliza archivos en formato .jsonl como entrada, donde cada línea representa los detalles de una solicitud de inferencia de API. Los endpoints disponibles incluyen /v1/chat/completions y /v1/completions.
Establece el parámetro endpoint en /v1/chat/completions o /v1/completions para la compatibilidad con la OpenAI API.
Cada solicitud debe incluir un custom_id único para localizar los resultados de inferencia en el archivo de salida una vez completado el lote. Los parámetros del campo body de cada línea se envían como parámetros reales de la solicitud de inferencia al endpoint.
Todas las solicitudes dentro de un único archivo JSONL por lotes deben apuntar al mismo modelo. No mezcles solicitudes para diferentes modelos en un solo lote.
A continuación se muestra un archivo de entrada de ejemplo que contiene 2 solicitudes:
2. Subir el archivo de entrada por lotes
Sube el archivo de entrada por lotes para garantizar que pueda referenciarse con precisión al crear un lote. Usa la Files API para subir tu archivo .jsonl y establece el purpose en batch. Ten en cuenta que el archivo se conservará durante 15 días.
Ejemplo de código
Python
Curl
Respuesta de ejemplo tras una subida de archivo correcta:
3. Crear un lote
Una vez que el archivo de entrada se haya subido correctamente, puedes iniciar un lote usando el ID del objeto File subido. La ventana de finalización está fijada en 24h y actualmente no se puede ajustar.
Ejemplo de código
Python
Curl
Esta solicitud generará un objeto Batch que incluye metadatos sobre tu lote, como se ilustra en el siguiente ejemplo:
4. Comprobar el estado de un lote
Puedes comprobar el estado de un lote en cualquier momento para recibir la información más reciente del lote.
Los valores de enumeración de estado del objeto Batch son los siguientes:
| Estado | Descripción |
|---|
| VALIDATING | El archivo de entrada se está validando antes de que el lote pueda comenzar |
| PROGRESS | El lote está en progreso |
| COMPLETED | El procesamiento por lotes se completó correctamente |
| FAILED | El procesamiento por lotes falló |
| EXPIRED | El lote superó la fecha límite |
| CANCELLING | El lote se está cancelando |
| CANCELLED | El lote fue cancelado |
Ejemplo de código
Python
Curl
5. Recuperar los resultados
Una vez completada la inferencia por lotes, puedes descargar el archivo de salida de resultados usando el campo output_file_id del objeto Batch.
El archivo de salida de resultados se eliminará 30 días después de que concluya la inferencia por lotes, así que recupéralo cuanto antes mediante la interfaz.
Ejemplo de código
Python
Curl
La respuesta devuelve el contenido sin procesar del archivo. Para los archivos de salida por lotes, cada línea contiene una respuesta como esta:
Instrucciones
Limitaciones
- Cada lote puede contener hasta 50,000 solicitudes.
- El tamaño máximo del archivo de entrada por lote es de 100MB.
Manejo de errores
Los errores encontrados durante el procesamiento por lotes se registran en un archivo de errores independiente, accesible mediante el campo error_file_id. Los códigos de error comunes incluyen:
| Código de error | Descripción | Solución |
|---|
| 400 | Formato de solicitud no válido | Comprueba la sintaxis JSONL y los campos obligatorios |
| 401 | Error de autenticación | Verifica la API key |
| 404 | Lote no encontrado | Comprueba el batch ID |
| 429 | Límite de tasa superado | Reduce la frecuencia de las solicitudes |
| 500 | Error del servidor | Contáctanos |
Expiración de lotes
Los lotes que no se completen en un plazo de 24 horas pasarán a un estado EXPIRED. Las solicitudes no finalizadas se cancelarán, mientras que las solicitudes completadas se proporcionarán mediante un archivo de salida. Solo pagas por los tokens consumidos por las solicitudes completadas. El lote hará todo lo posible por completarse dentro de 24 horas.
Toda la Batch API
- Crear lote
- Recuperar lote
- Cancelar lote
- Listar lotes
- Subir archivo
- Listar archivos
- Recuperar archivo
- Eliminar archivo
- Recuperar contenido de archivo