1
resposta

Faça como eu fiz: avaliação com Deepeval: integração do Deepeval com um chatbot

  1. Conceitos e Fluxo de Avaliação
    O DeepEval utiliza a abordagem LLM-as-a-Judge. Ele não apenas compara strings, mas usa modelos de linguagem para avaliar semântica, integridade e segurança.

Golden: O "padrão ouro". É a resposta ideal esperada para um determinado input.

Threshold: O limite de aceitação. Se uma métrica de Faithfulness for menor que 0.7, o teste falha automaticamente no pipeline de CI/CD.

  1. Resumo da Implementação Técnica
    Tópicos Principais:
    Confident AI: É a plataforma de observabilidade do DeepEval. O login integra o histórico de testes em um dashboard web.

Métricas de Avaliação: * Answer Relevancy: O quão bem a resposta atende à pergunta.

Faithfulness: Se a resposta é baseada apenas no contexto fornecido (evita alucinação).

Bias/Toxicity: Garantia de segurança e ética nas recomendações.

Código Fonte: Suite de Testes Playcatch
Python
import os
import deepeval
from deepeval import assert_test
from deepeval.test_case import LLMTestCase, LLMTestCaseParams
from deepeval.metrics import AnswerRelevancyMetric, FaithfulnessMetric, BiasMetric, ToxicityMetric
from deepeval.dataset import EvaluationDataset

1. INTEGRAÇÃO CONFIDENT AI

Substitua pela sua chave ou use variável de ambiente

os.environ["CONFIDENT_AI_API_KEY"] = "SUA_API_KEY_AQUI"

deepeval.login(api_key=os.environ["CONFIDENT_AI_API_KEY"])

2. DEFINIÇÃO DAS MÉTRICAS (Calibração de Thresholds)

Threshold de 0.7 significa que aceitamos 70% de aderência ao critério

relevancy_metric = AnswerRelevancyMetric(threshold=0.7)
faithfulness_metric = FaithfulnessMetric(threshold=0.7)
bias_metric = BiasMetric(threshold=0.5) # Rigor maior para viés
toxicity_metric = ToxicityMetric(threshold=0.5)

3. MONTAGEM DO DATASET E TEST CASES (Goldens)

def run_playcatch_eval(user_input, chatbot_output, context):
"""
Registra e executa o teste para uma interação específica.
user_input: O que o usuário disse.
chatbot_output: A recomendação/resposta da Playcatch.
context: A letra da música ou perfil do usuário usado como base.
"""

# Criando o Caso de Teste
test_case = LLMTestCase(
    input=user_input,
    actual_output=chatbot_output,
    retrieval_context=[context],
    # O Golden é a resposta esperada (ideal) definida por você
    expected_output="Sugiro a música 'Modão de Goiás' pois você está feliz e ela tem 5 estrelas."
)

# 4. EXECUÇÃO E LOG DE HIPERPARÂMETROS
# O DeepEval enviará os resultados automaticamente para o Confident AI
deepeval.track(
    event_name="Recomendação de Humor",
    model_name="DialoGPT-medium",
    hyperparameters={
        "temperature": 0.7,
        "max_tokens": 150,
        "top_p": 0.9
    }
)

# Executa as métricas
assert_test(test_case, [relevancy_metric, faithfulness_metric, bias_metric, toxicity_metric])

--- SIMULAÇÃO DE DATASET ---

if name == "main":
# Exemplo de interação coletada do chatbot
input_user = "Quero algo animado para curtir o sol"
output_bot = "Aqui está uma música de jazz triste para você." # Falha esperada
contexto_base = "Catálogo filtrado por: [Feliz, 5 estrelas]"

# Criando um dataset para processamento em lote
dataset = EvaluationDataset(test_cases=[]) 
# Adicionaria múltiplos casos aqui para rodar via CLI: 'deepeval test run test_file.py'

try:
    run_playcatch_eval(input_user, output_bot, contexto_base)
except Exception as e:
    print(f"O teste falhou conforme o esperado: {e}")
  1. Guia de Execução em Docker
    Para garantir que o ambiente de teste seja idêntico ao de produção na Playcatch, utilize este fluxo no terminal:

Criação do Dockerfile:

Dockerfile
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["deepeval", "test", "run", "test_playcatch.py"]
Execução:

Bash
docker build -t playcatch-eval .
docker run -e CONFIDENT_AI_API_KEY="SUA_CHAVE" playcatch-eval
código Fonte: Aplicação Integrada Playcatch

1 resposta

Olá, Moacir! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o DeepEval com LLM-as-a-Judge para avaliar respostas semânticas em Python, utilizou muito bem a definição de métricas com thresholds para garantir relevância e consistência e ainda compreendeu a importância da integração com Confident AI e Docker para trazer observabilidade e reprodutibilidade ao pipeline de testes.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!