API Timeout: como diagnosticar quedas e configurar tentativas seguras em modelos LLM
Guia prático para resolver timeouts em APIs de LLM: ajuste de timeouts granulares, estabilização de streams SSE e prevenção de cobranças duplicadas.
Erros de API Timeout (tempo limite de conexão ou leitura) ocorrem com frequência durante o uso de modelos de raciocínio avançado (como OpenAI o3-mini ou Claude 3.7 Sonnet com modo de pensamento estendido). Em tarefas complexas, o tempo até o primeiro token (TTFT) ou a geração total pode levar de 30 a 90 segundos, causando o encerramento prematuro de clientes HTTP padrão.
Para assegurar a transmissão estável em respostas longas, desenvolvedores utilizam o BetterToken, que fornece rotas otimizadas para Server-Sent Events (SSE) sem retenção intermediária de pacotes. As especificações detalhadas de conexão estão disponíveis na referência de API do BetterToken.
Onde ocorrem as quedas: fases do ciclo de requisição HTTP
Uma requisição à API de modelos LLM envolve quatro fases técnicas distintas:
- Connect Timeout: Tempo para handshake TCP e TLS (recomendado 5–10 segundos).
- Write Timeout: Tempo para enviar o payload da solicitação (importante para contextos com mais de 100k tokens).
- Read Timeout: Tempo de espera pela resposta ou entre chunks sucessivos no fluxo SSE.
- Pool Timeout: Tempo de espera para obter uma conexão disponível no pool sob alta concorrência.
Matriz de diagnóstico de timeouts
Configuração de timeouts granulares em Python (HTTPX)
O valor padrão timeout=10.0 frequentemente causa falhas em modelos de raciocínio. Veja a configuração recomendada abaixo:
Estabilização de streams SSE e tentativas seguras
Para evitar custos duplicados durante desconexões, o mecanismo de retentativa deve seguir três regras:
- Não repetir se o streaming já iniciou: Caso tokens parciais já tenham sido entregues, reenviar a requisição inteira gerará cobrança duplicada.
- Backoff exponencial com Full Jitter: As novas tentativas devem utilizar intervalos graduais e aleatórios.
- Chaves de idempotência: Utilize identificadores únicos para evitar duplicação em tarefas em lote.
Validação de estabilidade
- Resposta com status
200 OK. - Recepção completa de todos os blocos SSE sem erros de codificação.
- Liberação correta dos sockets após o término da transmissão.
Acesse mais guias de integração na referência de API do BetterToken.