๐ Por que Automatizar Evals
Avaliacao manual nao escala. Quando voce tem dezenas de prompts em producao e cada um precisa ser testado com multiplos cenarios, a unica saida e automacao. Evals automatizados sao o "teste unitario" da engenharia de prompts.
๐ Limitacoes da Avaliacao Manual
- โInconsistencia: Dois avaliadores podem discordar sobre a qualidade da mesma resposta
- โVelocidade: Avaliar 100 respostas manualmente leva horas; automatizado, segundos
- โCobertura: E impossivel testar todos os edge cases manualmente a cada mudanca
- โRegressao: Sem evals automatizados, voce nao sabe se uma mudanca quebrou algo que funcionava
๐ก ROI da Automacao
Investir em evals automatizados parece caro no inicio, mas o retorno e exponencial. Uma suite de 50 testes que roda em 2 minutos substitui horas de revisao manual e detecta regressoes que humanos perderiam. O custo de um bug em producao e sempre maior que o custo de um eval.
๐ Metricas e Criterios
Antes de avaliar, voce precisa definir o que medir. Metricas vagas como "qualidade" nao servem โ voce precisa de criterios especificos, mensuraveis e relevantes para o caso de uso.
๐ Tipos de Metricas
Quantitativas
- โขExatidao (match com golden answer)
- โขLatencia (tempo de resposta)
- โขCusto por query (tokens consumidos)
- โขComprimento da resposta (dentro do range)
Qualitativas
- โขRelevancia (responde a pergunta?)
- โขCoerencia (logica e fluida?)
- โขTom adequado (formal, casual?)
- โขSeguranca (sem conteudo proibido?)
โ๏ธ Metricas Compostas
Combine metricas com pesos para criar um score unico:
score_final = (
exatidao * 0.35 +
relevancia * 0.25 +
formato * 0.15 +
seguranca * 0.15 +
tom * 0.10
)
โ๏ธ LLM-as-Judge
A tecnica mais poderosa para evals qualitativos: usar um LLM como juiz para avaliar saidas de outro LLM. O juiz recebe uma rubrica e atribui scores de forma consistente e escalavel.
๐ Prompt de Juiz (Template)
Voce e um avaliador especialista.
Avalie a resposta abaixo usando esta rubrica:
- 5 (Excelente): Completa, precisa, bem formatada
- 4 (Bom): Correta com pequenas omissoes
- 3 (Adequado): Parcialmente correta, faltam detalhes
- 2 (Fraco): Erros significativos ou incompleta
- 1 (Ruim): Incorreta ou irrelevante
Pergunta: {pergunta}
Resposta: {resposta}
Output: JSON com score e justificativa
๐จ Cuidados com LLM-as-Judge
- Vies de posicao: O juiz tende a preferir a primeira ou ultima opcao โ randomize a ordem
- Vies de verbosidade: Respostas mais longas tendem a receber scores maiores sem serem melhores
- Calibracao: Valide o juiz contra avaliacoes humanas โ busque agreement rate acima de 80%
- Custo: Cada eval e uma chamada extra ao LLM โ considere usar modelo menor como juiz
๐ Datasets de Teste
Evals sao tao bons quanto os dados de teste. Um dataset bem construido cobre o caminho feliz, edge cases, inputs adversariais e cenarios do mundo real.
Tipos de Casos de Teste
- โGolden set: Perguntas com respostas ideais conhecidas
- โEdge cases: Inputs ambiguos, muito longos, vazios
- โAdversariais: Tentativas de injection e jailbreak
- โReais: Perguntas reais coletadas de usuarios
Boas Praticas
- โTamanho minimo: 30-50 casos para significancia
- โDiversidade: Cobrir todos os cenarios de uso
- โVersionamento: Tratar como codigo (Git)
- โManutencao: Atualizar quando o dominio muda
๐ก Formato Recomendado
Armazene datasets em JSONL (uma linha JSON por caso): {"input": "...", "expected": "...", "tags": ["edge_case"], "metadata": {}}. Facil de versionar, filtrar e expandir.
๐ CI/CD para Prompts
Integrar evals no pipeline de CI/CD garante que nenhuma mudanca em prompt vai para producao sem passar por testes automatizados. E o mesmo principio de software engineering aplicado a prompts.
๐ง Pipeline de CI/CD para Prompts
๐ Thresholds e Alertas
- Hard gates: Score abaixo do minimo bloqueia o deploy automaticamente
- Soft gates: Degradacao pequena gera alerta mas permite deploy com aprovacao manual
- Trend alerts: Degradacao gradual ao longo de N deploys dispara investigacao
- Rollback automatico: Se metricas em producao caem apos deploy, reverter para versao anterior
๐งช Exercicio: Pipeline de Evals
Construa um pipeline simples de avaliacao que testa um prompt com 10 casos de teste, calcula metricas e gera um relatorio. Voce vai vivenciar o ciclo completo de eval.
๐ Tarefa do Exercicio
Passo 1 โ Dataset: Crie 10 casos de teste para um prompt de classificacao de sentimento
- 4 casos positivos, 3 negativos, 2 neutros, 1 ambiguo
- Cada caso: input + expected output + tags
Passo 2 โ Metricas: Defina 3 metricas
- Exatidao: match com label esperado
- Formato: resposta no JSON correto
- Confianca: modelo indica nivel de certeza
Passo 3 โ Automacao: Execute o prompt nos 10 casos e colete resultados
Passo 4 โ Relatorio: Calcule scores e identifique padroes de falha
Use promptfoo ou um script simples em Python. O importante e o processo, nao a ferramenta.
๐ Resumo do Modulo
Proximo Modulo:
3.7 โ Pipelines e Orquestracao: conecte multiplos LLMs e ferramentas em pipelines robustos