O que é Fundir Agentes?
Fundir Agentes (Collapse Agents) é uma refatoração de IA para sistemas com LLM, do grupo Movendo controle. Juntar agentes que só passam texto adiante em um agente com as ferramentas certas.
Um time monta um gerador de relatórios de mercado com cinco agentes. Um pesquisador sênior, um analista de dados, um redator, um revisor e um editor-chefe. Na demo, o diagrama impressiona.
Em produção, só o pesquisador tem ferramenta. Os outros quatro recebem texto, reescrevem e passam adiante. O relatório leva vários minutos, custa várias vezes o que deveria, e às vezes chega com um número diferente da fonte. Ninguém sabe em qual das cinco passagens ele mudou. Você conheceu esse smell na aula passada. Hoje você vai juntar tudo, sem perder o que era útil de verdade.
Junte os agentes que não têm motivo técnico para ficar separados num agente só, com as ferramentas certas, e um prompt que descreve a tarefa, não os cargos. E mantenha separado só o que isola contexto, restringe ferramentas ou faz uma revisão independente que foi medida.
Antes, cinco cargos em fila. Quatro deles reescrevendo texto.
Depois, o pedido chega a um agente só. E o prompt dele descreve a tarefa e o formato de saída. Não personagens.
O agente pesquisa quantas vezes precisar, com busca e leitura de páginas.
E a revisão que importava, toda afirmação tem fonte, virou uma checagem no código.
O relatório sai com uma fração das chamadas.
Vamos seguir um número pelas cinco passagens do desenho antigo. Os nomes e números são hipotéticos.
O pesquisador acha, numa página: o mercado de pagamento por aproximação movimentou um vírgula vinte e quatro bilhão de dólares em 2025, segundo a associação X.
O analista escreve: cerca de um vírgula dois bilhão, no ano passado.
O redator: mais de um bilhão de dólares por ano.
O revisor mantém, com uma redação melhorada.
E o editor: movimenta bilhões todo ano.
Nenhum agente errou de propósito. Cada um resumiu um pouco e jogou fora o que parecia detalhe. Somadas, as passagens perderam a fonte, o ano e a ordem de grandeza. E cada agente do meio leu o texto anterior inteiro e escreveu de novo inteiro. Quatro leituras e quatro reescritas do mesmo conteúdo, para chegar a um texto que o pesquisador já tinha os dados para escrever. No desenho novo, o agente escreve o relatório uma vez, com as fontes ali, no próprio contexto.
Uma pergunta para você. No sistema antigo, o relatório final dizia bilhões todo ano, onde a fonte dizia um vírgula vinte e quatro bilhão. Qual é a causa mais provável?
Cada passagem em texto livre resumiu um pouco, e a precisão foi se perdendo, passo a passo. Cada agente reescreve sem ver a fonte original, e as perdas pequenas se somam. Não foi o editor alucinando. O editor só recebeu um texto que já dizia mais de um bilhão. E um sexto agente para conferir os números seria só mais uma passagem, com a mesma perda. A checagem que funciona mora no código, contra a fonte registrada.
Para um modelo, dividir em agentes só ajuda por motivo técnico. Quando os agentes dividem tudo e só reescrevem, cada passagem custa uma leitura inteira e arrisca perder detalhes. Quando você junta, o modelo faz numa sequência de raciocínio o que antes fazia em cinco chamadas, sem reler o próprio trabalho como se fosse de outra pessoa. E o que antes era revisão muitas vezes era um critério verificável, que funciona melhor no código.
Mas dividir nem sempre é errado. Quando vários subagentes pesquisam perguntas amplas em paralelo, cada um lendo muito material no próprio contexto e devolvendo só o essencial, isso pode compensar. Mesmo com uma conta de tokens bem maior.
E quando todos trabalham sobre o mesmo material, como o mesmo código, agentes que não veem o contexto um do outro tomam decisões que se contradizem. Então a regra é simples. Divida quando há leitura pesada e independente, uma ferramenta sensível ou uma revisão medida. Junte quando todos trabalham sobre o mesmo material.
Agora, o passo a passo. Passo zero, medir. Rode o eval no sistema atual. Qualidade, custo por tarefa, latência. E guarde a saída de cada agente do meio.
Compare a entrada e a saída de cada agente. Se a saída é quase igual à entrada, esse agente é candidato a sair.
Tente tirar um de cada vez e rode o eval. Os que, tirados, não mudam a qualidade, saem.
Escreva o prompt do agente único, com a tarefa, o formato e as regras úteis que os cargos removidos carregavam.
E transforme as revisões verificáveis em código. Fontes, formato, tamanho, termos proibidos. Depois mantenha separado só o que tem motivo, dê um orçamento ao agente único e meça de novo. Qualidade igual ou melhor, custo e latência menores.
Agora, o erro comum. Jogar as regras fora junto com os cargos. O prompt do revisor às vezes tinha uma regra que vale guardar, enterrada entre linhas de personagem. Nunca cite dado com mais de dois anos.
Digamos que no eval essa regra pegou problema em 6% dos casos. O que fazer com ela? Não manter o revisor como um agente inteiro. Uma data se confere sem modelo. E também não descartar, torcendo para o agente único buscar dado recente sozinho. Transforme numa checagem no código sobre a data de cada fonte, e diga a regra no prompt, para o agente procurar fontes recentes desde o começo.
Então, antes de tirar cada cargo, copie as instruções concretas dele numa lista. Descarte as de personagem, como você é um revisor exigente com vinte anos de experiência. E leve as verificáveis para o prompt, ou para o código.
Os riscos. Estouro de contexto. Se um dos agentes isolava uma leitura pesada, juntar enche o contexto. Mantenha esse como subagente.
Perder uma revisão que importava. Digamos que você tirou o analista e o eval não mudou. Depois tirou o revisor, e a nota caiu nos casos com tabela. Não coloque os dois de volta. O analista pode sair. Descubra o que o revisor corrigia nas tabelas e escolha a casa mais barata para isso. Uma regra, uma checagem no código, ou um avaliador separado.
Juntar e criar um mega agente. Se, ao juntar, você também dá ao agente as ferramentas de mandar e-mail para cliente e publicar no site, você criou o smell oposto. Junte só o que é decorativo. Ferramentas com efeito colateral continuam com escopo próprio, e com aprovação.
E a resistência de quem desenhou. Cinco agentes com cargo parecem mais sofisticados num slide. Leve a comparação do eval. Mesma qualidade, menos chamadas, menos tempo.
Vamos praticar. Cinco agentes que respondem licitações. Quais você juntaria, e quais manteria separados?
O leitor fica separado. Ele isola a leitura de quarenta documentos. O resumidor sai. O leitor já pode devolver os requisitos estruturados.
O redator e o formatador viram um. Formatar faz parte de escrever, ou o formato vira um template no código. E o revisor de conformidade fica separado, se o eval mostrar que ele pega problemas. Ele revisa com rubrica, e sem o raciocínio de quem escreveu.
Então, a ideia para levar. Meça, tire um agente de cada vez e mantenha só o que mexe na nota. Copie as regras úteis antes de apagar qualquer cargo, e transforme as verificáveis em código. Você termina com um agente que faz o trabalho, e poucas separações que você consegue explicar.
Na próxima aula, vamos ver a separação que compensa, quando é bem feita: o evaluator optimizer. Até lá.
Collapse Agents
Fundir Agentes (Collapse Agents) é uma refatoração de IA para sistemas com LLM, do grupo Movendo controle. Juntar agentes que só passam texto adiante em um agente com as ferramentas certas.
Vários agentes só passam texto adiante, sem dividir trabalho de verdade, e o custo se multiplica. São os smells Multi-Agente Decorativo e Subagentes em Cascata.
Um time monta um gerador de relatórios de mercado com cinco agentes: Pesquisador Sênior, Analista de Dados, Redator, Revisor e Editor-Chefe. Na demo, o diagrama impressiona. Em produção, só o Pesquisador tem ferramenta. Os outros quatro recebem texto, reescrevem e passam adiante.
O relatório demora vários minutos, custa várias vezes o necessário e às vezes chega com um número diferente do que a fonte dizia. Ninguém sabe em qual das cinco passagens ele mudou.
Junte os agentes que não têm motivo técnico para existir separados num único agente, com as ferramentas certas e um prompt que descreve a tarefa, não os cargos. Mantenha separado só o que isola contexto, restringe ferramentas ou garante revisão independente medida.
-agents:
- - role: Pesquisador Sênior tools: [web_search]
- - role: Analista de Dados tools: []
- - role: Redator tools: []
- - role: Revisor tools: []
- - role: Editor-Chefe tools: []
-flow: sequential
+agent:
+ system: |
+ Você produz relatórios de mercado. Pesquise com web_search, registre
+ cada afirmação com a fonte, e escreva o relatório na estrutura abaixo.
+ Antes de terminar, confira se toda afirmação tem fonte.
+ tools: [web_search, fetch_page]
+ output: Report # schema com seções e citações
+ budget: { steps: 20 }
+checks:
+ - every_claim_has_source # em código, depois da resposta
Antes: cinco papéis em fila, quatro deles reescrevendo texto.
flowchart LR
P(["1. Pesquisador"]):::llm --> A(["2. Analista"]):::llm
A --> R(["3. Redator"]):::llm
R --> V(["4. Revisor"]):::llm
V --> E(["5. Editor"]):::llm
Depois: um agente com ferramentas e uma checagem em código.
flowchart LR
T(["1. Pedido"]):::io --> A(["2. Agente de relatório"]):::llm
A --> W["3. web_search, fetch_page"]:::tool
W --> A
A --> C["4. Checagem de fontes em código"]:::tool
C --> OUT(["5. Relatório"]):::io
Acompanhe um dado pelas cinco passagens do desenho antigo. O Pesquisador encontra numa página: “o mercado de pagamentos por aproximação movimentou R$ 1,24 bilhão em 2025, segundo a associação X”. Os nomes e números aqui são hipotéticos.
| Agente | O que sai |
|---|---|
| Pesquisador | R$ 1,24 bilhão em 2025, segundo a associação X |
| Analista | cerca de R$ 1,2 bilhão no último ano |
| Redator | mais de um bilhão de reais por ano |
| Revisor | mais de um bilhão de reais por ano (texto “melhorado”) |
| Editor | movimenta bilhões por ano |
Nenhum agente errou de propósito. Cada um resumiu um pouco e tirou o que parecia detalhe. Somadas, as passagens perderam a fonte, o ano e a ordem de grandeza.
Agora a conta de custo, com números ilustrativos. Suponha que cada agente intermediário leia cerca de 4.000 tokens do anterior e escreva outros 3.000. São quatro leituras e quatro reescritas inteiras do mesmo conteúdo, só para chegar ao texto que o Pesquisador já tinha os dados para escrever. No desenho novo, o agente escreve o relatório uma vez, com as fontes à vista no próprio contexto.
Para um modelo, separar em agentes só ajuda por razões técnicas: o contexto de um ficaria cheio demais, as ferramentas de um não devem estar com o outro, ou um olhar independente melhora o resultado. Cargos humanos não são uma dessas razões. Quando os agentes compartilham tudo e só reescrevem, cada passagem custa uma leitura completa e corre o risco de perder detalhes.
Ao fundir, o modelo faz numa sequência de raciocínio o que antes fazia em cinco chamadas, sem precisar reler o próprio trabalho como se fosse de outro. E o que era “revisão” muitas vezes era um critério verificável, que fica melhor em código.
O destino é um Loop ReAct com Uso de Ferramentas: um agente que raciocina, chama ferramenta, lê o resultado e decide o próximo passo.
Separar não é sempre errado. A Anthropic relatou, no post sobre o sistema de pesquisa multiagente do Claude (junho de 2025), que vários subagentes pesquisando em paralelo ajudaram em perguntas amplas. O mesmo texto conta que esse desenho gasta bem mais tokens que um chat comum. A separação pagava porque cada subagente lia muito material em contexto próprio e devolvia só o essencial.
No mesmo mês, a Cognition publicou “Don’t Build Multi-Agents”, com o argumento oposto para tarefas como escrever código: agentes que não veem o contexto um do outro tomam decisões que se contradizem. As duas posições combinam com a regra desta página. Separe quando há leitura pesada e independente. Junte quando todos trabalham sobre o mesmo material.
| Motivo para manter separado | Exemplo |
|---|---|
| Isolar leitura pesada | Subagente lê 40 PDFs e devolve requisitos em schema |
| Restringir ferramentas | Só o agente de pagamentos tem acesso a transferir |
| Revisão independente medida | Avaliador com rubrica que o eval mostra que pega erros |
| Paralelizar trabalho independente | Cinco buscas sobre temas diferentes ao mesmo tempo |
O prompt do “Revisor” às vezes tinha uma regra que valia ouro, escondida entre frases de personagem: “nunca cite dado com mais de dois anos”. Se você apaga o agente sem ler o prompt dele, a regra some.
Antes de remover cada papel, copie para uma lista as instruções concretas que ele tinha. Descarte as de personagem (“você é um revisor exigente com 20 anos de casa”) e leve as verificáveis para o prompt único ou para uma checagem em código.
Quais destes agentes você fundiria, e quais manteria separados?
1. Leitor: lê 40 PDFs de editais e extrai requisitos (ferramenta: read_pdf)
2. Resumidor: resume a saída do Leitor em tópicos
3. Redator: escreve a proposta a partir dos tópicos
4. Revisor de conformidade: confere a proposta contra os requisitos, com rubrica
5. Formatador: aplica o modelo de documento da empresa
O Leitor fica separado: ele isola a leitura de 40 PDFs. O Resumidor some: o Leitor já pode devolver os requisitos estruturados. O Redator e o Formatador viram um só, porque formatar é parte de escrever, ou o formato vira um template em código. O Revisor de conformidade fica separado se o eval mostrar que ele pega problemas, porque revisa com rubrica e sem o raciocínio do redator.
Leitor (subagente, read_pdf) -> requisitos em schema
Redator (agente) -> proposta no template
Revisor (avaliador com rubrica) -> lista de requisitos não atendidosResponda as 5 perguntas para concluir a aula. Só assistir não conclui: a checagem é o que conta para a trilha e para o certificado.
Fundir Agentes (Collapse Agents) é uma refatoração de IA para sistemas com LLM, do grupo Movendo controle. Juntar agentes que só passam texto adiante em um agente com as ferramentas certas.
Ao padrão de projeto Loop ReAct e Uso de Ferramentas.