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