Estudo técnico · caráter educacional

Orquestração Multiagêntica para Cash Management

Cinco implementações do mesmo caso de uso — gestão de caixa de atacado — sobre SDKs diferentes. Por ser o mesmo problema, toda diferença é puramente arquitetural.
← voltar ao hub

O caso de uso comum

Uma pergunta. Seis especialistas. Uma decisão de caixa.

"Das minhas contas a pagar e a receber, no fluxo de caixa de hoje devo pedir crédito para proteger o caixa — ou sobra para investir? E se investir: bolsa, dólar ou CDI?" — o CFO de uma grande corporação
1 · claude

Claude / Anthropic SDK

Loop agêntico explícito. Cascade Opus→Sonnet→Haiku. Python + FastAPI.

2 · openai

OpenAI Agents SDK

Agentes como objetos + saída estruturada. Fallback determinístico.

3 · langgraph

LangGraph

UI-only — o modelo mental do grafo. Lição de honestidade de engenharia.

4 · cloudflare

Cloudflare Agents SDK

Runtime-first: DO, edge, WebSocket "de graça".

5 · híbrido

Cloudflare ⊕ LangGraph via MCP

A tese: runtime de borda + cérebro de planejamento, colados por MCP. A arquitetura mais alinhada a um banco.

Os 5 padrões de agentes (Anthropic)

O padrão é independente do framework. O SDK muda o custo de produção daquele padrão — não o padrão.

1 · Prompt chaining

Passos em sequência; a saída de um LLM alimenta o próximo.

2 · Routing

Classifica a entrada e a envia ao handler certo. ← o híbrido separa factual de planejamento.

3 · Parallelization

Subtarefas independentes em paralelo, com agregação.

4 · Orchestrator–workers ★

LLM central quebra a tarefa em runtime, delega e sintetiza. Espinha dorsal do cash management.

5 · Evaluator–optimizer

Um gera, outro critica e refina em loop.

Aprofundamento por SDK

Como cada implementação maximiza o seu SDK — com o trecho que revela a personalidade de cada um.

Claude SDKloop explícito · cascade
OpenAI Agentsagents-as-tools · Zod
LangGraphgrafo · HITL · time-travel
CloudflareDO · edge · WebSocket
Híbrido + MCPruntime ⊕ planner
Python + FastAPI · anthropic SDK

O loop agêntico, sem mágica

Orquestrador (Opus) roda um tool-use loop sobre 4 tools; cada especialista é uma chamada Claude one-shot. O ciclo é dirigido pela inspeção de stop_reason.

  • Cascade de modelos = custo: Opus orquestra, Sonnet faz o ERP, Haiku resume bancos/mercado.
  • Especialistas sem sub-loops → latência/custo previsíveis.
  • Persistência e SSE explícitos (SQLAlchemy).
for _ in range(max_iterations):
    response = await client.messages.create(model=orchestrator_model, tools=ALL_TOOLS, ...)
    if response.stop_reason == "end_turn": yield final; return
    if response.stop_reason == "tool_use":
        for block in response.content:
            output = await TOOL_DISPATCH[block.name](**block.input)

Prós

  • Transparência total — ótimo para ensinar
  • Controle fino de custo (cascade)
  • Sem dependência de framework

Contras

  • Paralelização/retries/HITL: faça-você-mesmo
  • Tools em sequência no POC
  • Sem grafo visualizável
Next.js + TypeScript · @openai/agents

Agentes como objetos de 1ª classe

Um Treasury Advisor orquestra; cada especialista é uma tool que instancia um sub-Agent com saída estruturada Zod.

  • Saída estruturada como contrato: outputType / Responses strict:true.
  • maxTurns como guardrail de loop.
  • conversationId + fallback determinístico — a demo nunca quebra.
tool({ name: config.toolName, parameters: z.object({ query: z.string() }),
  execute: async ({ query }) => {
    const agent = new Agent({ model: "gpt-4.1-mini", outputType: specialistSchema });
    return (await run(agent, prompt, { conversationId, maxTurns: 4 })).finalOutput;
  }})

Prós

  • Componível e legível
  • Saída estruturada robusta
  • Fallback determinístico exemplar

Contras

  • Topologia menos explícita
  • Acoplamento ao ecossistema OpenAI
  • Sem HITL/time-travel
React + Express · UI-only

O modelo mental do grafo (uma maquete, honestamente)

O nome promete LangGraph; o código é só frontend com streaming simulado. Não há LangGraph rodando — o próprio MERITS.md audita.

  • Valor real: a UI mapeia 1:1 ao que useStream({stream_mode:"updates"}) retornaria.
  • Méritos que o híbrido entrega: grafo + Studio, time-travel, NodeInterrupt, Send(), LangSmith.
sg = StateGraph(CashManagementState)
sg.add_conditional_edges("risk_gate",
   lambda s: "human_approval" if s.get("requires_approval") else "synthesize")
graph = sg.compile(checkpointer=PostgresSaver(...))

Prós

  • Ensina o vocabulário do LangGraph
  • Frontend pronto para o cérebro real

Contras

  • Não executa nada de IA — maquete
  • Sem persistência/HITL real
  • "nome da pasta ≠ arquitetura"
Workers · Durable Objects · AI SDK

Runtime-first — "infra de graça"

OrchestratorAgent estende AIChatAgent; loop streamText com tools Zod sobre 5 especialistas-DO.

  • AIChatAgent dá grátis: messages no SQLite do DO, onChatMessage, onFinish.
  • routeAgentRequest() resolve WS + dispatch + DO em uma linha.
  • wrangler deploy publica SPA + Worker + 6 DOs.
export default { async fetch(request, env) {
  const r = await routeAgentRequest(request, env);
  return r ?? env.ASSETS.fetch(request);
} };

Prós

  • Latência de borda baixíssima
  • Multi-tenant físico (1 DO/usuário) → LGPD
  • Deploy num comando

Contras

  • Sem grafo formal
  • Sem time-travel; HITL reinventado
  • POC instancia agentes localmente
Cloudflare ⊕ LangGraph · via MCP

Runtime ⊕ planner — a tese do projeto

RUNTIME · Cloudflare
WebSocket. Classifica o intent.
ROUTING
factual → DOs (<100ms)
planning → cérebro
PLANNER · LangGraph
analyzer → orchestrate(∥) → risk_gate(HITL) → synthesize
MCP — o edge expõe os especialistas como tools; o LangGraph os consome de volta. Contrato aberto = baixo lock-in. Schemas Pydantic ⊕ Zod.
const intent = await this.classifyIntent(model, scenarioId);
if (intent === "planning" || intent === "compliance_critical")
  return this.delegateToBrain(...);   // → LangGraph
return this.runFactualPath(...);        // → DOs locais

Prós

  • Latência de borda + planejamento + HITL + time-travel
  • Baixo lock-in via MCP
  • Multi-tenant físico + thread auditável

Contras

  • 2 runtimes, 2 linguagens
  • Ponte SSE perde streaming "ao vivo" no POC
  • Maior complexidade operacional

Matriz comparativa

Use os botões para destacar uma coluna (SDK).

Destacar:
DimensãoClaudeOpenAILangGraphCloudflareHíbrido
Estado / memóriamanual (DB)SessionscheckpointerSQLite/DO ✦DO + checkpoint
StreamingSSE manualrun_streamedstream_modeWebSocket ✦WS + SSE
Human-in-the-loopDIYDIYnativo ✦reinventarnativo ✦
Time-travel / auditoriamanualtracingnativo ✦ad-hocnativo ✦
Latência ponta-a-pontamédiamédiamaiorbaixíssima ✦baixa/média
Multi-tenant / isolamentolinha em DBsessãothread_idDO físico ✦DO + thread ✦
Saída estruturadaparse manualZod / strict ✦Pydantic stateZod nas toolsPydantic ⊕ Zod
Paralelizaçãosequencial (POC)via toolsSend() ✦Promise.allasyncio.gather/Send
Observabilidadelogs própriostracing SDKLangSmith ✦Tail + LogsLangSmith + Tail
Deployserver + DBserverPG + API + Redis1 comando ✦Worker + PG
Otimização de custocascade ✦mini + fallbackdepende providerWorkers AI s/ chaveWAI + Claude
Lock-inbaixo ✦médiomédioaltomédio (MCP)
Fit p/ banco grandePOCprodutocomplianceescalaCOMPLETO ✦

✦ = ponto onde aquele SDK é diferencial. Verde = vantagem clara.

Quando usar o quê

Regra de bolso: escolha pela camada que domina o seu requisito.

Requisito = RACIOCÍNIO
Produto/POC com saída estruturada, controle fino, custo.
Claude SDK (cascade de modelos)
RACIOCÍNIO + DX
Velocidade de entrega, agentes componíveis, tracing.
OpenAI Agents SDK
Requisito = WORKFLOW
Aprovação humana, time-travel, audit trail.
LangGraph (graph-first)
Requisito = RUNTIME
Chat stateful, baixa latência, muitos usuários.
Cloudflare Agents SDK
MAIS DE UM (banco)
Latência + governança + multi-tenant ao mesmo tempo.
HÍBRIDO: borda + planner via MCP
Princípio-chave: padronize o contrato (MCP), não o framework — preserva a liberdade de trocar o "cérebro" sem reescrever as integrações.

Camada de negócio & inovação

O valor não está em "qual framework" — está no que combinar as camadas permite oferecer ao cliente de atacado.

Copiloto auditável em tempo real

Edge (<2s) + planner auditável: conversar com o caixa como com um analista sênior, com replay de cada recomendação para o comitê.

Maker-checker nativo

NodeInterrupt troca o "e-mail pro gerente" por uma pausa formal dentro do agente — controle bancário digital nativo.

Multi-tenant físico = conformidade

Um Durable Object por empresa-cliente isola contexto fisicamente — argumento de LGPD/segregação que vira diferencial.

Especialistas como MCP reutilizáveis

ERP/Bancos/Mercado/Risco viram um catálogo de capacidades sob um contrato — base para um marketplace de agentes de tesouraria.

Cascade de custo = margem

Opus só onde precisa, Haiku no volume: experiências premium de IA com custo unitário controlado.

What-if com time-travel

Testar cenários e comparar branches de decisão; briefing pré-comitê automático com trilho de auditoria.

A tese, em uma frase

Não existe "melhor SDK" — existe melhor camada. A inovação vem de compor raciocínio + governança + runtime.