← Voltar ao curso
Nível 3 — Automação e escala · Módulo 3.7 — Claude API e agentes sob medida

3.7.6 · Padrões de orquestração

4 min de vídeo TEC

Objetivo: ao final, o consultor reconhece os cinco padrões clássicos, sabe qual problema de projeto cada um resolve, e adota a regra de começar simples.

O que você precisa levar desta aula

  1. Roteamento é o padrão que mais economiza em volume e o menos usado: uma classificação barata na entrada decide se o item precisa do modelo caro.
  2. Orquestrador-trabalhadores ≠ paralelização. A diferença é se as subtarefas são conhecidas ao escrever o código (paralelização, mais barata) ou descobertas ao ver a entrada (orquestrador).
  3. No avaliador-otimizador, a rubrica escrita no módulo 3.6 vira o avaliador do laço — o mesmo artefato serve para medir e para corrigir.

Os cinco padrões, com caso SAP

Padrão Quando Caso no Meridiano
Encadeamento Etapas naturais e você quer inspecionar o meio Rascunhar FS → revisar contra a spec → corrigir
Roteamento Entradas de dificuldade muito diferente Chamado simples → Haiku 4.5; complexo → Opus 5
Paralelização (fatiamento) Itens independentes Analisar os 34 RICEFW ao mesmo tempo
Paralelização (votação) Uma passagem só perde coisa Três leituras de risco da mesma FS, agregadas
Orquestrador-trabalhadores Subtarefas descobertas na execução "Levantar impacto desta mudança" — os objetos afetados só aparecem investigando
Avaliador-otimizador Critério de qualidade escrevível Gerar cenário de teste → checar cobertura → completar

Roteamento, com a conta

def rotear(chamado: str) -> str:
    triagem = client.messages.create(
        model="claude-haiku-4-5",       # barato: 1 dólar por milhão de entrada
        max_tokens=16,
        system="Responda apenas SIMPLES ou COMPLEXO.",
        messages=[{"role": "user", "content": chamado}],
    )
    nivel = next(b.text for b in triagem.content if b.type == "text").strip()
    modelo = "claude-haiku-4-5" if nivel == "SIMPLES" else "claude-opus-5"
    return responder(chamado, modelo=modelo)

A economia depende inteiramente da proporção. Se 70% dos chamados são simples, 70% do volume roda a um quinto do preço de entrada, e a triagem custa quase nada. Se a proporção for outra, o padrão pode não pagar — e descobrir isso é medição, não intuição: você já tem o dataset do módulo 3.6.3 para responder.

Um cuidado: o roteador é ele mesmo um classificador, e classificador erra. Rotear um chamado complexo para o modelo barato produz resposta ruim, e sua avaliação precisa medir o fluxo inteiro, não cada modelo em separado.

Paralelização

import asyncio
from anthropic import AsyncAnthropic

aclient = AsyncAnthropic()

async def analisar(ricefw):
    r = await aclient.messages.create(
        model="claude-opus-5",
        max_tokens=4000,
        messages=[{"role": "user", "content": f"Analise o risco de: {ricefw}"}],
    )
    return next(b.text for b in r.content if b.type == "text")

async def analisar_todos(lista):
    return await asyncio.gather(*(analisar(r) for r in lista))

Duas formas, com propósitos diferentes:

Orquestrador-trabalhadores: a distinção que importa

Paralelização Orquestrador-trabalhadores
Subtarefas Conhecidas ao escrever o código Criadas em tempo de execução
Número de chamadas Previsível Variável
Custo Estimável Não
Exemplo "Analise cada um dos 34 RICEFW" "Levante o impacto desta mudança"

Se você sabe as subtarefas na hora de escrever, use paralelização — é mais simples, mais barata e o custo é estimável. O orquestrador só se justifica quando a decomposição depende da entrada.

Avaliador-otimizador

def gerar_com_revisao(spec, max_rodadas=3):
    saida = gerar(spec)
    for _ in range(max_rodadas):
        nota, criticas = avaliar(saida, RUBRICA)   # a rubrica do módulo 3.6.4
        if nota >= 4:
            return saida, nota
        saida = corrigir(saida, criticas)
    return saida, nota                              # devolve o melhor obtido, com a nota

Três detalhes que fazem esse padrão funcionar em produção:

E a ligação com o módulo 3.6 é literal: RUBRICA é o mesmo texto do grader da aula 3.6.4. Escrever a rubrica uma vez serve para duas coisas — medir a qualidade e corrigi-la dentro do laço.

Regra Wayon Todo padrão com laço — avaliador-otimizador, orquestrador — roda com teto de iterações e teto de gasto por execução, declarados no código, não no combinado. E antes de subir de padrão, é preciso mostrar com a avaliação do módulo 3.6 que a versão mais simples não atende. Complexidade de orquestração é custo de sustentação que a Wayon paga por anos.

📖 Building effective agents · Graders — aula 3.6.4

Quiz — 5 questões

1.Qual padrão tende a produzir a maior economia num fluxo de alto volume com entradas de dificuldade muito diferente?
  • a)Paralelização, porque reduz o tempo total e portanto o custo

    Paralelização reduz tempo de parede, não o número de tokens — o custo total é praticamente o mesmo.

  • b)Roteamento — uma triagem barata manda o item fácil para o modelo barato

    Correto, e é justamente o padrão menos usado apesar do retorno.

  • c)Encadeamento, porque divide a tarefa em passos menores e mais baratos

    Mais passos costumam significar mais chamadas, não menos custo.

Ver resposta e por quê
a) Paralelização reduz tempo de parede, não o número de tokens — o custo total é praticamente o mesmo.
b) Correto, e é justamente o padrão menos usado apesar do retorno.
c) Mais passos costumam significar mais chamadas, não menos custo.
2.Você precisa analisar os 34 RICEFW do Meridiano, todos conhecidos de antemão. Qual padrão?
  • a)Paralelização por fatiamento — as subtarefas são conhecidas ao escrever o código

    Correto. Custo estimável e desenho mais simples que o orquestrador.

  • b)Orquestrador-trabalhadores, porque há muitas subtarefas

    Quantidade não é o critério: o critério é se as subtarefas são conhecidas antes da execução.

  • c)Encadeamento, para que a análise de um informe a do seguinte

    Encadeamento serializa análises independentes sem necessidade.

Ver resposta e por quê
a) Correto. Custo estimável e desenho mais simples que o orquestrador.
b) Quantidade não é o critério: o critério é se as subtarefas são conhecidas antes da execução.
c) Encadeamento serializa análises independentes sem necessidade.
3.No padrão avaliador-otimizador, o que impede o laço de rodar indefinidamente?
  • a)O max_tokens da chamada, que esgota e interrompe o laço

    max_tokens limita uma resposta, não o número de iterações.

  • b)O avaliador, que sempre converge para a nota máxima em poucas rodadas

    Não há garantia de convergência — pode oscilar sem atingir o critério.

  • c)Um teto explícito de rodadas no código, junto de um critério de parada objetivo

    Correto. "Até ficar bom" não é critério; o teto e a nota-alvo são.

Ver resposta e por quê
a) max_tokens limita uma resposta, não o número de iterações.
b) Não há garantia de convergência — pode oscilar sem atingir o critério.
c) Correto. "Até ficar bom" não é critério; o teto e a nota-alvo são.
4.Um consultor implementa roteamento e mede a qualidade de cada modelo separadamente. Qual é o problema?
  • a)Nenhum: medir por modelo é mais preciso do que medir o conjunto

    Mais granular não é mais correto aqui — o que vai ao usuário é o resultado do fluxo.

  • b)O roteador também erra: é o fluxo inteiro que precisa ser avaliado, incluindo o encaminhamento errado

    Correto. Um chamado complexo mandado para o modelo barato é falha do sistema, não de nenhum dos dois modelos.

  • c)Modelos diferentes não podem ser comparados na mesma avaliação

    Podem, e frequentemente devem — mas isso não substitui avaliar o fluxo.

Ver resposta e por quê
a) Mais granular não é mais correto aqui — o que vai ao usuário é o resultado do fluxo.
b) Correto. Um chamado complexo mandado para o modelo barato é falha do sistema, não de nenhum dos dois modelos.
c) Podem, e frequentemente devem — mas isso não substitui avaliar o fluxo.
5.Qual é a orientação da documentação sobre escolher entre os padrões? ---
  • a)Começar pelo mais simples que resolve e só subir de complexidade quando medir que a versão simples não atende

    Correto. Cada padrão acrescenta chamadas, latência e pontos de falha.

  • b)Escolher o padrão pela quantidade de itens a processar

    Quantidade sugere paralelização, mas não decide entre os cinco.

  • c)Adotar orquestrador-trabalhadores como padrão, por ser o mais flexível

    Flexibilidade cobra custo variável e depuração difícil; não é ponto de partida.

Ver resposta e por quê
a) Correto. Cada padrão acrescenta chamadas, latência e pontos de falha.
b) Quantidade sugere paralelização, mas não decide entre os cinco.
c) Flexibilidade cobra custo variável e depuração difícil; não é ponto de partida.