Você colocou o sistema de IA em produção. As primeiras semanas parecem ótimas. Usuários estão satisfeitos. Mas como saber se as respostas estão realmente boas?
E mais importante: como detectar quando a qualidade começa a cair — antes que os usuários reclamem?
Avaliação de LLMs em produção é um problema não trivial que muitas equipes só descobrem que deveriam ter resolvido depois que algo dá errado.
Por que avaliar LLMs é fundamentalmente diferente
Em sistemas determinísticos, você tem critérios binários: a função retornou o valor correto ou não. assert resultado == esperado.
Com LLMs, as respostas são:
- Probabilísticas: mesmo input pode gerar outputs diferentes
- Em linguagem natural: não há resposta única “correta”
- Multi-dimensionais: qualidade envolve precisão factual + relevância + tom + formato + segurança
Não existe assert resposta_llm == "texto esperado" que funcione.
As dimensões de qualidade que importam
Diferentes casos de uso priorizam dimensões diferentes:
| Dimensão | O que mede | Quando importa mais |
|---|---|---|
| Precisão factual | Informação está correta? | RAG, Q&A, análise de documentos |
| Relevância | Responde o que foi perguntado? | Busca, suporte ao cliente |
| Completude | Cobriu todos os aspectos? | Relatórios, resumos executivos |
| Formato | Segue estrutura esperada (JSON, markdown)? | APIs, integrações, automações |
| Tom | Adequado ao contexto (formal, técnico, amigável)? | Atendimento, conteúdo de marketing |
| Concisão | Resposta é suficientemente direta? | Chatbots, interfaces móveis |
| Segurança | Evita conteúdo prejudicial? | Todos os casos |
Você não vai medir todas as dimensões sempre. Escolha as 2-4 mais críticas para o seu caso.
Camada 1: Golden Dataset (seu instrumento de calibração)
O golden dataset é seu padrão-ouro de avaliação. Um conjunto curado de pares pergunta-resposta esperada que representa os casos mais importantes do sistema.
Como construir
1. Colete os 50-100 casos mais importantes:
- Perguntas mais frequentes (80% do volume)
- Casos críticos (alto impacto se errar)
- Edge cases conhecidos (já causaram problemas antes)
2. Defina resposta ideal para cada caso:
- Pode incluir múltiplas respostas aceitáveis
- Anote o que constitui sucesso vs falha
- Documente nuances importantes
Exemplo de entrada no golden dataset:
{
"id": "GOLD-001",
"input": "Qual é o prazo para contestar uma cobrança indevida no cartão de crédito?",
"contexto": "Base de conhecimento de direitos do consumidor",
"respostas_aceitaveis": [
"O prazo é de 90 dias a partir da data de vencimento da fatura conforme Circular BACEN 3.598/2012.",
"Você tem 90 dias contados da data de vencimento da fatura para contestar cobranças indevidas (Circular BACEN 3.598/2012)."
],
"criterios_sucesso": {
"menciona_prazo_90_dias": true,
"menciona_base_legal": true,
"tom_claro_acessivel": true
},
"respostas_incorretas_comuns": [
"30 dias" (prazo errado),
"Depende do banco" (informação incorreta - prazo é regulamentado)
],
"severidade_se_errar": "alta"
}
3. Rode o golden dataset regularmente:
- Antes de cada deploy (validação)
- Semanalmente mesmo sem mudanças (detecção de deriva)
- Após atualizações de modelo do provedor
Limitações do golden dataset
❌ Não captura casos raros que você não pensou ❌ Não detecta inputs maliciosos ou adversariais ❌ Não testa em volume (só 50-100 casos)
Por isso não é suficiente sozinho — precisa de camadas adicionais.
Camada 2: LLM-as-a-Judge (avaliação automatizada em escala)
Use um LLM para avaliar as respostas de outro LLM. Parece recursivo, mas funciona surpreendentemente bem.
Implementação
def avaliar_resposta_com_llm(
pergunta: str,
resposta_sistema: str,
contexto_fornecido: str
) -> dict:
prompt_avaliador = f"""
Você é um avaliador especializado em sistemas de Q&A sobre legislação brasileira.
Avalie a resposta abaixo em uma escala de 1-5 para cada critério.
PERGUNTA DO USUÁRIO:
{pergunta}
CONTEXTO FORNECIDO AO SISTEMA:
{contexto_fornecido}
RESPOSTA DO SISTEMA:
{resposta_sistema}
Avalie nos seguintes critérios (1=péssimo, 5=excelente):
1. Precisão factual: A resposta está factualmente correta com base no contexto?
2. Relevância: A resposta responde diretamente à pergunta?
3. Completude: Todos os aspectos importantes foram cobertos?
4. Clareza: A resposta é clara e fácil de entender?
5. Citação de fonte: Quando aplicável, cita a base legal ou fonte corretamente?
Retorne JSON estruturado:
{{
"scores": {{
"precisao": 1-5,
"relevancia": 1-5,
"completude": 1-5,
"clareza": 1-5,
"citacao": 1-5
}},
"score_geral": 1-5,
"justificativa": "explicação breve de cada score",
"problemas_criticos": ["lista de problemas graves, se houver"],
"aprovado": true/false
}}
"""
# Use modelo DIFERENTE ou mais forte para avaliar
# Ideal: Claude avalia GPT, ou vice-versa
avaliacao = llm_avaliador.invoke(prompt_avaliador)
return json.loads(avaliacao)
Boas práticas para LLM-as-a-Judge
1. Use modelo diferente para avaliar:
- Se sistema usa GPT-4o, avalie com Claude ou vice-versa
- Evita viés de auto-avaliação
2. Prompts de avaliação bem estruturados:
- Critérios explícitos e objetivos
- Escalas claras (1-5, não “bom/ruim”)
- Exemplos de cada nível quando possível
3. Valide o avaliador com golden dataset:
- O LLM-avaliador também pode estar errado
- Compare avaliação automática com avaliação humana em amostra
- Se concordância < 80%, refine prompt do avaliador
Limitações conhecidas
⚠️ Bias de comprimento: LLMs tendem a favorecer respostas mais longas ⚠️ Bias de linguagem: Favorecem respostas com linguagem similar à sua ⚠️ Bias de provedor: GPT avaliando GPT tende a dar scores mais altos
Mitigação: validação humana periódica + uso de avaliador de provedor diferente.
Camada 3: Métricas de produção em tempo real
Para monitoramento contínuo, capture métricas que não requerem avaliação humana:
Métricas técnicas
Latência (tempo de resposta):
- P50, P95, P99
- Degradação pode indicar: problemas de infraestrutura, prompts que geram outputs muito longos, throttling de API
Taxa de timeout:
- % de requisições que excedem timeout configurado
- Spike indica problema de performance
Comprimento médio de resposta (tokens):
- Respostas muito curtas podem indicar recusas encobertas ou erros
- Respostas muito longas podem indicar deriva de comportamento
Taxa de erro de API:
- 4xx (client error): problema no código
- 5xx (server error): problema do provedor
- 429 (rate limit): volume excedendo limite
Métricas de comportamento
Taxa de respostas recusadas:
- Quantas requisições o modelo recusou por política de segurança
- Spike pode indicar: mudança no comportamento do modelo, abuso/ataque
Taxa de fallback para humano:
- Em sistemas com escalamento humano
- Se taxa sobe, sistema está com dificuldade
Feedback explícito do usuário:
- Polegares (👍/👎)
- Avaliações 1-5 estrelas
- Flags de “resposta inútil” ou “resposta incorreta”
Mesmo que poucos usuários avaliem (tipicamente 2-8%), o sinal é valioso.
Dashboard de monitoramento
┌─────────────────────────────────────────────┐
│ LLM PRODUCTION METRICS - Last 24h │
├─────────────────────────────────────────────┤
│ Total Requests: 12,450 │
│ Success Rate: 98.2% │
│ Avg Latency (P95): 1.8s │
│ Timeout Rate: 0.3% │
├─────────────────────────────────────────────┤
│ Quality Signals: │
│ 👍 Positive Feedback: 87.2% (of 340 votes)│
│ 👎 Negative Feedback: 12.8% │
│ Refusal Rate: 0.8% │
│ Escalation Rate: 3.2% │
├─────────────────────────────────────────────┤
│ Token Usage: │
│ Input Tokens: 4.2M │
│ Output Tokens: 1.8M │
│ Est. Cost: $142.00 │
└─────────────────────────────────────────────┘
Camada 4: Análise qualitativa periódica (não automatizável)
Métricas automáticas não substituem revisão humana periódica.
Rotina semanal de revisão
1. Amostragem aleatória (20-30 respostas):
- Use
SELECT * FROM responses ORDER BY RANDOM() LIMIT 30 - Leia cada resposta como se fosse usuário
- Anote problemas que métricas não capturariam
2. Análise de reclamações:
- Toda reclamação de usuário sobre IA deve ser investigada
- Categorize: erro factual, tom inadequado, formato incorreto, lentidão
- O padrão de reclamações revela pontos fracos
3. Comparação com versões anteriores:
- Quando você muda prompt/modelo, compare amostras lado a lado
- Mesma pergunta, versão antiga vs nova
- Detecta regressões não óbvias
Template de revisão semanal:
## Revisão Qualitativa - Semana 08/2026
### Amostra aleatória (30 respostas)
- ✅ Excelentes: 23 (76,7%)
- ⚠️ Aceitáveis mas melhoráveis: 5 (16,7%)
- ❌ Problemáticas: 2 (6,7%)
### Problemas identificados
1. Respostas muito longas para perguntas simples (3 casos)
- Ação: Ajustar prompt para ser mais conciso
2. Não citou fonte em 2 casos onde deveria
- Ação: Reforçar instrução de citação
### Reclamações da semana
- 2 reclamações de "resposta genérica" (faltou contexto específico)
- 1 reclamação de informação desatualizada (doc na base estava old)
### Ações
- [ ] Refinar prompt para concisão
- [ ] Atualizar documento XYZ na base de conhecimento
- [ ] Adicionar 2 casos problemáticos ao golden dataset
Detecção de deriva de comportamento (model drift)
Deriva = mudança gradual no comportamento do modelo ao longo do tempo, sem você ter mudado nada.
Por que acontece:
- Provedores atualizam modelos (mesmo model ID pode ter comportamento diferente após update)
- Dados de entrada mudam (usuários fazem perguntas diferentes)
- Conhecimento do mundo muda (eventos recentes que modelo não conhecia)
Como detectar deriva
1. Rode golden dataset semanalmente:
- Mesmo sem mudanças no seu sistema
- Compare scores com semana anterior
- Queda de 5%+ em alguma métrica = investigar
2. Monit ore métricas de produção com alertas estatísticos:
- Não apenas limites fixos (“latência > 3s”)
- Alertas de desvio estatístico: “latência P95 está 2 desvios-padrão acima da média de 30 dias”
3. Quando provedor anuncia update, teste imediatamente:
- OpenAI, Anthropic anunciam atualizações em changelogs
- Rode golden dataset na versão nova antes de migrar produção
- Compare resultados lado a lado
Exemplo de deriva detectada:
⚠️ ALERTA - DERIVA DE COMPORTAMENTO DETECTADA
Modelo: GPT-4o (versão atualizada pelo provedor em 25/02)
Golden Dataset Score:
- Antes (versão anterior): 4.2/5.0
- Agora (versão nova): 3.8/5.0 (-9,5%)
Degradação em:
- Precisão factual: 4.5 → 4.1 (-8,9%)
- Citação de fontes: 4.0 → 3.4 (-15,0%)
Possível causa: Nova versão do modelo é mais conservadora em citações
Ação necessária:
1. Revisar prompts para reforçar citação de fontes
2. Considerar manter versão anterior até correção
3. Reportar ao provedor se comportamento não melhorar
Responsável: Time de IA
Framework mínimo para começar hoje
Se você não tem nada implementado hoje, comece com o mínimo viável:
Semana 1:
- ✅ Construa golden dataset de 30 casos
- ✅ Configure logging de todas requisições/respostas
Semana 2:
- ✅ Implemente LLM-as-a-judge para rodar golden dataset automaticamente
- ✅ Configure para rodar a cada deploy
Semana 3:
- ✅ Adicione métricas básicas: latência, error rate, feedback rate
- ✅ Configure dashboard simples (pode ser Grafana, Datadog, ou até Google Sheets atualizado via script)
Semana 4+:
- ✅ Rotina semanal: amostragem manual de 20 respostas
Isso já é muito melhor do que confiar que “parece estar funcionando”.
Ferramentas e bibliotecas úteis
Avaliação automatizada:
- LangSmith (LangChain): plataforma completa de eval e monitoring
- PromptLayer: logging e avaliação de prompts
- Weights & Biases: experimentos e tracking de modelos
Métricas e observabilidade:
- Datadog APM: monitoring de performance
- Sentry: error tracking
- Grafana + Prometheus: dashboards custom
Open-source:
- RAGAS: framework para avaliar sistemas RAG
- TruLens: avaliação de qualidade de LLM apps
- deepeval: framework de testes para LLMs
Checklist de avaliação em produção
Antes de colocar em produção, você deve ter:
- Golden dataset com 30+ casos representativos
- Avaliação automática (LLM-as-a-judge ou similar)
- Logging de todas requisições e respostas
- Métricas básicas (latência, error rate, cost)
- Dashboard de monitoramento
- Alertas para anomalias (latency spike, error rate spike)
- Processo definido para revisão qualitativa periódica
- Responsável designado para monitoramento de qualidade
Se falta algum item, você está operando às cegas.
Se você tem um sistema de IA em produção e quer implementar monitoramento e avaliação de qualidade robustos, fale com a gente. Ajudamos a estruturar frameworks de avaliação adequados ao seu caso de uso específico, com golden datasets customizados e métricas que realmente importam para o seu negócio.