Phase 14 - Lesson 02

ReWOO e Plan-and-Execute: Planejamento Desacoplado

This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.

O ReAct intercala pensamento e ação em um único fluxo. O ReWOO os separa: um grande plano inicial e depois a execução. 5x menos tokens, +4% de acurácia no HotpotQA, e você pode destilar o planejador em um modelo de 7B. O Plan-and-Execute generalizou isso; o Plan-and-Act o escalou para navegação na web.

Tipo: Construir Linguagens: Python (stdlib) Pré-requisitos: Fase 14 · 01 (Loop do Agente) Tempo: ~60 minutos

Objetivos de Aprendizagem

  • Explicar por que a divisão do ReWOO entre Planner / Worker / Solver economiza tokens e melhora a robustez em relação ao loop intercalado do ReAct.
  • Implementar um DAG de plano, um executor ordenado por dependência e um solver que compõe as saídas dos workers — tudo com stdlib.
  • Decidir quando uma tarefa deve ser executada como planejar-então-executar versus ReAct intercalado, usando a estrutura dos "cinco padrões de fluxo de trabalho" de 2026 (Anthropic).
  • Reconhecer quando os dados de plano sintético do Plan-and-Act são necessários para tarefas de longo horizonte na web ou em dispositivos móveis.

O Problema

O loop intercalado de pensamento-ação-observação do ReAct é simples e flexível, mas cada chamada de ferramenta precisa carregar todo o contexto anterior — incluindo cada pensamento anterior. O uso de tokens cresce quadraticamente com a profundidade. Pior: quando uma ferramenta falha no meio do loop, o modelo precisa derivar novamente todo o plano a partir da observação do erro.

O ReWOO (Xu et al., arXiv:2305.18323, maio de 2023) percebeu isso e fez uma aposta: planejar tudo inicialmente, buscar evidências em paralelo e compor a resposta no final. Uma chamada de LLM para planejar, N chamadas de ferramentas para evidências (podem ser paralelas) e uma chamada de LLM para resolver. A compensação é menos flexibilidade (o plano é estático) em troca de uma eficiência de tokens muito melhor e modos de falha mais claros.

O Conceito

Os três papéis

Planner:  user_question -> [plan_dag]
Workers:  [plan_dag]     -> [evidence]        (tool calls, possibly parallel)
Solver:   user_question, plan_dag, evidence -> final_answer

O Planner produz um DAG. Cada nó nomeia uma ferramenta, seus argumentos e de quais nós anteriores ele depende (referências como #E1, #E2). Os Workers executam os nós em ordem topológica. O Solver costura tudo.

Por que 5x menos tokens

O ReAct aumenta o comprimento do prompt linearmente com o número de etapas. Na etapa 10, o prompt contém o pensamento 1 mais a ação 1 mais a observação 1 mais o pensamento 2 mais a ação 2 mais a observação 2, e assim por diante. Cada etapa intermediária também inclui redundantemente o prompt original.

O ReWOO paga por um prompt do planejador (grande), N prompts pequenos do worker (cada um sendo apenas a chamada de ferramenta, sem cadeia) e um prompt do solver. No HotpotQA, o artigo mede cerca de 5x menos tokens, enquanto atinge +4% de acurácia absoluta.

Por que é mais robusto

Se o worker 3 falhar no ReAct, o loop precisa raciocinar a partir do erro no meio do fluxo. No ReWOO, o worker 3 retorna uma string de erro; o solver a vê no contexto com o plano original e pode se degradar graciosamente. A localização de falhas é por nó, não por etapa.

Destilação do planejador

O segundo resultado do artigo: como o planejador não vê as observações, você pode ajustar um modelo de 7B com base nas saídas do planejador de um professor de 175B. O modelo menor lida com o planejamento; o modelo maior não é necessário na inferência. Isso agora é padrão — muitos agentes de produção de 2026 usam um planejador pequeno e um executor grande ou vice-versa.

Plan-and-Execute (LangChain, 2023)

A postagem de agosto de 2023 da equipe do LangChain generalizou o ReWOO em um nome de padrão: Plan-and-Execute. O planejador inicial emite uma lista de etapas, o executor executa cada etapa e um replanejador opcional pode revisar após observar os resultados. Isso é mais próximo do ReAct do que do ReWOO (o replanejador traz as observações de volta para o planejamento), mas preserva a economia de tokens.

Plan-and-Act (Erdogan et al., arXiv:2503.09572, ICML 2025)

O Plan-and-Act escala o padrão para agentes web e móveis de longo horizonte. A principal contribuição são os dados de plano sintético: um gerador de trajetória rotulado produz dados de treinamento onde o plano é explícito. Usado para ajustar modelos de planejadores que continuam funcionando além de 30 a 50 etapas em tarefas semelhantes ao WebArena, onde uma única trajetória do ReAct perde a coerência.

Quando escolher qual

Padrão Quando
ReAct Tarefas curtas, ambiente desconhecido, necessidade de tratamento de exceções reativo
ReWOO Tarefas estruturadas com ferramentas conhecidas, sensível a tokens, evidências paralelizáveis
Plan-and-Execute Semelhante ao ReWOO, mas com replanejamento após execução parcial
Plan-and-Act Longo horizonte (>30 etapas), uso de web/dispositivo móvel/computador
Tree of Thoughts A busca vale o custo (Lição 04)

A orientação de dezembro de 2024 da Anthropic: comece com o mais simples. Se a tarefa for uma chamada de ferramenta mais um resumo, não construa o ReWOO. Se a tarefa for um trabalho de pesquisa de 40 etapas, não faça apenas o ReAct.

Construa

code/main.py implementa um ReWOO de brinquedo:

  • Planner — uma política programada que emite um DAG de plano a partir de um prompt.
  • Worker — despacha a chamada de ferramenta de cada nó através do registro.
  • Solver — composição programada que lê as evidências e produz uma resposta final.
  • Resolução de dependências — referências como #E1 são substituídas pelas saídas anteriores dos workers.

A demonstração responde a "Qual é a população da capital da França, arredondada para milhões?" usando um plano de duas etapas: (1) buscar a capital, (2) buscar a população e, em seguida, resolver.

Execute-o:

python3 code/main.py

A execução mostra o plano completo primeiro, depois os resultados dos workers e, em seguida, a composição do solver. Compare a contagem de tokens (imprimimos uma contagem aproximada de caracteres) com uma execução intercalada no estilo ReAct — o ReWOO vence nesse tipo de tarefa estruturada.

Use

O LangGraph disponibiliza o Plan-and-Execute como uma receita (create_react_agent para ReAct, grafos customizados para plan-execute). Os Flows do CrewAI codificam o padrão diretamente: você define as tarefas inicialmente e o DAG do Flow as executa. A abordagem de dados sintéticos do Plan-and-Act ainda é majoritariamente acadêmica; o padrão em tempo de execução (DAG de plano explícito) é entregue em produção por meio do LangGraph e dos Flows do CrewAI.

Entregue

outputs/skill-rewoo-planner.md gera um DAG de plano ReWOO a partir de uma solicitação do usuário, dado um catálogo de ferramentas. Ele valida o plano (acíclico, cada referência resolvida, cada ferramenta existente) antes de passá-lo para um executor.

Exercícios

  1. Paralelize a execução dos workers para nós de plano independentes. O que isso traz de benefício em um DAG de 6 nós com 2 grupos paralelos?
  2. Adicione um nó de replanejador que é acionado se algum worker retornar um erro. Qual é a menor alteração no ReWOO que o transforma em Plan-and-Execute?
  3. Substitua o Planner por um modelo menor (classe 7B) e mantenha o Solver em um modelo de ponta. Compare a qualidade de ponta a ponta — onde a divisão falha?
  4. Leia a Seção 4 do artigo do ReWOO sobre destilação do planejador. Reproduza o resultado de 175B -> 7B conceitualmente: de quais dados de treinamento você precisa e como avalia a qualidade do plano?
  5. Adapte o brinquedo para o formato de trajetória do Plan-and-Act: o plano é uma sequência, não um DAG. Quais compensações mudam?

Termos Chave

Termo O que dizem O que realmente significa
ReWOO "Raciocínio sem observações" Planejar, depois buscar evidências em paralelo, depois resolver — sem observações alimentando o prompt de planejamento
Plan-and-Execute "Padrão plan-execute do LangChain" ReWOO com um nó replanejador opcional após a execução
Plan-and-Act "Plan-execute escalado" Divisão explícita entre planejador/executor com dados de treinamento de plano sintético para tarefas de longo horizonte
Referência de evidência "#E1, #E2, ..." Marcador de posição do nó do plano substituído pela saída anterior do worker no momento do envio
Destilação do planejador "Planejador pequeno, executor grande" Ajustar um modelo pequeno com base em traços do planejador de um professor grande
Eficiência de tokens "Menos viagens de ida e volta" 5x menos tokens no HotpotQA versus ReAct no artigo
Executor de DAG "Despachante topológico" Executa nós de plano em ordem de dependência; paralelo em cada nível

Leitura Adicional

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