…
Módulo 2 · Parte A de 3

O agente de Workflow

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.
Uma ferramenta em um ciclo ReAct pode executar um pipeline planejado. Uma etapa planejada também pode chamar um ciclo ReAct quando precisa se adaptar a resultados intermediários. Etapas com procedimento fixo podem ser executadas como funções comuns, como faz o executor abaixo.

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

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.

Compare as chamadas e a coordenação adicionais com o trabalho que elas permitem realizar. Prompts ou ferramentas diferentes podem ajudar os especialistas a manter o foco; trabalhos independentes podem se sobrepor. Meça a latência e a qualidade das respostas antes de decidir dividir a tarefa. Isolar falhas também exige tratamento explícito: os exemplos abaixo usam Promise.all, que rejeita se qualquer ramo rejeitar.

Executar 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.

Reunir especialistas repetidos em uma única declaração?

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

Cada especialista acima define um rótulo de papel, um prompt de sistema, uma lista de ferramentas e uma invocação. A fábrica abaixo expõe esses elementos como parâmetros para que outro especialista possa reutilizar a mesma construção.

  • 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. Esquemas opcionais que o modelo pode solicitar. Este wrapper de uma única chamada retorna as solicitações para inspeção; não as executa.
  • Contrato de invocação. specialist.run(input) retorna uma resposta do modelo, incluindo o motivo de término e eventuais solicitações de ferramentas.

A célula abaixo cria dois especialistas com uma fábrica: um tutor de aritmética e um tradutor. Ambos recebem a mesma entrada e suas respostas são exibidas 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. Uma chamada ao modelo a classifica como cobrança, questão técnica, conta ou outro; em seguida, o especialista selecionado responde. O padrão de classificar e depois chamar o especialista é reutilizado com outro prompt de classificação, contrato de categorias, parser e prompts dos especialistas.

← Módulo 1c: Ferramentas em Escala