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: ummanager_llmdelega 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:
- 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.
- 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.
- 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.hierarchicaldo 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
- Execute
code/main.pye 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? - 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.
- 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?
- Leia a documentação do
Process.hierarchicaldo 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. - 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
- CrewAI introduction — Process.hierarchical — hierárquico clássico com um LLM gerente
- LangGraph supervisor reference — supervisor aninhado via
create_supervisor - Anthropic engineering — Research system — por que a Anthropic escolheu deliberadamente um supervisor plano em vez de hierárquico
- Cemri et al. — Why Do Multi-Agent LLM Systems Fail? — taxonomia MAST; seção sobre falhas de coordenação documenta o desvio de decomposição