Domínio 1 — Agentic Architecture & Orchestration · Lição 3 de 7

Workflow ou agente? Padrões de orquestração

Objetivos de aprendizagem

Workflows vs. agentes

Na taxonomia da Anthropic ("Building effective agents"), os dois são sistemas agênticos, mas com diferença arquitetural clara:

Regra prática da prova: use a solução mais simples que resolve. Se a tarefa pode ser decomposta em passos conhecidos de antemão, um workflow basta; agentes são para tarefas abertas em que não dá para prever o número de passos nem fixar o caminho.

Os cinco padrões de workflow/orquestração

PadrãoComo funcionaQuando usar
Prompt chainingDecompõe a tarefa em passos sequenciais; a saída de um vira entrada do próximo, opcionalmente com "gates" de validação entre eles.Tarefas com decomposição fixa e conhecida (ex.: gerar outline → validar → escrever; analisar cada arquivo → passe de integração cross-file).
RoutingUm classificador direciona cada entrada para o fluxo/prompt/modelo especializado adequado.Categorias distintas de entrada com tratamentos diferentes (ex.: suporte: reembolso vs. dúvida técnica; perguntas fáceis → modelo menor).
ParallelizationSubtarefas independentes rodam ao mesmo tempo (sectioning) ou a mesma tarefa roda N vezes para votação (voting).Reduzir latência em subtarefas independentes; aumentar confiança agregando múltiplas execuções.
Orchestrator-workersUm LLM central decompõe a tarefa dinamicamente, delega a workers e sintetiza os resultados.Quando as subtarefas não são previsíveis de antemão (ex.: pesquisa multi-agente, mudanças em N arquivos que dependem da tarefa).
Evaluator-optimizerUm LLM gera; outro avalia contra critérios e dá feedback; itera até passar.Quando existem critérios claros de avaliação e o refinamento iterativo agrega valor mensurável (ex.: tradução, escrita com requisitos).
flowchart TD
    subgraph chaining[Prompt chaining — decomposição fixa]
      A1[Passo 1] --> A2[Gate] --> A3[Passo 2] --> A4[Passo 3]
    end
    subgraph orch[Orchestrator-workers — decomposição adaptativa]
      B0[Orquestrador] --> B1[Worker A]
      B0 --> B2[Worker B]
      B0 --> B3[Worker C]
      B1 --> B4[Síntese]
      B2 --> B4
      B3 --> B4
      B4 --> B0
    end
  

Quando vale a pena um agente: 4 critérios

Antes de construir um agente, avalie os quatro critérios (framework da Anthropic para decidir "should you build an agent?"):

  1. Complexidade da tarefa: a tarefa é ambígua/aberta o suficiente para exigir raciocínio dinâmico? Tarefas mapeáveis num fluxograma ficam melhores (e mais baratas) como workflow.
  2. Valor da tarefa: o valor por execução justifica o custo em tokens e latência do loop agêntico? Tarefas de alto volume e baixo valor pedem workflows enxutos.
  3. Viabilidade (capacidades): o modelo consegue de fato executar todas as etapas com as ferramentas disponíveis? Derisque as capacidades críticas antes.
  4. Custo do erro / descoberta do erro: erros são caros ou difíceis de detectar? Se sim, prefira fluxos com mais controle (workflow, gates, human-in-the-loop) ou restrinja a autonomia (ex.: read-only, sandbox).

Decomposição fixa vs. adaptativa (task statement 1.6)

Dentro do universo de decomposição de tarefas, a prova cobra saber quando cada estratégia se aplica:

Sinal para escolher na prova: se o enunciado descreve etapas conhecidas e repetíveis ("todo PR passa por X, depois Y"), a resposta é chaining/pipeline fixo. Se descreve investigação em terreno desconhecido ("dependências descobertas ao longo do caminho"), a resposta é plano adaptativo que gera subtarefas a partir dos achados.

Um routing simples implementado como workflow — o classificador é uma chamada de modelo, mas o caminho é decidido por código:

import anthropic

client = anthropic.Anthropic()

def classify(ticket_text):
    """Passo 1 do workflow: classificar o ticket (routing)."""
    response = client.messages.create(
        model="claude-opus-5",
        max_tokens=100,
        system="Classifique o ticket em exatamente uma categoria: "
               "refund, technical, account. Responda apenas a categoria.",
        messages=[{"role": "user", "content": ticket_text}],
    )
    text = next((b.text for b in response.content if b.type == "text"), "")
    return text.strip().lower()

PROMPTS = {
    "refund": "Voce trata reembolsos seguindo a politica de devolucao...",
    "technical": "Voce e o suporte tecnico do produto...",
    "account": "Voce trata questoes de conta e acesso...",
}

def handle_ticket(ticket_text):
    category = classify(ticket_text)
    system = PROMPTS.get(category, PROMPTS["technical"])
    # Passo 2: fluxo especializado escolhido POR CODIGO (workflow),
    # nao pelo modelo em tempo de execucao (agente).
    response = client.messages.create(
        model="claude-opus-5",
        max_tokens=2000,
        system=system,
        messages=[{"role": "user", "content": ticket_text}],
    )
    return next((b.text for b in response.content if b.type == "text"), "")

print(handle_ticket("Quero devolver o pedido 4412, chegou quebrado."))

Pegadinhas da prova

Resumo em 5 linhas

  1. Workflow = caminho fixado por código; agente = modelo dirige o processo dinamicamente. Use o mais simples que resolve.
  2. Padrões: prompt chaining (passos sequenciais), routing (classificar e direcionar), parallelization (independentes em paralelo/votação), orchestrator-workers (decomposição dinâmica + síntese), evaluator-optimizer (gerar → avaliar → iterar).
  3. Decida por 4 critérios: complexidade, valor, viabilidade das capacidades e custo do erro.
  4. Decomposição fixa para trabalho previsível (revisão por arquivo + passe cross-file); adaptativa para investigação aberta que gera subtarefas conforme descobre.
  5. Custo de erro alto → mais controle: gates programáticos, human-in-the-loop, menos autonomia.

Documentação oficial

Questões de fixação

1. Toda solicitação de suporte passa pelas mesmas três etapas, nesta ordem: extrair dados do ticket, consultar a política aplicável e redigir a resposta. Qual padrão é o mais adequado?

2. "Adicionar testes abrangentes a um codebase legado, onde as dependências entre módulos só ficam claras conforme a análise avança." Qual estratégia de decomposição o exam guide recomenda?

3. Revisões de PRs com 12+ arquivos produzem feedback superficial e contraditório. Qual reestruturação o padrão de prompt chaining sugere?

4. (escolha duas) Quais fatores, segundo os critérios de decisão da Anthropic, pesam contra construir um agente autônomo e a favor de um workflow mais controlado?

5. Qual é a diferença essencial entre parallelization e orchestrator-workers?