Pular para conteúdo

Capítulo 5.4 — Eval harness

🎯 Objetivo

Tornar avaliação contínua parte do CI/CD. Sem eval automatizado, qualquer mudança em prompt, modelo, tool ou retriever entra em produção no escuro.

🧠 Componentes

  • Datasets: golden, sintético, adversarial, regression, traces redigidos (ver Cap. 2.11).
  • Checks: deterministic (schema, regex, contratos), policy (Rego/Cedar tests), LLM-as-judge (com rubrica e calibração), human sampling (para casos críticos).
  • Release gates: critérios objetivos de aprovação para promover versão. Falha em policy ou em regressão crítica = bloqueio automático.

🧠 Eval de agentes multi-step

Avaliar agente é mais difícil do que avaliar LLM:

  • Trajetória importa, não só resposta final. Um agente que acerta a resposta passando por uma tool errada é um sucesso frágil.
  • Tool call accuracy por etapa: o agente escolheu a tool correta? Os argumentos passaram no schema?
  • Custo por sucesso, não só taxa de sucesso. Um agente que resolve mas consome 10x mais tokens não está melhor.
  • Replay de cenários com forks: e se a tool A tivesse falhado? O agente faz fallback correto?

📝 Exemplo de eval suite

eval_suite:
  name: support_agent_regression
  version: 4
  agent: support-agent@2.1.0
  datasets:
    - name: golden_support_cases_v3
      type: golden
    - name: prompt_injection_cases_v2
      type: adversarial
  checks:
    - id: schema_validity
      type: deterministic
      assertion: output.matches_schema("support_answer_v2")
    - id: groundedness
      type: llm_judge
      rubric: "Todas as afirmações factuais devem estar suportadas pelos trechos recuperados."
      threshold: 0.92
    - id: tool_call_accuracy
      type: deterministic_or_human_sample
      threshold: 0.95
    - id: pii_leakage
      type: policy
      assertion: no_unmasked_pii(output)
    - id: cost
      type: metric
      assertion: cost_per_task <= 0.20
    - id: latency
      type: metric
      assertion: p95_latency_ms <= 10000
  release_gate:
    fail_on_policy_violation: true
    minimum_pass_rate: 0.90
    require_human_review_for_failures: true

🧰 Exemplos práticos relacionados (planejados)

  • EX-EVAL-01 - eval harness com pytest + golden dataset.
  • EX-EVAL-02 - regression test de prompts.
  • EX-EVAL-03 - eval de retrieval com Ragas.