Olá! Bem-vindo à nossa sexta lição.
Na aula anterior, estabelecemos como um agente de IA pode interagir com o mundo real usando "tool use" ou "function calling". Você aprendeu que um agente pode solicitar a execução de uma ferramenta, como create_pull_request, para realizar uma ação concreta. Isso responde como um agente executa um passo.
Mas seu objetivo é construir um agente que realize tarefas complexas e multifacetadas, como implementar uma nova funcionalidade. Isso requer uma sequência de várias ações: ler um ticket, analisar arquivos, gerar código, criar uma migration e abrir um pull request. A questão agora é: como o agente decide a ordem dessas ações? Como ele orquestra múltiplas chamadas de ferramentas para atingir um objetivo complexo?
Nesta lição, vamos explorar as estratégias por trás dessa orquestração. O nosso objetivo é comparar padrões comuns de orquestração de agentes como ReAct e Plan-and-Execute. Compreender esses dois "modos de pensar" de um agente é fundamental para projetar um sistema que seja ao mesmo tempo eficaz e eficiente.
1. ReAct: O Padrão de Raciocínio e Ação Iterativa
O padrão ReAct, que significa Reasoning and Acting, é talvez o mais intuitivo. Ele imita a maneira como um ser humano aborda um problema desconhecido: um passo de cada vez.
O ciclo do ReAct é contínuo e iterativo:
- Thought (Pensamento): O LLM analisa o objetivo e o estado atual e pensa sobre qual deve ser o próximo passo.
- Action (Ação): Com base no pensamento, o LLM decide qual ferramenta chamar e com quais argumentos.
- Observation (Observação): A ferramenta é executada e seu resultado (a "observação") é retornado.
- Repeat: O ciclo recomeça, com a nova observação alimentando o próximo "pensamento".

Para entender melhor o ReAct e suas implicações, assista a este trecho.
O vídeo 'LangGraph: Planning Agents' do canal LangChain começa com uma excelente explicação do padrão ReAct e suas limitações.
Assista ao segmento de 00:47 a 02:46. Preste atenção especial às desvantagens mencionadas: execução serial lenta, alto custo de tokens devido a chamadas repetidas ao LLM e o risco de o agente ser 'míope' (shortsighted), otimizando apenas para o próximo passo imediato.
Em resumo, as características do ReAct são:
- Força: Altamente adaptável. Se uma ação falha ou retorna um resultado inesperado, o agente pode raciocinar sobre essa nova informação e mudar de curso imediatamente. É ideal para tarefas exploratórias ou ambientes imprevisíveis (por exemplo, um chatbot de atendimento ao cliente).
- Fraqueza: Ineficiente e caro. Cada passo do ciclo requer uma chamada ao LLM, que é a operação mais lenta e cara do processo. Para uma tarefa de 10 passos, são necessárias pelo menos 10 chamadas ao LLM, consumindo muitos tokens com o histórico de pensamento (o
agent_scratchpadque você pode ver nos templates de prompt).
2. Plan-and-Execute: O Padrão do Estrategista
Como uma alternativa ao ReAct, surgiu o padrão Plan-and-Execute. A ideia é simples: em vez de pensar a cada passo, o agente faz todo o trabalho de raciocínio no início.
O fluxo é dividido em fases distintas:
- Planning (Planejamento): O LLM recebe o objetivo final e cria um plano detalhado e sequencial de todas as etapas necessárias para alcançá-lo. Esta é, tipicamente, a primeira e única grande fase de raciocínio.
- Execution (Execução): Um executor, que pode ser um loop de código simples sem a necessidade de um LLM, percorre o plano passo a passo, chamando as ferramentas especificadas.
- (Opcional) Synthesis (Síntese): Após a conclusão de todos os passos, os resultados coletados podem ser enviados a um LLM uma última vez para gerar uma resposta final consolidada.

O artigo a seguir oferece uma excelente decomposição visual e arquitetônica deste padrão.
Planning Pattern for AI Agents: Strategic Reasoning Before Action
O artigo 'Planning Pattern for AI Agents' do blog GenMind contrasta diretamente o ReAct com o Plan-and-Execute, focando nos benefícios de custo e eficiência.
Leia as seções 'Why Planning Matters (And When ReAct Isn’t Enough)' e 'The Planning Pattern: How It Works'. Observe os diagramas de estado que comparam visualmente os dois fluxos e a descrição das três fases (Planning, Execution, Synthesis). Note a arquitetura de três agentes proposta: um Planner, um Executor e um Synthesis, o que reflete uma clara separação de responsabilidades, um conceito familiar do seu trabalho com backend.
Para ver uma implementação prática usando uma estrutura de grafos, que pode ser familiar à sua experiência com sistemas e redes, o vídeo a seguir é bastante elucidativo.
Build a "Plan and Execute" AI Agent Workflow with LangGraph
O vídeo 'Build a "Plan and Execute" AI Agent Workflow with LangGraph' do canal Deep Charts demonstra como construir um agente Plan-and-Execute do zero, mostrando como cada função (nó) se conecta para formar um fluxo de trabalho.
Assista ao vídeo do início até 10:14. Não se preocupe em memorizar o código, mas concentre-se em entender: Como o problema é decomposto em nós: planner, recommend_music_event, event_lookup, executor. O conceito de agent state, que armazena as informações conforme o fluxo avança. Como as arestas (edges) conectam os nós e como uma aresta condicional (conditional_edge) permite loops e adaptação, como voltar ao passo de recomendação se a busca de detalhes falhar.
As características do Plan-and-Execute são:
- Força: Eficiente e rápido. Minimiza as chamadas ao LLM (geralmente apenas duas: uma para planejar, outra para sintetizar), o que reduz drasticamente a latência e o custo. É ideal para tarefas previsíveis com um fluxo de trabalho bem definido.
- Fraqueza: Rígido e frágil. Se um passo no meio da execução falhar, ou se o plano inicial for falho, o agente não pode se adaptar dinamicamente sem uma lógica de "replanejamento" explícita, como a que foi mostrada no vídeo com a aresta condicional.
3. Comparação Direta e Quando Usar Cada Padrão
Agora que entendemos os dois padrões, vamos colocá-los lado a lado. A escolha correta depende inteiramente da natureza da tarefa.
O artigo da GenMind que você leu anteriormente contém uma seção de benchmark que quantifica as diferenças de forma impressionante.
Planning Pattern for AI Agents: Strategic Reasoning Before Action
Vamos revisitar o artigo da GenMind para analisar os benchmarks de desempenho e o guia de seleção.
Estude cuidadosamente as seções 'Performance Benchmarks: Planning vs ReAct' e 'Production Considerations', focando na tabela 'Results' e nas listas de 'When to Use Planning vs ReAct'. Os números de redução de custo (5.2x mais barato) e tempo de execução (4x mais rápido) são um argumento poderoso a favor do planejamento para tarefas adequadas.
Aqui está um resumo consolidado para referência rápida:
| Característica | ReAct (Iterativo) | Plan-and-Execute (Estratégico) |
|---|---|---|
| Fluxo de Trabalho | Ciclo contínuo: Pensa -> Age -> Observa | Fases discretas: Planeja -> Executa -> Sintetiza |
| Chamadas ao LLM | Muitas (uma por passo) | Poucas (geralmente 2 no total) |
| Custo e Tokens | Alto | Baixo (redução de até 5x) |
| Latência | Alta (devido às múltiplas chamadas de rede) | Baixa (execução é principalmente código local) |
| Adaptabilidade | Alta (pode mudar de curso a qualquer momento) | Baixa (o plano é fixo, requer replanejamento explícito) |
| Ideal para | Tarefas exploratórias, depuração, conversas interativas, ambientes imprevisíveis. | Tarefas com fluxo previsível, processamento em lote, relatórios, análises, onde custo e velocidade são críticos. |
4. A Evolução do Planejamento: Superando a Rigidez
A principal desvantagem do Plan-and-Execute é sua rigidez. E se um passo depende do resultado de um passo anterior? A comunidade de pesquisa de IA tem trabalhado em evoluções desse padrão. Dado seu background em engenharia, esses conceitos mais avançados serão particularmente interessantes.
Para concluir, vamos explorar brevemente duas evoluções do padrão de planejamento no mesmo vídeo do LangChain que iniciamos.
Assista aos seguintes segmentos: Reasoning Without Observation (ReWOO) (10:21 - 11:47): Entenda como esta abordagem permite que o plano inicial inclua 'variáveis'. O plano pode ser Passo 1: Encontre o ID do usuário. Passo 2: Use o ID do Passo 1 para buscar o perfil. Isso evita uma chamada de replanejamento. LLM Compiler (19:30 - 21:40): Este é o conceito mais avançado. O plano não é uma lista, mas um Grafo Acíclico Dirigido (DAG) com dependências explícitas. Isso permite que o executor execute tarefas independentes em paralelo, otimizando massivamente a velocidade. A ideia de agendar tarefas com base em suas dependências resolvidas será muito familiar para você. Recap (32:08 - 33:01): Uma rápida recapitulação que consolida como cada padrão melhora o anterior.
5. Conectando ao Seu Objetivo
Para o seu projeto de agente de código, qual padrão faz mais sentido?
Sua tarefa de "implementar uma funcionalidade descrita no Jira" é complexa, mas em grande parte previsível. O fluxo de trabalho geral é conhecido:
- Analisar o ticket.
- Consultar fontes de conhecimento (Drive, repositórios).
- Formular um plano de ataque (quais arquivos modificar, etc.).
- Aprovação humana (um passo crucial de segurança!)
- Executar as modificações de código e banco de dados.
- Criar pull requests.
- Atualizar o status no Jira.
Este fluxo se encaixa perfeitamente no padrão Plan-and-Execute. Usar ReAct seria extremamente lento e caro, com o agente parando para "pensar" antes de cada leitura de arquivo ou chamada de API.
Você pode, inclusive, projetar um sistema híbrido: usar Plan-and-Execute para a orquestração de alto nível e, talvez, um sub-agente estilo ReAct para uma tarefa específica e mais exploratória dentro do plano, como "tentar refatorar esta função complexa até que os testes de unidade passem".
Conclusão
Nesta lição, você comparou os dois principais padrões de orquestração de agentes. Agora você entende as trocas fundamentais entre adaptabilidade e eficiência.
Principais Pontos:
- ReAct é um ciclo iterativo de Pensamento-Ação-Observação. É flexível e adaptável, mas lento e caro, ideal para tarefas imprevisíveis.
- Plan-and-Execute separa o raciocínio da ação. Um plano é criado no início e depois executado. É eficiente e barato, ideal para fluxos de trabalho previsíveis.
- A escolha do padrão é uma decisão de arquitetura crítica que depende da natureza da tarefa e das restrições de custo e velocidade.
- Para seu objetivo de criar um agente de código, Plan-and-Execute é o padrão de orquestração mais adequado para o fluxo de trabalho principal.
Na Próxima Lição:
Discutimos que a principal fraqueza do Plan-and-Execute é sua fragilidade: o que acontece se a chamada à API do GitHub falhar no meio da execução? Como o agente se recupera? A próxima lição, "Descrever estratégias para tratamento de erros e fallbacks dentro do loop operacional de um agente", abordará exatamente este problema, fornecendo as ferramentas para construir um agente não apenas inteligente, mas também robusto.