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​