Módulo 2 · Parte A de 3

O Worflow do Agente

Um único ciclo ReAct lida com a maioria das tarefas pontuais, mas problemas mais difíceis às vezes precisam de uma estrutura que organize o trabalho antes que chegue o próximo resultado de ferramenta. Um agente de workflow é um sistema no qual o harness de execução controla um workflow: um grafo de chamadas de modelo, etapas de código determinístico, chamadas de ferramenta e ciclos especializados. Essa forma ajuda quando subtarefas que são executadas em paralelo podem compartilhar resultados, quando um plano pode ser escrito antes que as ferramentas sejam executadas, ou quando o roteamento deve seguir uma regra em vez da última observação.

O harness de execução pode definir um workflow em torno de uma chamada de modelo, uma etapa determinística, um ciclo especializado ou um grupo de ramificações paralelas. Em cada limite, ele decide o que cruza cada fronteira de contexto, o que pode ramificar e quais resultados alimentam a próxima etapa do pipeline. Esta seção usa fan-out e roteamento fixo para mostrar que esse controle não substitui o ciclo ReAct da página anterior.

Compare um mesmo incidente de suporte. Para “Recebi duas cobranças pela mesma assinatura”, um único loop ReAct lê o resultado de cada consulta antes de escolher a próxima ação. Um workflow estruturado pode encaminhar a verificação do faturamento e as consultas ao histórico da conta por ramificações independentes e depois combinar suas evidências. Use o loop quando a próxima etapa depender da observação mais recente. Use o workflow quando as ramificações e sua junção forem conhecidas antes da execução.

Dois padrões principais que diferem em quando o modelo decide

REATIVO · PASSO A PASSO

ReAct (raciocínio e ação)

Em cada etapa, o modelo lê a última observação antes de escolher uma ação e executar uma ferramenta, então avalia o que veio de volta e escolhe novamente. O agente reage ao que a chamada de ferramenta anterior retornou, então o caminho pelas ferramentas toma forma à medida que é executado. Isso torna o ReAct forte quando o caminho depende de resultados intermediários e fraco quando muitas etapas poderiam ter sido executadas ao mesmo tempo.

Artigo: Yao et al., 2022.

DELIBERATIVO · PLANEJE-ENTÃO-EXECUTE

ReWOO (Raciocínio sem Observação)

O modelo escreve o plano completo antecipadamente em uma única chamada de LLM antes que qualquer ferramenta seja executada. Um executor determinístico então executa cada ferramenta que o plano nomeou, frequentemente em paralelo, e uma segunda chamada de LLM lê o que foi retornado para sintetizar os resultados. Porque o plano nunca vê o resultado da ferramenta, o modelo "raciocina sem observação." Isso torna o ReWOO forte quando as etapas são independentes e fraco quando as etapas posteriores precisam reagir às etapas anteriores.

Artigo: Xu et al., 2023.

ReAct intercala uma etapa de raciocínio com cada chamada de ferramenta, reagindo a cada observação antes de decidir o próximo movimento.
ReWOO escreve o plano completo antes que qualquer ferramenta seja executada, executa as etapas sem reperguntar o modelo, então sintetiza uma vez.
Na prática, você pode ter ambos. Muitos sistemas reais emprestam de cada abordagem ao mesmo tempo. As ferramentas que um ciclo ReAct chama podem executar internamente um pipeline planejado, estilo ReWOO, e um planejador que planeja seu trabalho com antecedência ainda precisa de subagentes para executar cada etapa, que geralmente são ciclos ReAct por direito próprio. Todos são apenas componentes de software, livres para compor onde suas forças se encaixam.

Quando um único ciclo supera a divisão em agentes

Um agente de workflow compensa apenas quando a tarefa se divide em frentes independentes. Sem elas, a sobrecarga de coordenar vários agentes não oferece ganho, e um único ciclo permanece mais rápido e fácil de depurar.

O custo de coordenação em termos concretos. Cada limite de agente adiciona latência de chamada de modelo e lógica de roteamento. Isso também cria outra fonte de mensagens malformadas e substitui uma linha do tempo legível por uma trajetória que se espalha por trabalhadores.

Esse imposto é fixo, independentemente da tarefa, então a pergunta se torna se o trabalho retorna o suficiente para cobrir isso. Um trabalho linear que um único prompt já lida nunca recuperará as chamadas extras e a lógica de roteamento que elas exigem. A divisão começa a compensar apenas quando a tarefa em si carrega o tipo de estrutura que um único ciclo não tem escolha a não ser achatá-la em uma única linha do tempo. Qualquer uma das condições abaixo torna o equilíbrio vantajoso.

Aplicado · PipelineExecutar o pipeline completo de planejar, executar e sintetizar?

Executando um pipeline ReWOO contra o glossário da NVIDIA

A célula abaixo executa um pipeline ReWOO contra o glossário da NVIDIA, usando helpers.webSearch (a pesquisa de glossário classificada que você encontrou no Módulo 1c) para cada recuperação que o plano chama. O explorador de glossário mostra o índice completo que essa pesquisa procura e permite que você execute qualquer consulta que o planejador possa emitir:

Promise.all é o auxiliar do JavaScript para iniciar várias promessas e esperar até que todas elas sejam concluídas. Aqui, é apenas o mecanismo de concorrência: não chama o modelo e não decide quais pesquisas executar.

  1. Planejador. Uma chamada de LLM vinculada a um esquema emite uma lista JSON de 3-5 consultas de pesquisa.
  2. Executor. JavaScript simples. Cada consulta é executada concorrentemente por Promise.all, sem chamadas de LLM nessa etapa.
  3. Sintetizador. Uma segunda chamada de LLM lê cada resultado e escreve o resumo, citando cada pesquisa por índice.

Duas chamadas de LLM no total, mais N pesquisas de glossário paralelas. Edite o objetivo de pesquisa e observe a lista de consultas do planejador mudar.

O padrão ReWOO planeja cada chamada de ferramenta antecipadamente, executa-as em paralelo e, em seguida, sintetiza em uma única chamada final. Xu et al. (2023).

Encaminhar um ticket a um especialista com um enum fixo

O encaminhamento é outra forma de composição entre agentes: um agente de triagem classifica a entrada e a passa para um especialista. Como o classificador deve emitir uma das categorias de um enum fixo, a saída precisa de um contrato rigoroso. Um enum fixo é uma lista fechada de rótulos permitidos; se o modelo retornar qualquer outra coisa, o roteador deve rejeitar a rota ou tentar novamente com instruções mais estritas, em vez de adivinhar. Cada especialista posterior recebe um prompt de sistema restrito e não precisa ver o raciocínio do agente de triagem.

O enum de quatro valores seleciona exatamente um especialista para lidar com a solicitação.

Distribuir uma entrada compartilhada para vários especialistas de uma vez

O pipeline ReWOO foi paralelo por construção: cada consulta planejada foi executada concorrentemente no glossário. Outro padrão comum distribui uma entrada compartilhada entre vários especialistas, cada um com seu próprio prompt de sistema, e executa todos ao mesmo tempo. No rastreamento, o tempo total acompanha o especialista mais lento, enquanto os demais se sobrepõem dentro da mesma janela. O gráfico de Gantt mostra a duração de cada especialista. Todos compartilham um resultado de pesquisa na web, mantendo o custo limitado.

Profundo · FábricaReunir especialistas repetidos em uma única declaração?

Declarar especialistas a partir de uma fábrica em vez de escrevê-los à mão

Cada um dos quatro exercícios acima construiu um pequeno agente à mão com as mesmas peças de inicialização que o código de produção não deve repetir para cada novo especialista. Essas peças são um rótulo de papel, um prompt de sistema, uma lista de ferramentas e uma invocação. O padrão de fábrica parametriza essas quatro partes móveis; assim, você declara especialistas em vez de reescrevê-los:

  • Papel. Um rótulo curto, usado para logs e encaminhamento.
  • Prompt de sistema. O contrato de comportamento: o que ele faz, o que ele recusa e como ele formula suas respostas.
  • Ferramentas. As funções descritas pelo JSON-Schema que ele pode chamar, se houver.
  • Contrato de invocação. Uma forma consistente (specialist.run(input)) que retorna a resposta final.

CrewAI, LangChain e LangGraph expõem essa mesma fábrica com nomes que variam por framework, seja Agent, create_agent ou uma classe de dados de papel e objetivo. A célula abaixo constrói, com os mesmos quatro parâmetros, um tutor de aritmética e um tradutor. Ambos processam a mesma entrada, e suas respostas aparecem lado a lado.

Antes de continuar

  1. O planejador ReWOO acima emite uma lista JSON de consultas. Qual é o modo de falha se uma consulta posterior precisar de um fato do resultado de uma consulta anterior? Qual dos dois padrões do topo desta página você muda?
  2. O roteador de triagem tem um enum fixo de categorias. O que o roteador deve fazer se o modelo emitir uma categoria que não está no enum? O esquema JSON é suficiente por si só, ou você também precisa de validação no lado da aplicação?
  3. O exercício de fábrica parametriza quatro coisas (papel, prompt de sistema, ferramentas, invocar). O que você adicionaria como um quinto parâmetro para evitar que um especialista se desvie para o domínio de outro especialista quando a entrada é ambígua?
As duas próximas partes levam essa ideia de composição adiante. Parte B (Índices) aponta a mesma ideia para corpora em vez de para outros agentes, de modo que uma camada de conhecimento se torna um agente que envolve um corpo de dados atrás de uma interface de consulta. Parte C (Agentes Profundos) leva isso ainda mais longe, para um agente planejador que despacha sub-agentes em contextos frescos e persiste seu estado de trabalho em um sistema de arquivos virtual.

Referências

Lista abrangente em Ir Além · Referências.

Tente · o roteador de triagem, ao vivo

Faça uma pergunta de suporte. O artefato a classifica com uma única chamada de modelo, encaminha o ticket ao prompt de sistema do especialista correspondente e transmite a resposta no tom desse especialista. Ele executa o mesmo padrão classificar-e-encaminhar mostrado acima. Aqui, as categorias pertencem ao suporte ao cliente, não a uma central de serviços de TI: faturamento, técnico, conta e outros. Ao mudar de domínio, apenas a lista de categorias muda; o mecanismo de roteamento permanece idêntico.

← Módulo 1c: Ferramentas em Escala