Phase 16 - Lesson 06

Arquitetura Hierárquica e Seu Modo de Falha

Hierárquica é supervisores aninhados. Agentes gerentes sobre subgerentes sobre trabalhadores. CrewAI Process.hierarchical é a versão clássica: um manager_llm delega tarefas dinamicamente e valida as saídas. O equivalente em LangGraph é create_supervisor(create_supervisor(...)). É o padrão natural quando a tarefa é um organograma real. Também é o padrão mais propenso a colapsar em loops gerenciais — agentes gerentes atribuem trabalho mal, interpretam incorretamente as subsaídas ou falham em chegar a um consenso. O sequencial frequentemente o supera.

Tipo: Aprender + Construir Linguagens: Python (biblioteca padrão) Pré-requisitos: Fase 16 · 05 (Padrão Supervisor) Tempo: ~60 minutos

Problema

Uma vez que o padrão supervisor faça sentido, o próximo passo natural é "e se os próprios trabalhadores fossem supervisores?". Equipes têm subequipes; empresas têm departamentos de departamentos. Arquiteturas hierárquicas refletem isso.

O problema: gerentes de LLM não são iguais a gerentes humanos. Um gerente humano tem premissas estáveis sobre o que seus subordinados sabem. Um gerente de LLM refaz o raciocínio da organização a cada turno a partir de qualquer coisa que esteja em seu contexto. Pequenos desvios nesse contexto, e a árvore inteira aloca o trabalho incorretamente.

Conceito

O formato

                 Manager
                 ┌─────┐
                 └──┬──┘
           ┌────────┴────────┐
           ▼                 ▼
       Sub-Mgr A         Sub-Mgr B
       ┌─────┐           ┌─────┐
       └──┬──┘           └──┬──┘
         ┌┴──┬──┐          ┌┴──┐
         ▼   ▼  ▼          ▼   ▼
       W1  W2  W3         W4  W5

Cada nó interno planeja, delega e sintetiza. Apenas as folhas trabalham.

Onde ele se destaca

  • Mapeamento organizacional claro. Se a tarefa real é departamental ("jurídico revisa o documento, financeiro revisa o documento, engenharia revisa o documento, depois resume para o executivo"), a hierarquia é explícita.
  • Sumarização local. Cada subgerente sintetiza a saída de sua equipe antes que o gerente principal a veja. O gerente principal vê três resumos de subgerentes, e não quinze saídas de trabalhadores.

Onde ele falha

Três modos de falha que os pós-mortes de 2026 continuam encontrando:

  1. Erro de atribuição de tarefas. O gerente lê o objetivo, alucina uma decomposição e delega para o subgerente errado. Como o subgerente trabalha obedientemente no que lhe foi dado, o erro só surge na síntese final — um nível de distância de onde um humano poderia tê-lo detectado.
  2. Má interpretação de saída. O subgerente retorna "incapaz de verificar a alegação X". O gerente principal resume como "alegação X não confirmada". O significado sofre desvios em cada nível.
  3. Loops de consenso. Dois subgerentes discordam; o gerente principal pede que eles se reconciliem; eles redelegam para baixo; os trabalhadores executam novamente; os subgerentes retornam respostas ligeiramente diferentes; loop. O Process.hierarchical do CrewAI protege contra isso com limites de etapas, mas o próprio limite agora é um hiperparâmetro.

A pergunta decisiva

Sequencial (pipeline linear) vs hierárquico: sua tarefa realmente tem subequipes independentes ou é um fluxo linear fingindo ser uma árvore? Se for a última opção, use sequencial. Se for a primeira, use hierárquico, mas planeje regras explícitas de reconciliação.

Implementação do CrewAI

Process.hierarchical conecta um LLM gerente sobre equipes de especialistas. O gerente:

  • recebe a tarefa de nível superior,
  • atribui subtarefas às equipes,
  • avalia as saídas das equipes,
  • decide se aceita, redelega ou itera.

Documentação: https://docs.crewai.com/en/introduction (procure por "Hierarchical Process" em Core Concepts).

Implementação do LangGraph

O LangGraph usa chamadas create_supervisor aninhadas. O supervisor interno tem seu próprio grafo; o supervisor externo trata o grafo interno como um nó opaco. Isso é mais limpo do que o CrewAI para depuração (você pode depurar cada grafo separadamente), mas mais difícil de expressar a remodelação dinâmica da árvore.

Referência: https://reference.langchain.com/python/langgraph-supervisor.

Construa

code/main.py executa uma hierarquia de 3 níveis:

  • gerente principal: divide uma tarefa em ramificações de "engenharia" e "jurídico",
  • subgerente de engenharia: divide em trabalhadores de "frontend" e "backend",
  • subgerente jurídico: um trabalhador.

A demonstração contrasta o caminho feliz (onde todos concordam) com um caminho perturbado onde a decomposição do gerente principal rotula incorretamente "jurídico" como "financeiro" e observa o erro cascatear — o subgerente obedientemente faz o trabalho financeiro, o sintetizador principal relata descobertas financeiras e a pergunta jurídica original fica sem resposta.

Execute:

python3 code/main.py

A saída mostra ambos os caminhos com uma comparação direta clara entre "o que foi solicitado" vs "o que foi entregue".

Use

outputs/skill-hierarchy-fitness.md avalia se uma determinada tarefa deve usar supervisor hierárquico, sequencial ou plano. Entradas: descrição da tarefa, estrutura organizacional, orçamento de reconciliação. Saída: recomendação de padrão com os modos de falha específicos contra os quais se proteger.

Envie para Produção

Se você implantar uma arquitetura hierárquica:

  • Limite a profundidade da árvore em 2. Três níveis já ocultam a maioria dos erros da observabilidade.
  • Orçamento de reconciliação explícito. Defina o número máximo de rodadas antes que o gerente principal precise se comprometer. Geralmente 2.
  • Proveniência em cada síntese. O resumo de cada nó deve citar quais saídas de folhas o produziram.
  • Alerta sobre desvio de decomposição. Registre a decomposição do gerente a cada etapa; faça um diff contra a consulta do usuário. Se a decomposição não cobrir mais a consulta, dispare um alerta.

Exercícios

  1. Execute code/main.py e compare o caminho feliz vs perturbado. Quantos níveis de transferência entre gerentes são necessários antes que a saída principal divirja totalmente da pergunta do usuário?
  2. Adicione um terceiro nível (principal → sub → sub-sub → trabalhador). Meça com que frequência o caminho perturbado se corrige versus divirge totalmente à medida que a profundidade aumenta.
  3. Implemente um trabalhador "canário" em cada subgerente que sempre receba a pergunta original do usuário sem alterações. Use a resposta do canário para detectar o desvio de decomposição. Como o gerente deve reagir quando o canário discordar da resposta sintetizada?
  4. Leia a documentação do Process.hierarchical do CrewAI. Identifique uma proteção concreta que o CrewAI aplica (limite de etapas, restrição de manager_llm) e descreva qual modo de falha ela visa evitar.
  5. Compare supervisores aninhados do LangGraph com o hierárquico do CrewAI. Qual deles torna os loops de reconciliação mais baratos de detectar?

Termos-Chave

Termo O que as pessoas dizem O que realmente significa
Hierárquico "Padrão de organograma" Supervisores sobre supervisores; apenas as folhas trabalham.
LLM Gerente "O chefe" O LLM que decompõe, atribui e valida em um nó interno.
Desvio de decomposição "O chefe perdeu o rumo" A divisão do gerente principal não cobre mais a pergunta original.
Loop de reconciliação "Reuniões sem fim" Subgerentes discordam; o principal redelega; os trabalhadores executam novamente; loop até esgotar o orçamento.
Teto de profundidade 2 "Não vá além de 2 níveis" Limite empírico: 3 ou mais níveis colapsam a observabilidade.
Pergunta canário "Verdade fundamental em cada nível" Um trabalhador a quem sempre é feita a consulta original sem alterações, para detectar desvios.
Cadeia de proveniência "Quem disse o quê" Rastro de cada síntese de volta às saídas das folhas que a produziram.

Leituras Adicionais

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).