1
resposta

[Dúvida] Erro com a biblioteca de validação

Não consegui rodar a parte de validação da aula, pois a versão do langchain mudou. Testei essas quatro formas:
from langchain.evaluation.qa import QAEvalChain
from langchain.evaluation import QAEvalChain
from langchain_community.evaluation import QAEvalChain
from langchain.evaluation import load_evaluator
E nenhuma foi, tem alguma maneira diferente que eu não achei???

1 resposta

Oi, Júlia! Como vai?

No LangChain, essa parte de avaliação/validação mudou bastante entre versões, e por isso o import de QAEvalChain pode não existir mais (ou ter ido para outro pacote).

Pontos importantes

  • Em versões mais novas, muita coisa saiu do langchain “principal” e foi para langchain-community.
  • Em alguns casos, o caminho mais estável é usar load_evaluator, que já carrega o avaliador certo sem você precisar “adivinhar” o import.

1) Verifique sua versão instalada (pra entender qual API você tem)



import langchain

print(langchain.__version__)

O que esse código faz: imprime a versão do LangChain instalada, o que ajuda a identificar qual import funciona.

2) Ajuste seu ambiente (formas mais comuns hoje)

Se você ainda não tiver, instale/atualize os pacotes que normalmente são necessários nessa etapa:



pip install -U langchain langchain-community langchain-openai

O que esse código faz: atualiza o LangChain e instala o pacote community (onde vários recursos foram movidos) e o langchain-openai (muito usado nas aulas).

3) Faça a validação usando load_evaluator (tende a funcionar em mais versões)

Veja este exemplo: avaliando pergunta / resposta do modelo / gabarito (QA):



from langchain.evaluation import load_evaluator

# Carrega um avaliador de QA (o nome pode variar por versao; se falhar, use o exemplo do item 4)
evaluator = load_evaluator("qa")

exemplo = {
    "query": "Qual a capital do Brasil?",
    "result": "A capital do Brasil e Brasilia.",
    "answer": "Brasilia"
}

retorno = evaluator.evaluate_strings(
    prediction=exemplo["result"],
    reference=exemplo["answer"],
    input=exemplo["query"]
)

print(retorno)

O que esse código faz: cria um avaliador e compara a resposta gerada (prediction) com o gabarito (reference), considerando a pergunta (input).

4) Se "qa" nao existir na sua versão, liste o que esta disponível
Algumas versões mudam os nomes dos avaliadores. Siga esses passos para resolver: tente listar opções e escolher uma que exista.



from langchain.evaluation import evaluators

print([e for e in dir(evaluators) if "Evaluator" in e or "EVAL" in e.upper()])

O que esse código faz: mostra objetos relacionados a avaliação disponíveis no módulo, para você identificar qual avaliador sua versão suporta.

5) Alternativa: usar o QAEvalChain quando ele existir (varia por versão)

Ajuste seu código assim: tente o import por ordem (do mais novo pro mais antigo). Se um funcionar, os outros podem ser ignorados.



QAEvalChain = None

try:
    from langchain.evaluation.qa import QAEvalChain
except Exception:
    try:
        from langchain.evaluation import QAEvalChain
    except Exception:
        try:
            from langchain_community.evaluation import QAEvalChain
        except Exception:
            QAEvalChain = None

print("QAEvalChain carregado?" , QAEvalChain is not None)

O que esse código faz: tenta importar QAEvalChain de caminhos diferentes e informa se conseguiu.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado