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

TipoPergunta principalMétricas-chaveFrameworks indicadosNota Codex
Prompt isoladoOutput atende à rubrica?Accuracy, completeness, format, tonePromptfoo, Braintrust, OpenAI Evals(esta trilha, notas 02-04)
RAG pipelineRetrieval trouxe info certa? Geração fiel?Context precision/recall, faithfulness, answer relevance, citation accuracyRagas, TruLens, DeepEval, Phoenix09 - Evaluation de RAG
AgentTarefa completou? Trajetória eficiente?Task completion rate, steps per task, tool call success, human intervention rateLangfuse, LangSmith, Braintrust09 - Evaluation de agents
LLM baseModelo é capaz na distribuição?Benchmarks (MMLU, HumanEval, GSM8K, ARC, HellaSwag)lm-evaluation-harness, BIG-bench17 - Evaluation de LLMs em produção (parcial)
MultimodalOutput coerente cross-modal?CLIP-score, multi-modal faithfulnessPhoenix, 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:

  1. Chunk relevante não existe no corpus (parse/chunk ruim)
  2. Chunk existe mas retrieval não pegou
  3. Rerank baixou o chunk certo
  4. Chunks corretos mas prompt não usou
  5. Modelo complementou com conhecimento próprio (faithfulness ruim)

Métricas agregadas escondem qual delas é o gargalo.

Métricas canônicas (Ragas):

MétricaMedeEstágio
Context precisionChunks recuperados são relevantes?Retrieval
Context recallChunks relevantes foram recuperados?Retrieval
FaithfulnessResposta usou só os chunks?Generation
Answer relevanceResposta atende à pergunta?Generation
Citation accuracyCitaçõ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étricaMedeAlvo
Task completion rate% tarefas terminadas corretamente>75% prod, >90% tasks bem-definidas
Steps per taskEficiência da trajetóriaDecrescente 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 catalogDistribuição de falhasStable 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):

BenchmarkMedeDomínio
MMLUConhecimento multi-domínio (57 tópicos)Genérico
MMLU-ProMMLU expandido, mais difícilGenérico
HumanEvalGeração de código PythonCoding
HumanEval+HumanEval com testes adicionaisCoding
GSM8KMath grade schoolMatemática
MATHMath olimpíadaMatemática avançada
ARC (AI2 Reasoning Challenge)Raciocínio científicoCiência
HellaSwagSenso comum / completionGenérico
TruthfulQAVeracidade vs hallucinationRobustez
BIG-bench200+ tarefas diversasGenérico amplo
SWE-benchResolução de issues reais em repos open sourceCoding 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

Fontes

  • Es et al.RAGAS: Automated Evaluation of Retrieval Augmented Generation (arxiv:2309.15217, 2023)
  • EleutherAIlm-evaluation-harness (github)
  • OpenAIHumanEval paper + dataset (2021)
  • Hendrycks et al.MMLU (arxiv:2009.03300, 2020)
  • Cobbe et al.GSM8K (arxiv:2110.14168, 2021)
  • Princeton + StanfordSWE-bench (arxiv:2310.06770, 2023)
  • Chip HuyenAI Engineering (2025), cap. eval por contexto
  • AnthropicEval cookbook — agent and RAG patterns (2026)