- 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.
- 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}")
- 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