Ir para o conteúdo

Exceções

O dataframeit() trata erros de duas formas, conforme o momento em que acontecem.

Erros antes do processamento

A configuração é validada antes da primeira chamada ao modelo. Um problema aqui interrompe a execução com exceção, e nenhuma linha é processada.

Exceção Quando ocorre
ImportError Falta o extra do provider ou do provedor de busca (ex.: pip install dataframeit[anthropic]). A mensagem diz qual instalar
ValueError Parâmetro inválido: questions ou prompt ausentes, max_retries < 1, batch_size sem checkpoint_path, search_groups sem search_per_field=True, chave de API de busca ausente, linhas já processadas incompatíveis com o modelo atual
ProviderConfigurationError Configuração incompatível com o contrato do provider, como um model_kwargs que o codex não aceita ou um schema Pydantic que ele não consegue representar. É subclasse de ValueError
from dataframeit import dataframeit, ProviderConfigurationError

try:
    resultado = dataframeit(df, Modelo, PROMPT, provider='codex', model_kwargs={'max_tokens': 500})
except ProviderConfigurationError as erro:
    print(f"Configuração recusada pelo provider: {erro}")

Erros durante o processamento

Uma falha numa linha não interrompe a execução. A linha recebe status 'error', o motivo vai para _error_details e o processamento segue para a próxima. O texto em _error_details tem a forma [Falhou após N tentativa(s)] Classe: mensagem (ou [Erro não-recuperável] Classe: mensagem), o que permite filtrar por tipo:

if '_dataframeit_status' in resultado.columns:
    erros = resultado[resultado['_dataframeit_status'] == 'error']
    sobrecarga = erros[erros['_error_details'].str.contains('ProviderOverloadedError', na=False)]

As classes abaixo classificam a falha e decidem se ela ganha nova tentativa. Todas estão em dataframeit e em dataframeit.errors.

RuntimeError
└── ProviderError                     falha definitiva reportada pelo provider
    └── ProviderTransientError        transitória: ganha nova tentativa
        ├── ProviderOverloadedError   sobrecarga ou limite de taxa do provider
        └── ProviderRejectedOutputError  resposta recusada pela validação (também ValueError)

ValueError
├── ProviderConfigurationError        configuração local incompatível com o provider
└── ProviderOutputError               resposta definitiva fora do contrato de saída
Exceção Nova tentativa Situação típica
ProviderError Não Erro definitivo do provider, como autenticação recusada ou orçamento do claude_code esgotado
ProviderTransientError Sim Falha de rede ou do serviço que costuma passar sozinha
ProviderOverloadedError Sim Sobrecarga ou HTTP 429 do provider
ProviderRejectedOutputError Sim A resposta não passou na validação do modelo Pydantic; a nova tentativa leva ao modelo a resposta recusada e o erro
ProviderOutputError Não O provider terminou sem resposta utilizável, como um turno do codex sem conteúdo

Erros dos providers via LangChain não usam essas classes. Eles são classificados pelo tipo que a própria LangChain declara, pelo status HTTP e pela mensagem. Os detalhes estão em Tratamento de Erros.