05-03-01 — Multi-agent: orchestrator-worker, hierarchical, swarm

⏱ 15 minFontes validadas em: 2026-04-29

TL;DR

Sistemas multi-agent distribuem trabalho entre múltiplos LLMs especializados. Três padrões principais: Orchestrator-Worker (um manda, vários executam), Hierarchical (cadeia de comando em níveis), Swarm (descentralizado, agentes trocam controle entre si). Cada um resolve problemas diferentes de escala e complexidade.

Por que múltiplos agentes?

Um único agente tem limitações: context window finita, tendência de perder foco em tarefas muito longas, sem especialização. Multi-agent resolve isso dividindo responsabilidades.

Regra de ouro: Use multi-agent quando a tarefa é grande demais para um único context window, quando diferentes steps requerem especialistas diferentes, ou quando você quer paralelismo real.

Padrão 1: Orchestrator-Worker

Um agente orquestrador recebe o objetivo, planeja e delega sub-tarefas para agentes worker especializados. Os workers retornam resultados ao orquestrador que sintetiza.

graph TD U[Usuário] --> O[ORCHESTRATOR\nGPT-4o] O -->|"Analise código"| W1[Worker: Code Reviewer\nClaude] O -->|"Verifique segurança"| W2[Worker: Security Analyst\nGPT-4o] O -->|"Estime complexidade"| W3[Worker: Estimator\nGPT-4 mini] W1 --> O W2 --> O W3 --> O O --> R[Relatório final integrado] style O fill:#1e40af,color:#fff style W1 fill:#065f46,color:#fff style W2 fill:#065f46,color:#fff style W3 fill:#065f46,color:#fff

Quando usar: Due diligence técnica, auditorias, análises multidimensionais onde cada dimensão tem um especialista diferente.

Padrão 2: Hierarchical (cadeia de comando)

Níveis de agentes onde cada nível pode delegar para o próximo. Um CEO-agent delega para Manager-agents que delegam para Worker-agents.

graph TD C[CEO Agent\nObjetivo estratégico] --> M1[Manager: Tech Lead] C --> M2[Manager: Produto] M1 --> W1[Worker: Backend Dev] M1 --> W2[Worker: DevOps] M2 --> W3[Worker: UX Research] M2 --> W4[Worker: Market Analysis] style C fill:#7c2d12,color:#fff style M1 fill:#1e40af,color:#fff style M2 fill:#1e40af,color:#fff style W1 fill:#065f46,color:#fff style W2 fill:#065f46,color:#fff style W3 fill:#065f46,color:#fff style W4 fill:#065f46,color:#fff

Quando usar: Projetos de software completos, criação de relatórios complexos com múltiplas seções, simulação de times de trabalho.

Padrão 3: Swarm (descentralizado)

Não há orquestrador fixo. Os agentes transferem controle entre si de acordo com o contexto — "hand-off" baseado em especialidade. Popularizado pelo OpenAI Swarm framework.

graph LR U[Usuário] --> A1[Agent: Triagem] A1 -->|"É técnico"| A2[Agent: Suporte Técnico] A2 -->|"Precisa billing"| A3[Agent: Financeiro] A3 -->|"Resolvido"| A4[Agent: Satisfação] A1 -->|"É comercial"| A5[Agent: Vendas] A5 -->|"Precisa demo"| A6[Agent: Presales] style A1 fill:#4c1d95,color:#fff style A2 fill:#065f46,color:#fff style A3 fill:#065f46,color:#fff style A4 fill:#065f46,color:#fff style A5 fill:#1e40af,color:#fff style A6 fill:#1e40af,color:#fff

Quando usar: Customer service, processos onde o próximo passo depende do resultado do atual e não é previsível de antemão.

Implementação: Orchestrator-Worker com AutoGen

from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager

# Agentes especializados
code_reviewer = AssistantAgent(
    name="CodeReviewer",
    system_message="Você revisa qualidade de código: legibilidade, SOLID, DRY.",
    llm_config={"model": "gpt-4o"}
)

security_analyst = AssistantAgent(
    name="SecurityAnalyst", 
    system_message="Você identifica vulnerabilidades de segurança (OWASP Top 10).",
    llm_config={"model": "gpt-4o"}
)

orchestrator = AssistantAgent(
    name="Orchestrator",
    system_message="""Você coordena a análise de código.
    1. Peça ao CodeReviewer para analisar qualidade
    2. Peça ao SecurityAnalyst para analisar segurança
    3. Sintetize os resultados num relatório final
    Diga TERMINATE quando o relatório estiver completo.""",
    llm_config={"model": "gpt-4o"}
)

user = UserProxyAgent(name="User", human_input_mode="NEVER")

# Group chat com o orquestrador no controle
groupchat = GroupChat(
    agents=[user, orchestrator, code_reviewer, security_analyst],
    messages=[],
    max_round=10,
    speaker_selection_method="auto"
)

manager = GroupChatManager(groupchat=groupchat)
user.initiate_chat(manager, message="Analise este código: [código aqui]")

Comparativo dos padrões

PadrãoControleComplexidadeCustoMelhor para
Orchestrator-WorkerCentralizadoMédiaMédioAnálises paralelas
HierarchicalEm cascataAltaAltoProjetos complexos
SwarmDescentralizadoBaixa-MédiaMédioCustomer service, roteamento
Microsoft AutoGen: Framework open-source da Microsoft Research para sistemas multi-agent. Suporta todos os três padrões. AutoGen Studio oferece UI visual para configurar agentes. Integra com Azure OpenAI nativamente. GitHub: github.com/microsoft/autogen
Custo em cascata: Em sistemas hierárquicos, cada nível adiciona tokens. Um CEO-agent que delega para 3 managers que delegam para 3 workers cada = 9 workers + 3 managers + 1 CEO = 13 agentes rodando. Modele o custo antes de ir para produção.

Como isso se conecta

  • 05-03-02 — Como os agentes deste sistema se comunicam (shared state vs message passing).
  • 05-04-03 — Anthropic descreve orchestrator-workers como um dos 5 padrões fundamentais.
  • 05-02-03 — Tool calling: chamar outro agente é tecnicamente um tool call no swarm pattern.

Fontes

  1. Microsoft AutoGen — GitHub — framework open-source para sistemas multi-agent.
  2. OpenAI Swarm — GitHub — implementação de referência do padrão swarm.
  3. Anthropic — Building Effective Agents — seção sobre orchestrator-workers.
  4. Wu et al. — AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation (2023) — paper do AutoGen.