Pular para conteúdo

Taxonomia de erros de provider

ProviderError normaliza falhas Gemini/OpenAI nos campos provider, model, status_code, error_code, error_type, category, retryable, retry_after_seconds, request_id, sanitized_message, attempt, max_attempts e occurred_at.

Categorias: AUTHENTICATION, PERMISSION, INSUFFICIENT_QUOTA, RATE_LIMIT, BILLING_REQUIRED, PROJECT_LIMIT, MODEL_NOT_FOUND, MODEL_UNAVAILABLE, INVALID_REQUEST, SAFETY_BLOCK, SCHEMA_INVALID, EMPTY_RESPONSE, TRUNCATED_RESPONSE, TIMEOUT, NETWORK, PROVIDER_INTERNAL e UNKNOWN.

Regras de decisão

Sinal Categoria Retry imediato
OpenAI insufficient_quota INSUFFICIENT_QUOTA não
billing inativo/requerido BILLING_REQUIRED não
limite de projeto/organização PROJECT_LIMIT não
429 temporário/Retry-After RATE_LIMIT sim, limitado
Gemini RESOURCE_EXHAUSTED de requisições RATE_LIMIT sim, limitado
503/modelo em alta demanda MODEL_UNAVAILABLE sim, limitado

Quota, billing e project limit são BLOCKED_EXTERNAL_ACCOUNT nos testes opt-in; isso é skip explícito, não aprovação. Erros transitórios continuam falhando se esgotarem as tentativas.

Mensagens são sanitizadas antes de log/benchmark. Nunca entram chave, Authorization, prompt integral, currículo integral ou vaga integral.