Preparação para entrevista
SmellAbusos de controle

Subagentes em Cascata

Subagent Recursion

Subagentes em Cascata (Subagent Recursion) é um smell de IA, ou seja, um sinal de problema em sistemas com LLM, do grupo Abusos de controle. Subagentes criam subagentes sem limite de profundidade nem de custo.

Elemento
12/37
Nível
Avançado
Leitura
4 min
Atualizado
Nesta página 7
  1. 01Como reconhecer
  2. 02Por que acontece
  3. 03Quanto custa ignorar
  4. 04Tratamento
  5. 05O que você ganha
  6. 06Quando ignorar
  7. 07É esse smell?
  8. ··Perguntas rápidas

Como reconhecer

Uma ferramenta de pesquisa interna recebeu a pergunta “qual a política de reembolso para viagens internacionais?”. O trace (anonimizado e resumido):

agent[0] delegate("pesquisar política de reembolso")
  agent[1] delegate("pesquisar política de viagens")
    agent[2] delegate("pesquisar política de viagens internacionais")
      agent[3] delegate("verificar câmbio aplicável")
        agent[4] delegate("pesquisar cotação do dólar")
        ...
  agent[1] delegate("pesquisar exceções de reembolso")
    ...
total: 140 subagentes, 2.300 chamadas ao modelo, 47 minutos
resposta: um parágrafo que estava na primeira página da wiki

Cada agente podia criar subagentes, e cada subagente também. Nenhum tinha limite de profundidade, e cada um recebia um orçamento novo.

A conta ilustrativa deixa o formato visível. Suponha 3 filhos por nó e profundidade 5: 1 + 3 + 9 + 27 + 81 = 121 agentes antes de contar o sexto nível. Se cada um faz 10 chamadas ao modelo, você já passou de mil chamadas. A pergunta cabia em uma busca.

Sinais de Subagentes em Cascata:

  • Subagentes têm a mesma ferramenta de delegação que o agente principal.
  • Não há limite de profundidade nem de número total de agentes por tarefa.
  • Cada subagente recebe um orçamento próprio, em vez de dividir o do pai.
  • O trace tem árvores profundas para perguntas simples.
  • O custo de uma tarefa varia em ordens de grandeza entre execuções parecidas.
flowchart TD
  A(["1. Agente"]):::llm --> B(["2. Subagente"]):::llm
  A --> C(["2. Subagente"]):::llm
  B --> D(["3. Sub-subagente"]):::llm
  B --> E(["3. Sub-subagente"]):::llm
  C --> F(["3. Sub-subagente"]):::llm
  D --> G(["4. e assim por diante"]):::llm
  1. O agente principal decide delegar.
  2. Cada subagente pode delegar também.
  3. A árvore cresce a cada nível.
  4. Sem limite, o crescimento é exponencial, e cada nó tem seu próprio loop.

O desenho parece pesquisa em equipe. Na prática, o modelo parte a pergunta em fatias cada vez mais estreitas (“câmbio”, “dólar”, “PTAX”) em vez de ler a wiki. Cada fatia ganha um agente novo, com histórico próprio e teto próprio.

Checagem +20 XP de primeiraCada subagente pode criar até 3 filhos, a profundidade não tem teto, e cada nó tem 20 passos próprios. Qual é o risco que o teto por nó não cobre?

Por que acontece

  • Delegação recursiva parece elegante. “O agente pode criar quantos agentes precisar” soa flexível. Flexível sem teto é ilimitado.
  • A mesma configuração serve para todos. O subagente é uma cópia do principal, com todas as ferramentas, inclusive delegate. Quem pode criar filhos cria netos.
  • Orçamento por agente, não por tarefa. Cada nó tem um teto razoável; o total não tem. Três níveis de 20 passos parecem 20. Não são.
  • Modelos tendem a delegar quando podem. Com a ferramenta disponível, eles usam. Partir o trabalho é o jeito mais óbvio de “ser um orquestrador”.
  • O limite do framework engana. recursion_limit no LangGraph e max_turns no OpenAI Agents SDK cortam o loop de um grafo ou de um agente. Não cortam a profundidade de uma árvore de processos separados.

O guia “Building effective agents”, da Anthropic (dez. 2024), recomenda condições de parada (número máximo de iterações) em loops de agente. O mesmo princípio vale para a árvore: profundidade, largura e custo total.

Quanto custa ignorar

  • Custo explosivo. Uma tarefa simples pode custar centenas de vezes o normal. Com 2.300 chamadas, mesmo um modelo barato some com a cota do dia.
  • Latência. Mesmo em paralelo, árvores profundas levam muito tempo. Quarenta e sete minutos para um parágrafo da wiki.
  • Qualidade. Cada nível resume o nível de baixo. Depois de quatro resumos, o detalhe da política de reembolso virou um parágrafo genérico, e o câmbio que ninguém pediu entrou no meio.
  • Cota. Centenas de chamadas simultâneas esgotam o rate limit de todo o sistema. Outras tarefas inocentes falham com 429.
  • Diagnóstico. Um trace com 140 ramos quase não se lê. Você acha o parágrafo final e não acha o caminho que o produziu.

Tratamento

Refatoração Escolha quando
Adicionar Orçamento ao Loop Sempre. Um orçamento por tarefa, compartilhado pela árvore inteira, com limite de profundidade e de número de agentes. Destinos: Condições de Parada e Orçamento de Custo.
Fundir Agentes A árvore existe por hábito, não por necessidade. Um agente com as ferramentas certas resolve sem delegar.

O orçamento da árvore tem quatro números, todos no código, nenhum no prompt:

  1. Profundidade máxima. Dois níveis cobrem a maior parte dos casos: um orquestrador e trabalhadores. Três já pede justificativa.
  2. Número máximo de agentes na tarefa inteira.
  3. Custo e passos compartilhados. Cada filho gasta do teto do pai. Quando o teto acaba, a árvore para, não começa um orçamento novo.
  4. Quem pode delegar. Subagentes, por padrão, não herdam delegate. Se um trabalhador precisa de ajuda, ele devolve o resultado incompleto.

Antes e depois, na configuração:

# antes
subagent.tools = parent.tools          # inclui delegate
subagent.budget = Budget(steps=20)     # novo, inteiro

# depois
subagent.tools = parent.tools - {delegate}
subagent.budget = parent.budget.share()
tree.max_depth = 2
tree.max_agents = 8

Pesquisa interna de política quase nunca precisa de árvore. Um agente com busca na wiki, no padrão de Delegação a Subagentes usado com trabalhadores sem delegate, já basta. A cascata é o abuso desse padrão.

Checagem +20 XP de primeiraVocê tirou delegate dos filhos e limitou a profundidade a 2. Uma tarefa ainda custa cerca de 40 vezes a mediana, com 30 trabalhadores em paralelo. Qual é o próximo corte?

O que você ganha

  • Custo máximo por tarefa definido por você.
  • Árvores rasas, com delegação só onde ela isola contexto ou paraleliza trabalho.
  • Respostas que passam por menos resumos intermediários.

Quando ignorar

Nunca deixe a recursão sem limite. Delegação em dois níveis, com orçamento compartilhado e trabalhadores sem delegate, é um desenho legítimo. Pesquisa ampla em paralelo (várias fontes ao mesmo tempo) cabe nesse desenho. Subagentes sem a ferramenta de delegação resolvem a maioria dos casos.

É esse smell?

Checagem +20 XP de primeiraO agente principal pode criar subagentes, mas os subagentes não têm a ferramenta de delegação. Há um limite de 8 subagentes por tarefa, e o custo sai do orçamento do pai. É Subagentes em Cascata?

Checagem +20 XP de primeiraCada subagente tem limite de 20 passos e pode delegar até 3 níveis. Não há orçamento total. O que falta?

Checagem +20 XP de primeiraUm agente faz um loop de 200 voltas sem delegar a ninguém, chamando a mesma busca. Qual smell?

Checagem +20 XP de primeiraUm orquestrador dispara exatamente 3 trabalhadores em paralelo (leis, números, precedentes), nenhum deles pode delegar, e o pai espera os 3. É Subagentes em Cascata?

Perguntas rápidas

O que é Subagentes em Cascata?

Subagentes em Cascata (Subagent Recursion) é um smell de IA, ou seja, um sinal de problema em sistemas com LLM, do grupo Abusos de controle. Subagentes criam subagentes sem limite de profundidade nem de custo.

Como corrigir Subagentes em Cascata?

Com Adicionar Orçamento ao Loop e Fundir Agentes. Cada refatoração traz o passo a passo seguro, com eval antes e depois.

Para ir além

Relações

Buscar