API Timeout: cómo diagnosticar desconexiones y configurar reintentos seguros en LLM
Guía técnica para resolver tiempos de espera en APIs de IA: configuración de timeouts connect/read en httpx, streaming SSE continuo y reintentos seguros.
Los errores API Timeout (tiempo de espera agotado de conexión o lectura) son habituales al trabajar con modelos de razonamiento avanzados (como OpenAI o3-mini o Claude 3.7 Sonnet con pensamiento extendido). Al procesar tareas complejas, el tiempo hasta recibir el primer token (TTFT) o la generación completa puede tardar entre 30 y 90 segundos, provocando caídas en clientes HTTP estándar.
Para garantizar una transmisión estable en respuestas largas, los desarrolladores utilizan BetterToken, que ofrece un enrutamiento optimizado de Server-Sent Events (SSE) sin almacenamiento intermedio invasivo. Las especificaciones completas de conexión están detalladas en la referencia de API de BetterToken.
Dónde ocurren las caídas: fases del ciclo de vida HTTP
Una solicitud a la API de un modelo de IA se divide en cuatro fases técnicas independientes:
- Connect Timeout: Tiempo asignado para establecer la conexión TCP y el protocolo TLS (5–10 segundos recomendados).
- Write Timeout: Tiempo para enviar el cuerpo de la solicitud (crucial con contextos de más de 100k tokens).
- Read Timeout: Tiempo de espera de respuesta o de chunks sucesivos en el flujo SSE.
- Pool Timeout: Tiempo de espera para obtener un socket libre del grupo de conexiones bajo alta concurrencia.
Matriz de diagnóstico de tiempos de espera
Configuración de timeouts granulares en Python (HTTPX)
El valor por defecto timeout=10.0 suele provocar fallos con modelos de razonamiento. A continuación se muestra una configuración recomendada:
Estabilización de flujos SSE y reintentos seguros
Para evitar gastos duplicados durante desconexiones, los reintentos deben cumplir tres principios:
- No reintentar si el streaming ya ha comenzado: Si ya se recibieron tokens parciales, volver a enviar la consulta causará un doble cobro.
- Retroceso exponencial con Full Jitter: Los reintentos deben espaciarse con pausas aleatorias crecientes.
- Uso de claves de idempotencia: Emplee identificadores únicos para evitar ejecuciones repetidas en procesamiento por lotes.
Lista de verificación
- Código de respuesta
200 OK. - Recepción continua de todos los fragmentos sin errores
ChunkedEncodingError. - Liberación adecuada de sockets tras la sesión.
Consulte todos los métodos de integración en la referencia de API de BetterToken.