Em 2026, três frameworks dominam orquestração multi-agent: CrewAI (hierarchical por papéis), AutoGen v0.4 (actor model assíncrono) e OpenAI Swarm (minimalista educacional). Cada um faz aposta filosófica distinta. Este módulo compara, mostra código real e — mais importante — explica quando NÃO usar multi-agent.
O zoológico de frameworks
| Framework | Filosofia | Sweet spot | Limitação |
|---|---|---|---|
| CrewAI | Papéis hierárquicos (role-based) | Equipes com responsabilidades claras | Opinativo, hard para padrões custom |
| AutoGen v0.4 | Actor model assíncrono | Sistemas distribuídos, paralelismo | Curva de aprendizado |
| OpenAI Swarm | Minimal, handoff-based | Protótipos, ensino, handoffs simples | Não production-ready oficial |
| LangGraph | State machines com cycles | Workflows com human-in-loop | Sintaxe verbosa (próximo módulo) |
| Anthropic claude-agent-sdk | Linha única, tool use first | Agentes simples + reasoning | Não multi-agent nativo |
| OpenAI Agents SDK | Successor do Swarm, production | Handoffs + guardrails + tracing | Lock-in OpenAI |
CrewAI: agentes como equipe humana
from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool, WebsiteSearchTool
# Definir agentes com papéis explícitos
researcher = Agent(
role="Senior Research Analyst",
goal="Encontrar informação atualizada e factual sobre tecnologia",
backstory="Veterano de 15 anos em research técnico, especialista em fact-checking",
tools=[SerperDevTool(), WebsiteSearchTool()],
llm="claude-sonnet-4-7",
verbose=True,
)
writer = Agent(
role="Technical Writer",
goal="Escrever artigos técnicos claros e bem estruturados",
backstory="Editor sênior, escreve para developers há 10 anos",
llm="claude-sonnet-4-7",
verbose=True,
)
reviewer = Agent(
role="QA Specialist",
goal="Revisar conteúdo técnico para precisão e clareza",
backstory="Engenheira sênior com olho para erros sutis",
llm="claude-opus-4-7",
verbose=True,
)
# Tasks descrevem objetivos em linguagem natural
research_task = Task(
description="Pesquise: estado atual de reasoning models em 2026",
expected_output="Lista de 5 modelos com features, custos e benchmarks",
agent=researcher,
)
write_task = Task(
description="Escreva artigo de 800 palavras baseado no research",
expected_output="Artigo em markdown com seções e citações",
agent=writer,
context=[research_task],
)
review_task = Task(
description="Revise o artigo para precisão técnica e clareza",
expected_output="Artigo final com correções aplicadas",
agent=reviewer,
context=[write_task],
)
crew = Crew(
agents=[researcher, writer, reviewer],
tasks=[research_task, write_task, review_task],
process=Process.sequential, # ou Process.hierarchical com manager
verbose=True,
)
result = crew.kickoff()
print(result)CrewAI brilha em pipelines lineares com papéis claros (research → write → review). Para fluxos com loops, condicionais, human-in-loop, LangGraph é melhor.
AutoGen v0.4: actor model
# AutoGen v0.4 (Microsoft, set/2024+)
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import SelectorGroupChat
from autogen_agentchat.conditions import TextMentionTermination, MaxMessageTermination
from autogen_ext.models.openai import OpenAIChatCompletionClient
async def main():
model_client = OpenAIChatCompletionClient(model="gpt-4o")
planner = AssistantAgent(
name="Planner",
system_message="Você é o planejador. Decomponha tasks complexas em subtasks claras.",
model_client=model_client,
)
coder = AssistantAgent(
name="Coder",
system_message="Você escreve Python. Use ferramentas para executar e validar.",
model_client=model_client,
tools=[execute_python],
)
critic = AssistantAgent(
name="Critic",
system_message="Revise o código. Quando aprovado, diga 'TERMINATE'.",
model_client=model_client,
)
# SelectorGroupChat: LLM escolhe próximo agente baseado no contexto
termination = TextMentionTermination("TERMINATE") | MaxMessageTermination(10)
team = SelectorGroupChat(
participants=[planner, coder, critic],
model_client=model_client,
termination_condition=termination,
)
result = await team.run(task="Calcule o 100º número primo")
print(result)
asyncio.run(main())AutoGen v0.4 é totalmente async — não há mais APIs síncronas. Migração de v0.2 exige reescrita. Trade-off: paralelismo nativo e distribuição via autogen-core gRPC.
OpenAI Swarm: minimal e didático
# OpenAI Swarm — github.com/openai/swarm
from swarm import Swarm, Agent
client = Swarm()
def transfer_to_billing():
return billing_agent
def transfer_to_technical():
return technical_agent
triage_agent = Agent(
name="Triage",
instructions="Determine se o usuário precisa de billing ou suporte técnico. "
"Use as funções de transfer.",
functions=[transfer_to_billing, transfer_to_technical],
)
billing_agent = Agent(
name="Billing",
instructions="Você é especialista em billing. Ajude com cobranças e refunds.",
)
technical_agent = Agent(
name="Technical",
instructions="Você é engenheiro de suporte técnico. Ajude com bugs e configuração.",
)
response = client.run(
agent=triage_agent,
messages=[{"role": "user", "content": "Fui cobrado duas vezes esse mês"}],
)
# Triage detecta billing, chama transfer_to_billing() que retorna billing_agent.
# Swarm internamente substitui agent ativo e continua.
print(response.messages[-1]["content"])
print(f"Agente final: {response.agent.name}")A genialidade do Swarm: handoff é apenas uma função que retorna outro Agent. Sem orquestrador externo, sem estado central. Em ~300 linhas você entende padrão multi-agent. Para produção em 2026, OpenAI Agents SDK é o sucessor oficial.
Padrões multi-agent canônicos
Decisão: qual framework escolher
📋 Você precisa montar pipeline de criação de conteúdo: research, escrita, fact-check, edição. Papéis bem definidos, fluxo majoritariamente sequencial.
Papéis explícitos e fluxo sequencial são o sweet spot do CrewAI. Process.sequential com 4 agentes (Researcher, Writer, FactChecker, Editor) é idiomático. Custo cognitivo mínimo, código legível.
Alt: LangGraph —
Alt: AutoGen —
📋 Você está construindo sistema distribuído com agents em hosts diferentes que se comunicam por mensagens, alta concorrência.
autogen-core é actor model nativo com gRPC transport. Único framework com cross-host real em 2026. CrewAI e Swarm são in-process.
Alt: LangGraph + custom —
Timeline dos frameworks
Stack mental para multi-agent
Perguntas frequentes
❓ Posso combinar frameworks? CrewAI + LangGraph?
❓ Latência: paralelo realmente acelera?
❓ MCP (Model Context Protocol) substitui frameworks?
❓ Multi-agent é o futuro ou hype?