Conteúdo
Depois de ter assimilado o conceito de "coordenar várias IAs" em O que é um sistema multi-agente?, a próxima pergunta é como construir um de verdade. Este artigo percorre um processo prático de 5 passos para iniciantes, usando o padrão de fato de 2026: o padrão supervisor.
Antes de falar de frameworks, o princípio mais importante: "construa primeiro com um único agente e adicione agentes de forma mínima só depois de bater em um limite". Começar com muitos agentes costuma ser excesso de engenharia. Na segunda metade, você verá código mínimo e legível que segue a documentação oficial do Claude Agent SDK e do OpenAI Agents SDK, além de como dividir os papéis e as falhas que realmente acontecem. A mesma lógica vale se você conectar ferramentas via MCP.
Construa pequeno, meça e depois acrescente
— O padrão supervisor, a partir de uma configuração mínima
Nota: o código segue a documentação oficial do Claude Agent SDK e do OpenAI Agents SDK (verificada em 4 de outubro de 2026). Esses SDKs mudam rápido, então confirme os nomes dos parâmetros em cada documentação oficial antes de executar. Cada número do artigo traz a sua fonte.
1. Antes de construir: você realmente precisa de multi?
O primeiro filtro não é técnico — é uma decisão de julgamento. Multi-agente é poderoso, mas não ajuda em todo trabalho. Se nenhum dos pontos a seguir se aplica, construa primeiro com um único agente.
3 sinais de que você deve ir para multi
- Separação de especialidades: o conhecimento não cabe em um único prompt (os domínios abrangem pesquisa, jurídico, código etc.)
- Paralelismo: fazer várias tarefas ao mesmo tempo é claramente mais rápido
- Separação de decisão: a qualidade melhora quando você separa "executor" e "verificador"
Como vimos no artigo anterior, usar multi-agente num processo linear custa caro. Num estudo do Google Research (publicado em janeiro de 2026, comparando 180 configurações), todas as variantes multi-agente testadas tiveram desempenho 39–70% pior que um único agente numa tarefa de raciocínio estritamente sequencial (PlanCraft). O custo também sobe: na explicação sobre o seu próprio agente de pesquisa, a Anthropic relata que agentes usam cerca de 4 vezes mais tokens que um chat, e sistemas multi-agente cerca de 15 vezes. Parta da premissa de que mais agentes não significam mais inteligência.
2. A forma básica: o padrão supervisor
Se estiver em dúvida sobre qual padrão usar, começar pelo padrão supervisor é a escolha segura. Os principais SDKs o documentam como padrão básico. No Claude Agent SDK, o agente principal chama subagentes pela ferramenta Agent; no OpenAI Agents SDK, o equivalente é "agents as tools", em que um agente gerente chama agentes especialistas como ferramentas.
Um único dono da resposta final
O supervisor mantém o controle da conversa e combina os resultados dos workers numa só resposta. A documentação da OpenAI recomenda essa forma quando você quer que um agente seja dono da resposta final.
Os erros se espalham menos
No mesmo estudo do Google Research, agentes trabalhando em paralelo sem conversar amplificaram os erros 17,2 vezes; com um orquestrador, apenas 4,4 vezes.
Fácil de auditar
Quem recebeu qual pedido e o que devolveu fica no histórico do supervisor. Como cada worker tem suas próprias ferramentas, dá para limitar o estrago.
A mecânica é simples. O supervisor recebe a tarefa global, divide-a em subtarefas, delega-as a workers especialistas e agrega os resultados. O supervisor não precisa saber como um worker faz seu trabalho — apenas qual worker chamar e em que formato de saída. A expertise vive nos workers.
Atenção: no OpenAI Agents SDK, um handoff tem um sentido mais estreito que a passagem geral de trabalho do passo 4: um agente de triagem transfere a própria conversa a um especialista, que passa a responder diretamente ao usuário. Nenhum supervisor permanece, então trate-o como um padrão diferente (a seção 6 explica quando usar cada um).
3. Construa em 5 passos
Monte uma configuração mínima de supervisor em cinco passos. A regra prática: comece com 2-3 workers e só acrescente mais à medida que a medição justificar.
PASSO 1. Decomponha a tarefa
Escreva o "objetivo final" e os "papéis de especialista" necessários. Exemplo: para um relatório de pesquisa de mercado, "1) coletar informações → 2) analisar → 3) redigir → 4) checar fatos". Decomponha com clareza desde o início — vagueza aqui derruba o conjunto todo.
PASSO 2. Defina os workers (até 3-5)
Dê a cada worker um papel, as ferramentas de que ele precisa e um formato de saída. Não seja ganancioso no começo — no máximo 3-5. Cada worker é independente e mantém apenas suas próprias ferramentas (busca, execução de código etc.).
PASSO 3. Projete o supervisor
No prompt do supervisor, liste explicitamente os nomes dos workers que ele pode chamar (um limite rígido). O truque: gaste mais tempo no supervisor do que em qualquer worker individual. Isso determina a qualidade geral.
PASSO 4. Decida o handoff e o compartilhamento de contexto
Defina o que é passado entre os workers e em que formato. Passar o contexto completo para todos infla os tokens, então passe apenas a informação necessária. O protocolo padrão para coordenação entre agentes é o A2A.
PASSO 5. Meça e opere com limites
Instrumente cada handoff antes de adicionar agentes (observabilidade não é opcional). Defina limites de iterações, tokens e custo. Configure evals e guardrails ao mesmo tempo.
4. Código mínimo ①: Claude Agent SDK (Python)
Primeiro, monte um supervisor e dois workers (um pesquisador e um revisor) com o Claude Agent SDK da Anthropic. A preparação é só pip install claude-agent-sdk e a variável de ambiente ANTHROPIC_API_KEY (guia rápido oficial; o SDK não carrega arquivos .env automaticamente). O código segue a página oficial de Subagents. Para o SDK como um todo, veja nosso guia do Claude Agent SDK.
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition, ResultMessage
options = ClaudeAgentOptions(
model="claude-opus-5-5", # o supervisor (agente principal)
system_prompt=(
"Você coordena um relatório de pesquisa. Delegue a pesquisa ao researcher e a "
"checagem ao reviewer, e escreva você mesmo o texto final. Ao delegar, informe "
"sempre o objetivo, o formato de saída e o escopo."
),
allowed_tools=["Agent", "WebSearch", "WebFetch"], # ferramentas que rodam sem pedir permissão
agents={
"researcher": AgentDefinition(
description="Reúne fontes primárias. Use quando precisar de fatos ou números.",
prompt="Procure fontes primárias para a pergunta e devolva tópicos com a URL de cada fonte. Não preencha lacunas com suposições.",
tools=["WebSearch", "WebFetch"], # as únicas ferramentas deste papel
model="sonnet",
maxTurns=15,
),
"reviewer": AgentDefinition(
description="Checa rascunhos. Use sempre antes de finalizar o texto.",
prompt="Confronte cada afirmação do rascunho com a sua fonte e liste as frases sem respaldo.",
tools=["WebFetch"],
model="sonnet",
maxTurns=10,
),
},
max_turns=30, # limite de idas e voltas da execução inteira
max_budget_usd=5.0, # limite de gasto (estimativa do SDK)
env={"CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH": "1"}, # workers não criam subagentes próprios
)
async def main():
try:
async for message in query(
prompt="Reúna três estatísticas oficiais sobre o uso de IA generativa no trabalho e escreva um relatório curto",
options=options,
):
if isinstance(message, ResultMessage):
print(message.subtype, message.total_cost_usd)
print(message.result)
except Exception as error:
print(f"Parou antes do fim: {error}") # atingir um limite também cai aqui
asyncio.run(main())
Cinco pontos a observar:
- Os workers ficam em
agentscomo entradasAgentDefinition. O supervisor lê adescriptionde cada worker para decidir quem chamar e quando, então descreva com precisão o que o papel faz e quando usá-lo. - Ao listar
tools, o papel recebe só essas ferramentas. Por isso o revisor não tem ferramentas de escrita. Jáallowed_toolslista as ferramentas que rodam sem pedido de permissão; não restringe nada (referência oficial de Python). - Coloque limites em três lugares. Um
maxTurnspor papel, ummax_turnsglobal e um limite de gasto commax_budget_usd. Quando um limite global é atingido, o subtipo do resultado viraerror_max_turnsouerror_max_budget_usde a execução para (documentação do loop do agente). - Corte o aninhamento. Subagentes podem criar subagentes próprios. Com a variável de ambiente
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTHem1, os workers fazem o trabalho eles mesmos.CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS(padrão 20) limita quantos rodam ao mesmo tempo. - Os campos de
AgentDefinitionsão em camelCase. Escrevermax_turnsem vez demaxTurnsgera um TypeError na criação (nota oficial). O supervisor usa o modelo atualclaude-opus-5-5e os workers o alias"sonnet", assim o código continua funcionando quando sai uma versão nova.
A documentação oficial aponta que o Opus 5 delega a subagentes com mais facilidade que os modelos anteriores e recomenda definir limites de profundidade, concorrência e gasto, além das instruções no prompt. Uma instrução só muda a forma como o Claude pede ajuda; só os limites param uma execução com segurança.
5. Código mínimo ②: OpenAI Agents SDK (Python)
No Agents SDK da OpenAI, a mesma forma transforma os agentes especialistas em ferramentas com as_tool() e os passa para as tools do supervisor ("agents as tools" oficial). A preparação é pip install openai-agents e a variável de ambiente OPENAI_API_KEY (guia rápido oficial). Se você omitir model, o SDK usa o modelo padrão; esse padrão muda entre versões, então confira na página de Models.
import asyncio
from agents import Agent, Runner, WebSearchTool
researcher = Agent(
name="Researcher",
instructions="Procure fontes primárias para a pergunta e devolva tópicos com a URL de cada fonte. Não preencha lacunas com suposições.",
tools=[WebSearchTool()],
)
reviewer = Agent(
name="Reviewer",
instructions="Confronte cada afirmação do rascunho recebido com a sua fonte e liste as frases sem respaldo.",
)
manager = Agent(
name="Manager",
instructions=(
"Você coordena um relatório de pesquisa. Delegue a pesquisa ao research e a "
"checagem ao review, e escreva você mesmo o texto final."
),
tools=[
researcher.as_tool(
tool_name="research",
tool_description="Reunir fontes primárias com citações",
max_turns=10, # limite de idas e voltas deste papel
),
reviewer.as_tool(
tool_name="review",
tool_description="Checar um rascunho",
),
],
)
async def main():
result = await Runner.run(
manager,
input="Reúna três estatísticas oficiais sobre o uso de IA generativa no trabalho e escreva um relatório curto",
max_turns=10, # se passar disso, lança MaxTurnsExceeded
)
print(result.final_output)
asyncio.run(main())
O que os dois SDKs têm em comum e onde diferem:
- Os workers não conhecem a conversa do pai. Um agente chamado via
as_tool()não herda automaticamente o estado da conversa da execução pai (documentação oficial). O Claude Agent SDK funciona igual: a única coisa que um subagente recebe do pai é o prompt da ferramenta Agent. Escreva no próprio pedido os caminhos de arquivo, as mensagens de erro e as decisões tomadas. - O limite é
Runner.run(..., max_turns=). Se for ultrapassado, lançaMaxTurnsExceeded. Comerror_handlers={"max_turns": ...}você devolve uma resposta controlada em vez de uma exceção (Running agents). - Com handoffs você escreveria
Agent(..., handoffs=[billing_agent, refund_agent]). O agente que recebe assume a conversa e, por padrão, vê todo o histórico anterior. Se houver informação que ele não deve receber, restrinja com uminput_filter.
6. Como dividir os papéis: boas e más divisões
Dividir os papéis é mais difícil que o código. A Anthropic escreve que cada subagente precisa de um objetivo, um formato de saída, orientação sobre as ferramentas e fontes a usar e limites claros da tarefa (mesma explicação). Veja divisões que cumprem essas quatro condições e outras que não.
| Divisão | Veredito | Por quê |
|---|---|---|
| Por especialidade e ferramentas (pesquisar, redigir, checar) | Boa | Cada papel recebe só as ferramentas e permissões de que precisa. O revisor pode ser somente leitura. |
| Por alvos independentes (pesquisar os produtos de três empresas, uma para cada) | Boa | Eles rodam em paralelo sem esperar uns pelos outros, e o supervisor compara no fim. |
| Picar um processo linear em papéis (resumir → formatar → traduzir) | Evitar | Cada etapa só espera a anterior, nada roda em paralelo e se perde contexto a cada transferência. Um único agente basta. |
| Dar a mesma pergunta a vários papéis sem delimitá-la | Evitar | Na primeira versão da Anthropic, numa consulta sobre a escassez de semicondutores, um subagente explorou a crise de chips automotivos de 2021 enquanto outros dois duplicaram o trabalho sobre as cadeias de suprimentos de 2025. |
| Juntar quem executa e quem verifica num só papel | Evitar | O papel acaba checando a própria saída, e a verificação separada perde o sentido. |
A mesma explicação traz um guia de quantos agentes usar. A Anthropic incluiu regras de escala no prompt do seu supervisor de pesquisa: uma busca simples de fatos precisa de 1 agente com 3 a 10 chamadas de ferramenta, comparações diretas de 2 a 4 subagentes com 10 a 15 chamadas cada, e pesquisas complexas podem usar mais de 10 subagentes. Esses números são para trabalho de pesquisa, então no seu caso comece pelo lado pequeno e só aumente depois de medir.
Para escolher entre supervisor e handoff, a documentação da OpenAI dá um critério claro. Se você quer que um agente seja dono da resposta final ou combinar os resultados de vários especialistas, use o supervisor (agents as tools). Se o roteamento é o próprio trabalho e o especialista escolhido deve responder diretamente ao usuário (triagem de pedidos de suporte, por exemplo), use um handoff. Dá para combinar os dois.
7. Falhas comuns e soluções
Os tropeços são previsíveis. Abaixo estão falhas que a Anthropic diz terem acontecido de verdade com o seu agente de pesquisa e os pontos sobre os quais a documentação oficial dos dois SDKs alerta.
| Falha | Solução |
|---|---|
| Disparar muitos workers para uma pergunta fácil (a primeira versão da Anthropic criou 50 subagentes para consultas simples) | Escreva regras de escala no prompt do supervisor e limite a concorrência e o gasto. |
| Procurar sem fim fontes que não existem (outra falha da primeira versão) | Corte com um maxTurns por papel e um max_turns global. |
| Workers duplicando o trabalho uns dos outros | Informe em cada pedido o objetivo, o formato de saída e o escopo (inclusive o que não fazer). |
| Um worker responde fora do alvo por falta de contexto | A conversa do pai não é repassada. Escreva no pedido os fatos de que ele precisa. |
| O supervisor faz o trabalho em vez de delegar | Torne cada description concreta ou cite o worker pelo nome no prompt (solução de problemas oficial do Claude Agent SDK). |
| Excesso de tokens (multi-agente usa cerca de 15 vezes mais que um chat) | Passe só o necessário, não o contexto inteiro. Use modelos mais baratos nos workers. |
| A precisão cai em tarefas sequenciais (um estudo mediu 39–70% pior) | Se o trabalho é linear, volte a um único agente. |
| Você não sabe onde falhou | Registre cada chamada. No Claude Agent SDK, os blocos tool_use com nome Agent e o campo parent_tool_use_id mostram qual papel produziu cada mensagem. |
A lição compartilhada: "os prompts, o design das ferramentas e o harness de eval decidem o sucesso mais do que o framework." A documentação da OpenAI também lista investir em bons prompts, monitorar e iterar, usar agentes especializados e investir em evals. Acima de uma arquitetura chamativa, a disciplina de construir pequeno, medir e adicionar apenas quando compensa é o que sai mais rápido no fim.
Resumo
Construir um sistema multi-agente não é assustador se você começar com o padrão supervisor a partir de uma configuração mínima. Vamos recapitular.
Pontos-chave
- 🚦 Comece com um. Em tarefas sequenciais, um estudo viu todas as configurações multi-agente renderem 39–70% pior.
- 🧠 A forma básica é o supervisor. Subagentes no Claude Agent SDK, agents as tools no OpenAI Agents SDK.
- 🔢 5 passos: decompor → definir workers → projetar o supervisor → transferências → medir.
- 🧩 Divisão: por especialidade, ferramentas ou alvos independentes. Não pique um processo linear.
- ⚠️ Limites em três lugares (por papel, global e de gasto). Dê a cada worker um objetivo, um formato e um escopo.
"Construa pequeno, meça e depois acrescente." Mantenha essa disciplina e um sistema multi-agente se torna um parceiro poderoso para trabalhos complexos. Para o conceito, veja O que é um sistema multi-agente?; para construir um único, Como construir um agente de IA.
FAQ
Q. Qual padrão devo construir primeiro?
A. O padrão supervisor, sem dúvida. Os principais frameworks o suportam, seu modo de falha é conhecido e as implementações de referência são as mais abundantes. Explore outros padrões quando estiver confortável.
Q. Com quantos workers devo começar?
A. Comece com 2-3 e mantenha no máximo 3-5. Quanto mais você adiciona, mais instável fica e mais os tokens disparam. A norma é acrescentar mais apenas quando a medição comprova a necessidade.
Q. É preciso usar um framework (SDK)?
A. Não. A documentação da OpenAI também descreve a orquestração por código, como usar saídas estruturadas para classificar uma tarefa e escolher o próximo agente, ou alternar num loop um agente que executa e outro que avalia, e observa que assim velocidade, custo e desempenho ficam mais previsíveis. Essa abordagem combina com trabalhos de ordem fixa. Se você não quer programar sozinho o armazenamento de sessões, as permissões de ferramentas e os limites, um SDK é o atalho.
Q. Como evito explosões de custo?
A. Quatro coisas funcionam: ① limitar as idas e voltas globais e por papel, ② limitar o gasto (max_budget_usd no Claude Agent SDK), ③ passar só o necessário em vez do contexto inteiro e ④ usar modelos mais baratos nos workers. A Anthropic constatou que sistemas multi-agente usavam cerca de 15 vezes mais tokens que um chat, então coloque os limites desde o primeiro dia.