05-04-03 — Agentic patterns da Anthropic: Building Effective Agents

⏱ 15 minFontes validadas em: 2026-04-29

TL;DR

Em dezembro/2024, a Anthropic publicou "Building Effective Agents" — o guia prático mais citado sobre agentes em produção. Define 5 workflow patterns (prompt chaining, routing, parallelization, orchestrator-workers, evaluator-optimizer) e diz claramente quando não usar agentes. Leitura obrigatória antes de qualquer projeto agentic.

Contexto: por que esse documento importa

A Anthropic tem acesso a milhares de deployments de agentes em produção via API. O blog post de dez/2024 destila o que funciona e o que não funciona — não é teoria, é observação empírica de padrões que geram valor real.

A máxima central da Anthropic: "Use the simplest solution possible. Agents are for when you need them, not because they sound cool." A maioria dos casos de uso é melhor atendida por workflows simples.

Os 5 Workflow Patterns

1. Prompt Chaining

A saída de um LLM vira o input do próximo. Linear e previsível.

graph LR A[Input] --> B["LLM 1:\nExtrair fatos"] --> C["LLM 2:\nAnalisar"] --> D["LLM 3:\nFormatação final"] --> E[Output] style B fill:#1e40af,color:#fff style C fill:#1e40af,color:#fff style D fill:#1e40af,color:#fff

Quando usar: Tarefas que se beneficiam de separação em steps lineares onde cada step tem um LLM especializado. Ex: extração → análise → formatação de relatório.

2. Routing

Um LLM classifica o input e direciona para o handler especializado.

graph TD A[Input] --> B["LLM Router:\nClassifica intent"] B -->|Técnico| C[LLM: Suporte Técnico] B -->|Comercial| D[LLM: Vendas] B -->|Financeiro| E[LLM: Billing] C --> F[Response] D --> F E --> F style B fill:#4c1d95,color:#fff

Quando usar: Quando diferentes categorias de input precisam de tratamento distinto. Economiza tokens ao não usar modelo pesado para tarefas simples.

3. Parallelization

Múltiplos LLMs processam o mesmo input em paralelo — seja por seções diferentes, seja por múltiplas perspectivas (voting).

graph TD A[Input] --> B{Divide tarefa} B --> C["LLM: Perspectiva 1"] B --> D["LLM: Perspectiva 2"] B --> E["LLM: Perspectiva 3"] C --> F[Agregador] D --> F E --> F F --> G[Resultado final] style F fill:#065f46,color:#fff

Quando usar: Tarefas grandes que podem ser divididas (seções de um relatório), ou quando você quer "voting" de múltiplos modelos para reduzir bias.

4. Orchestrator-Workers

Um LLM orquestrador planeja e delega sub-tarefas para workers. O padrão mais poderoso — e mais caro.

graph TD O["ORCHESTRATOR\n(decide o plano)"] --> W1["Worker 1:\nPesquisa"] O --> W2["Worker 2:\nCálculos"] O --> W3["Worker 3:\nRedação"] W1 --> O W2 --> O W3 --> O O --> R[Resultado] style O fill:#7c2d12,color:#fff

Quando usar: Quando você não sabe com antecedência quais sub-tarefas serão necessárias — o orquestrador decide dinamicamente. Coding assistants, análises abertas.

5. Evaluator-Optimizer

Um LLM gera, outro avalia, o loop continua até o resultado ser satisfatório. É o padrão de reflection formalizado.

graph LR A[Input] --> G["Generator\nLLM"] G --> E["Evaluator\nLLM"] E -->|"Não aprovado:\nfeedback"| G E -->|Aprovado| O[Output final] style E fill:#1e40af,color:#fff style O fill:#065f46,color:#fff

Quando usar: Geração de código com validação automática, criação de conteúdo com critérios claros de qualidade, queries SQL com verificação de sintaxe.

Quando NÃO usar agentes (segundo a Anthropic)

Não use agentes quando:
  • O fluxo pode ser definido com antecedência (use workflow/pipeline)
  • A tarefa requer determinismo total (auditoria, compliance)
  • O custo de erro é alto e não há human-in-the-loop
  • A latência é crítica (agentes são lentos)
  • O volume é alto e previsível (custo de agentes não escala bem)

Human-in-the-loop: a recomendação crítica

A Anthropic enfatiza: para agentes com ações irreversíveis (deletar dados, enviar emails, fazer transações), sempre inclua um ponto de confirmação humana antes da ação:

def execute_with_approval(action: str, impact: str, execute_fn):
    """Pausa e solicita aprovação humana para ações de alto impacto"""
    
    if impact in ["HIGH", "IRREVERSIBLE"]:
        print(f"\n⚠️ APROVAÇÃO NECESSÁRIA")
        print(f"Ação: {action}")
        print(f"Impacto: {impact}")
        
        approval = input("Aprovar? (s/n): ")
        if approval.lower() != "s":
            return {"status": "cancelled", "reason": "human_rejected"}
    
    return execute_fn()
Azure AI Content Safety: Para agentes em produção no Azure, combine com Azure AI Content Safety para filtrar outputs e inputs perigosos automaticamente. O Azure AI Foundry tem human-in-the-loop nativo no agent playground para validação antes do deployment.

Checklist antes de deployar um agente

  • ✅ Tentei resolver com workflow/pipeline primeiro?
  • ✅ Defini max_iterations, token budget e time limit?
  • ✅ Tenho human-in-the-loop para ações irreversíveis?
  • ✅ Estimei o custo por run e custo total?
  • ✅ Tenho logging de cada step para auditoria?
  • ✅ Defini critério claro de "tarefa concluída"?
  • ✅ Testei graceful degradation quando o limite é atingido?

Como isso se conecta

  • 05-01-02 — A decisão de quando usar agentes vs workflow é o tema central do tópico 01-02.
  • 05-02-02 — Evaluator-Optimizer é a formalização do padrão de reflection.
  • 05-03-01 — Orchestrator-Workers é um dos 5 padrões — aqui você vê o contexto completo.

Fontes

  1. Anthropic — "Building Effective Agents" (dezembro 2024) — o documento de referência deste tópico.
  2. Anthropic — Agents documentation — documentação técnica de implementação.
  3. Anthropic — Claude 3.7 Sonnet (extended thinking) — modelo otimizado para tarefas agentic.
  4. Microsoft — Azure AI Content Safety — guardrails de segurança para agentes em produção.