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
#E1sã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
- 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?
- 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?
- Substitua o
Plannerpor um modelo menor (classe 7B) e mantenha oSolverem um modelo de ponta. Compare a qualidade de ponta a ponta — onde a divisão falha? - 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?
- 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
- Xu et al., ReWOO: Decoupling Reasoning from Observations (arXiv:2305.18323) — o artigo canônico
- Erdogan et al., Plan-and-Act (arXiv:2503.09572) — planejador-executor escalado com planos sintéticos
- LangGraph Plan-and-Execute tutorial — a receita do framework
- Anthropic, Building Effective Agents — escolha o padrão mais simples que funcione