Pular para o conteúdo principal

Erros, Limites de Taxa e Confiabilidade

Intermediário
What you'll learn
  • Ler o mapa de erros HTTP e saber quais status repetir versus corrigir
  • Repetir erros transitórios com backoff exponencial e jitter, com teto
  • Lidar com limites de taxa usando retry-after, suavização, lotes e modelos mais baratos
  • Isolar seu código de descontinuações e migrações de modelos

Código em produção conversa com um serviço de rede, então deve esperar falhas. Um pouco de estrutura aqui é a diferença entre uma integração instável e uma confiável.

O mapa de erros

Status HTTP típicos que você vai tratar:

StatusSignificadoO que fazer
400Requisição inválidaCorrija o payload; não repita como está
401Chave de API inválida/ausenteVerifique as credenciais
403Não permitidoVerifique acesso/permissões
429Limite de taxa atingidoRecue e tente novamente (respeite o retry-after)
500/529Erro de servidor / sobrecarregadoTente novamente com backoff
Pro tip
  • Os SDKs expõem isso como exceções tipadas, então você pode ramificar de forma limpa em vez de analisar strings.

Retentativas com backoff

Para erros transitórios (429, 5xx), tente novamente com backoff exponencial + jitter, com um teto:

import time, random
for attempt in range(5):
try:
return client.messages.create(...)
except (RateLimitError, APIStatusError) as e:
if attempt == 4 or not should_retry(e):
raise
time.sleep(min(2 ** attempt + random.random(), 30))
Watch out
  • Muitos SDKs repetem erros transitórios automaticamente — conheça o padrão do seu cliente antes de adicionar o seu próprio, ou você pode acabar duplicando as retentativas.

Limites de taxa

Os limites se aplicam por conta/nível (requisições e tokens por minuto). Quando você atinge um, recebe 429 com dicas de tempo. Estratégias para ficar abaixo do teto:

Guided walkthrough1 of 4
  1. Quando receber um 429, leia a dica de tempo na resposta e espere esse intervalo antes de tentar novamente.

Veja Escolhendo um Modelo para escolher o modelo certo para etapas de alto volume.

Migração de modelos

Os IDs de modelo são datados/versionados e ficam obsoletos. Proteja-se:

Key takeaways
  • 400/401/403 são culpa sua — corrija a requisição ou as credenciais, não repita às cegas. 429 e 500/529 são passíveis de retentativa.
  • Repita erros transitórios com backoff exponencial + jitter, com teto (ex.: min(2 ** attempt + random(), 30)).
  • No 429: respeite o retry-after, suavize os picos, agrupe o trabalho offline em lotes e direcione etapas de alto volume para um modelo mais barato.
  • Leia os IDs de modelo a partir da configuração, acompanhe as descontinuações e re-execute as evals ao migrar de modelos.

Teste-se

0/4
  1. Você recebe um 400 Requisição inválida. O que deve fazer?
  2. Quais status são os que você deve repetir com backoff?
  3. Por que adicionar jitter ao backoff exponencial?
  4. Qual NÃO é uma estratégia sugerida para limite de taxa?

Próximo