Phase 14 - Lesson 30
Desenvolvimento de Agentes Orientado a Avaliação
Orientação da Anthropic: "comece com prompts simples, otimize-os com avaliação abrangente e adicione sistemas agênticos de múltiplas etapas apenas quando necessário." A avaliação não é a última etapa. É o loop externo que direciona todas as outras escolhas na Fase 14.
Tipo: Aprender + Construir Linguagens: Python (stdlib) Pré-requisitos: Toda a Fase 14. Tempo: ~60 minutos
Objetivos de Aprendizado
- Nomear as três camadas de avaliação — benchmarks estáticos, offline customizada, produção online — e para que serve cada uma.
- Explicar o loop estreito de avaliador-otimizador.
- Descrever a melhor prática de 2026: as avaliações (evals) vivem junto ao código, rodam no CI e servem como barreira em PRs.
- Conectar cada lição da Fase 14 ao caso de avaliação que ela gera.
O Problema
Agentes passam em demonstrações. Eles falham em produção de maneiras que as demonstrações não conseguem prever. Os benchmarks respondem a "este modelo é amplamente capaz?" e não a "este agente está entregando as correções corretas para o meu produto?" A resposta: avaliação em três camadas, rodando continuamente, com cada guardrail e regra aprendida mapeados para um caso de avaliação.
O Conceito
Três camadas de avaliação
Benchmarks estáticos — SWE-bench Verified para código (Lição 19), WebArena/OSWorld para navegação / desktop (Lição 20), GAIA para generalista (Lição 19), BFCL V4 para uso de ferramentas (Lição 06). Use para comparação entre modelos e barreira contra regressões (regression gating). A contaminação é real: o SWE-bench+ encontrou 32,67% de vazamento de soluções. Sempre reporte pontuações Verified / auditadas por +.
Avaliações offline customizadas — o formato do seu produto:
- LLM-as-judge (Langfuse, Phoenix, Opik — Lição 24).
- Baseadas em execução (rodar a correção, verificar os testes).
- Baseadas em trajetória (comparar sequências de ações contra o gabarito [gold]; OSWorld-Human mostra que os melhores agentes fazem 1,4-2,7x mais etapas do que o gabarito).
Avaliações online — produção:
- Replay de sessões (Langfuse).
- Alertas acionados por guardrails (Lição 16, 21).
- Rastreamento de custo / latência por etapa (spans OTel da Lição 23).
Avaliador-otimizador (Anthropic)
O loop estreito:
- O proponente (Proposer) gera a saída.
- O avaliador (Evaluator) julga.
- Refina até que o avaliador aprove.
Este é o Self-Refine (Lição 05) generalizado. Qualquer fluxo de agente com o qual você se importe pode ser envolvido em um avaliador-otimizador para maior confiabilidade.
Melhor prática de 2026
- As avaliações vivem junto ao código.
- Rodam no CI a cada PR.
- Bloqueiam o merge com base nas pontuações de avaliação (ex: "nenhuma regressão > 5% em relação à main").
- Cada guardrail é mapeado para um caso de avaliação.
- Cada regra aprendida (Reflexion, regra de aprendizado do fluxo de trabalho pro) é mapeada para um caso de falha.
Juntando tudo na Fase 14
Cada lição na Fase 14 gera casos de avaliação:
| Lição | Caso de avaliação que gera |
|---|---|
| 01 Agent Loop | Orçamento esgotado, guarda de loop infinito |
| 02 ReWOO | O planejador replaneja corretamente quando uma ferramenta falha |
| 03 Reflexion | Reflexões aprendidas se aplicam na tentativa de repetição |
| 05 Self-Refine/CRITIC | O juiz aprova a saída refinada |
| 06 Tool Use | A coerção de argumentos funciona; ferramentas desconhecidas são rejeitadas |
| 07-10 Memory | As citações de recuperação correspondem às fontes; fatos obsoletos são invalidados |
| 12 Workflow Patterns | Cada padrão produz a saída correta |
| 13 LangGraph | A retomada (resume) reproduz o estado exatamente |
| 14 AutoGen Actors | A DLQ captura manipuladores travados |
| 16 OpenAI Agents SDK | O guardrail é acionado nas entradas corretas |
| 17 Claude Agent SDK | Resultados do subagente retornam ao orquestrador |
| 19-20 Benchmarks | Pontuação do SWE-bench Verified, taxa de sucesso do WebArena, eficiência do OSWorld |
| 21 Computer Use | A segurança por etapa captura DOM injetado |
| 23 OTel | Spans emitem atributos obrigatórios |
| 26 Failure Modes | Detectores marcam falhas conhecidas |
| 27 Prompt Injection | O PVE recusa recuperações envenenadas |
| 28 Orchestration | O supervisor roteia para o especialista correto |
| 29 Runtime Shapes | A DLQ lida com N% de falhas |
Se o seu conjunto de avaliações tiver casos para cada um, você cobriu a Fase 14.
Onde o desenvolvimento orientado a avaliações falha
- Sem linha de base (baseline). Avaliações sem uma última versão boa conhecida são ilegíveis. Armazene as linhas de base.
- LLM-judge sem ancoragem (grounding). Juízes também alucinam. Padrão CRITIC (Lição 05) — o juiz se ancora em ferramentas externas.
- Overfitting a avaliações. Otimizar para a avaliação desvia da utilidade em produção. Rotacione os casos.
- Avaliações instáveis (flaky evals). Casos não determinísticos causam falsos alarmes. Fixe sementes (seeds), tire snapshots do estado.
Construa
code/main.py é um executor de testes de avaliação (eval harness) da biblioteca padrão:
- Registro de casos com categorias (benchmark, customizado, online).
- Um agente roteirizado sob teste.
- Loop avaliador-otimizador: propor, julgar, refinar até passar ou atingir o limite de rodadas.
- Barreira de CI: taxa de aprovação agregada + regressão em relação à linha de base.
Execute-o:
python3 code/main.py
Saída: passa/falha por caso, flag de regressão, veredito da barreira de CI.
Use
- Escreva os casos de avaliação no mesmo repositório do código do seu agente.
- Execute-os em cada PR via CI.
- Falhe o build em caso de regressão.
- Acompanhe a taxa de aprovação ao longo do tempo.
- Vincule cada falha de produção a um novo caso.
Ship It
outputs/skill-eval-suite.md constrói uma suíte de avaliação de três camadas para um produto de agente com barreiras de CI e rastreamento de regressão.
Exercícios
- Pegue uma de suas falhas de produção. Escreva um caso de avaliação que a reproduza. Seu agente passa por ela agora?
- Crie uma rubrica de LLM-judge para seu domínio com três dimensões (factual, tom, escopo). Avalie 50 sessões.
- Integre a suíte de avaliação ao CI. Falhe o build em caso de regressão >=5%.
- Adicione uma métrica de eficiência de trajetória: quantas etapas o agente realizou versus uma trajetória gabarito (gold)?
- Mapeie cada lição da Fase 14 para um caso de avaliação em sua suíte. Há algum faltando? Essa é uma lacuna a ser preenchida.
Termos-Chave
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| Benchmark estático | "Avaliação pronta para uso" | SWE-bench, GAIA, AgentBench, WebArena, OSWorld |
| Avaliação offline customizada | "Avaliação de domínio" | LLM-as-judge / execução / trajetória no formato do seu produto |
| Avaliação online | "Avaliação em produção" | Replay de sessão, alertas de guardrails, rastreamento de custo/latência |
| Avaliador-otimizador | "Propor-julgar-refinar" | Iterar até que o juiz aprove |
| Barreira de CI (CI gate) | "Bloqueador de merge" | Falhar o build em caso de regressão da avaliação |
| Linha de base (baseline) | "Última versão boa conhecida" | Pontuação de referência para detectar regressões |
| Eficiência de trajetória | "Etapas em relação ao gabarito" | Contagem de etapas do agente dividida pelo mínimo de um especialista humano |
Leitura Adicional
- Anthropic, Building Effective Agents — "comece simples, otimize com avaliações"
- OpenAI, SWE-bench Verified — o benchmark selecionado
- Berkeley Function Calling Leaderboard — benchmark de uso de ferramentas
- Langfuse docs — avaliações + replay de sessão na prática