08 - Eval por contexto — LLM, RAG, agent, prompt
TL;DR
Eval não é uma coisa só. O que você mede muda dramaticamente com o que está avaliando. Prompt isolado: golden set + rubrica simples. RAG pipeline: retrieval (precision@k, MRR, context recall) separado de generation (faithfulness, answer relevance). Agent: trajectory eval, tool call success, multi-step reasoning, task completion rate. LLM base (provider, modelo): benchmarks padronizados (MMLU, HumanEval, GSM8K, ARC). Cada contexto tem métrica-chave e frameworks indicados diferentes. Esta nota é o mapa que liga essa trilha às três notas contextuais existentes: 09 - Evaluation de agents, 17 - Evaluation de LLMs em produção, 09 - Evaluation de RAG.
Por que eval muda com contexto
A intuição básica: você não avalia um martelo do mesmo jeito que um helicóptero.
Prompt isolado: 1 chamada, 1 output
→ eval = output bom?
RAG pipeline: retrieval → rerank → generation
→ 3 estágios podem falhar
→ eval precisa isolar cada um
Agent: planning → tool calls → recovery → loop
→ trajetória importa, não só output final
→ eval precisa medir processo
LLM base (modelo do provider): genérico
→ eval em distribuição ampla de tarefas
→ benchmarks padronizados
Cada tipo de sistema falha de jeitos diferentes. Métrica boa pra um pode ser cega pro outro.
Tabela canônica
| Tipo | Pergunta principal | Métricas-chave | Frameworks indicados | Nota Codex |
|---|---|---|---|---|
| Prompt isolado | Output atende à rubrica? | Accuracy, completeness, format, tone | Promptfoo, Braintrust, OpenAI Evals | (esta trilha, notas 02-04) |
| RAG pipeline | Retrieval trouxe info certa? Geração fiel? | Context precision/recall, faithfulness, answer relevance, citation accuracy | Ragas, TruLens, DeepEval, Phoenix | 09 - Evaluation de RAG |
| Agent | Tarefa completou? Trajetória eficiente? | Task completion rate, steps per task, tool call success, human intervention rate | Langfuse, LangSmith, Braintrust | 09 - Evaluation de agents |
| LLM base | Modelo é capaz na distribuição? | Benchmarks (MMLU, HumanEval, GSM8K, ARC, HellaSwag) | lm-evaluation-harness, BIG-bench | 17 - Evaluation de LLMs em produção (parcial) |
| Multimodal | Output coerente cross-modal? | CLIP-score, multi-modal faithfulness | Phoenix, custom | (futuro) |
1. Eval de prompt isolado
Cenário: um prompt único transforma input em output. Sem retrieval, sem tools, sem multi-step.
Tipos de tarefa típicos:
- Classificação (categorize ticket)
- Extração estruturada (extrai dados de email)
- Resumo (summarize artigo)
- Tradução (PT-EN)
- Reescrita (formaliza tom)
Eval pipeline:
for item in golden_set:
output = llm(prompt.format(input=item.input))
score = rubric.apply(output, expected=item.expected)
record(item.id, score)
aggregate = mean(scores), per_dimension(scores)Métricas:
- Accuracy (classificação): % correto
- Schema validity (extração): % parseável + completo
- Embedding similarity (resumo): cosine > threshold
- LLM-as-judge (subjetivo)
Frameworks: Promptfoo brilha aqui — YAML declarativo, comparação cross-provider, eval-as-code.
Para o aprofundamento, esta trilha inteira (notas 01-07) cobre prompt isolado como caso base.
2. Eval de RAG pipeline
Cenário: pergunta → retrieve chunks → rerank → generate com chunks no contexto.
A regra fundamental (vinda de 09 - Evaluation de RAG): medir retrieval separado de generation.
Por quê: resposta ruim em RAG tem 5 causas possíveis:
- Chunk relevante não existe no corpus (parse/chunk ruim)
- Chunk existe mas retrieval não pegou
- Rerank baixou o chunk certo
- Chunks corretos mas prompt não usou
- Modelo complementou com conhecimento próprio (faithfulness ruim)
Métricas agregadas escondem qual delas é o gargalo.
Métricas canônicas (Ragas):
| Métrica | Mede | Estágio |
|---|---|---|
| Context precision | Chunks recuperados são relevantes? | Retrieval |
| Context recall | Chunks relevantes foram recuperados? | Retrieval |
| Faithfulness | Resposta usou só os chunks? | Generation |
| Answer relevance | Resposta atende à pergunta? | Generation |
| Citation accuracy | Citações [N] apontam pro chunk real? | Generation |
Frameworks:
- Ragas — mais popular, métricas canônicas, LLM-as-judge interno
- TruLens — tracing + eval integrados
- DeepEval — pytest-style, fácil em CI
- Phoenix — visual debugging
- Langfuse — observability em prod
Aprofundamento: 09 - Evaluation de RAG tem o tratamento completo — métricas, Ragas code, golden set com expected_chunks, anti-patterns, pipeline CI.
3. Eval de agent
Cenário: input → o agent planeja → faz tool calls → recupera de falhas → produz output final em N steps.
Por que agent é diferente:
LLM puro: Input → output → match com expected
Agent: Input → 12 steps com decisões → output
→ mesmo input pode levar a 2 outputs igualmente válidos
→ caminho importa, não só destino
Métricas-chave (vindas de 09 - Evaluation de agents):
| Métrica | Mede | Alvo |
|---|---|---|
| Task completion rate | % tarefas terminadas corretamente | >75% prod, >90% tasks bem-definidas |
| Steps per task | Eficiência da trajetória | Decrescente ao longo do tempo |
| Tool call success rate | % chamadas de tool corretas | >85% |
| Cost per task | $ por tarefa | <budget definido |
| Human intervention rate | % vezes humano precisou intervir | <20%, decrescente |
| Error type catalog | Distribuição de falhas | Stable ou shrinking |
Métodos específicos pra agent:
- Trajectory eval — não só o output, mas a sequência de tool calls + reasoning
- Trace review humana — 1-2h/semana lendo traces reais (09 - Evaluation de agents enfatiza isso como “eval mais valioso”)
- Regression em error types — bug novo vira teste permanente
Frameworks:
- Langfuse — traces de agent em prod
- LangSmith — integração nativa LangChain, eval de chain
- Braintrust — eval com versioning, comparação visual de trajetórias
Aprofundamento: 09 - Evaluation de agents cobre completion rate, error type catalog, trace review, regression patterns específicos pra agentic systems.
4. Eval de LLM base
Cenário: você está avaliando o modelo em si, não um produto sobre ele. Provider novo, fine-tuned model, comparação cross-modelo.
Benchmarks padronizados (2026):
| Benchmark | Mede | Domínio |
|---|---|---|
| MMLU | Conhecimento multi-domínio (57 tópicos) | Genérico |
| MMLU-Pro | MMLU expandido, mais difícil | Genérico |
| HumanEval | Geração de código Python | Coding |
| HumanEval+ | HumanEval com testes adicionais | Coding |
| GSM8K | Math grade school | Matemática |
| MATH | Math olimpíada | Matemática avançada |
| ARC (AI2 Reasoning Challenge) | Raciocínio científico | Ciência |
| HellaSwag | Senso comum / completion | Genérico |
| TruthfulQA | Veracidade vs hallucination | Robustez |
| BIG-bench | 200+ tarefas diversas | Genérico amplo |
| SWE-bench | Resolução de issues reais em repos open source | Coding agentic |
Frameworks:
- lm-evaluation-harness (EleutherAI) — padrão de fato pra benchmarks padronizados
- BIG-bench — coleção da Google
- Helm (Stanford) — Holistic Evaluation of Language Models
Cuidado: benchmarks medem capabilities do modelo, não performance na sua tarefa específica. Modelo que vence MMLU pode ser pior pra classificação de ticket que um modelo menor com prompt bem feito.
Aprofundamento: 17 - Evaluation de LLMs em produção cobre eval em produção (golden set + judge + traces + A/B), que é o mais relevante na maioria dos casos. Benchmarks acadêmicos são úteis quando o trabalho é escolher entre modelos base.
5. Multimodal e casos especiais (mencionado)
Eval de output multimodal (imagem, áudio, vídeo) é uma fronteira em 2026:
- CLIP-score — similaridade texto-imagem
- Multi-modal faithfulness — texto descreve a imagem corretamente?
- Speech eval — WER (Word Error Rate), MOS (Mean Opinion Score)
Frameworks como Phoenix têm suporte mais maduro pra multi-modal. Ragas adicionou eval multimodal em 2026. É domínio em rápida evolução.
Decision tree resumido
O que você está avaliando?
├── Um prompt isolado (chamada única)?
│ → Notas 02-04 desta trilha + Promptfoo
│
├── Pipeline RAG (retrieval + generation)?
│ → [[RAG e Vector Databases/09 - Evaluation de RAG]] + Ragas
│
├── Agent (multi-step + tools)?
│ → [[Anatomia de Agents/09 - Evaluation de agents]] + Langfuse/Braintrust
│
├── Modelo base novo (escolha de provider)?
│ → lm-evaluation-harness + benchmarks padronizados
│
└── Sistema em produção, geral?
→ [[Anatomia dos LLMs/17 - Evaluation de LLMs em produção]] (4 pilares)
Combinando contextos — o caso real
Produto real raramente é só um desses. Exemplo: assistente de suporte com:
- RAG sobre base de conhecimento
- Tools pra criar ticket, consultar status
- Multi-step quando precisa de info adicional do usuário
Eval combinado:
eval_pipeline:
retrieval:
metrics: [context_precision, context_recall]
framework: ragas
threshold: { precision: 0.7, recall: 0.8 }
generation:
metrics: [faithfulness, answer_relevance]
framework: ragas
threshold: { faithfulness: 0.9 }
agent_trajectory:
metrics: [tool_call_success, steps_per_task, completion_rate]
framework: langfuse
threshold: { completion: 0.85, steps: max=8 }
end_to_end:
metrics: [user_satisfaction_judge, format_validity]
framework: braintrust
threshold: { satisfaction: 4.0 }Cada estágio com seu eval. Failure em qualquer um sinaliza onde está o problema. Eval só end-to-end esconde diagnosis.
Anti-patterns
- Métrica única pra sistema multi-componente — RAG com só “answer relevance” esconde retrieval ruim
- Benchmark acadêmico como eval de produto — MMLU não mede sua tarefa
- Eval de agent sem trace review — métrica agregada perde bugs sutis em trajetória
- Mesmo dataset pra tudo — eval de prompt, RAG e agent precisam datasets diferentes
- Sem isolar componentes — performance ruim na ponta sem saber qual estágio falhou
Veja também
- 17 - Evaluation de LLMs em produção — o tratamento aprofundado de eval em prod (os 4 pilares)
- 09 - Evaluation de agents — eval específico pra agents
- 09 - Evaluation de RAG — métricas canônicas Ragas
- 02 - Golden datasets — como construir — golden set por tipo
- 06 - Frameworks 2026 — Promptfoo, Braintrust, Langfuse, Patronus, Phoenix — qual framework por contexto
- 09 - Evaluation Layer — a camada onde tudo isso acontece
Fontes
- Es et al. — RAGAS: Automated Evaluation of Retrieval Augmented Generation (arxiv:2309.15217, 2023)
- EleutherAI — lm-evaluation-harness (github)
- OpenAI — HumanEval paper + dataset (2021)
- Hendrycks et al. — MMLU (arxiv:2009.03300, 2020)
- Cobbe et al. — GSM8K (arxiv:2110.14168, 2021)
- Princeton + Stanford — SWE-bench (arxiv:2310.06770, 2023)
- Chip Huyen — AI Engineering (2025), cap. eval por contexto
- Anthropic — Eval cookbook — agent and RAG patterns (2026)