05-03-01 — Multi-agent: orchestrator-worker, hierarchical, swarm
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.
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.
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.
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.
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ão | Controle | Complexidade | Custo | Melhor para |
|---|---|---|---|---|
| Orchestrator-Worker | Centralizado | Média | Médio | Análises paralelas |
| Hierarchical | Em cascata | Alta | Alto | Projetos complexos |
| Swarm | Descentralizado | Baixa-Média | Médio | Customer service, roteamento |
Como isso se conecta
Fontes
- Microsoft AutoGen — GitHub — framework open-source para sistemas multi-agent.
- OpenAI Swarm — GitHub — implementação de referência do padrão swarm.
- Anthropic — Building Effective Agents — seção sobre orchestrator-workers.
- Wu et al. — AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation (2023) — paper do AutoGen.