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.
Dois padrões principais que diferem em quando o modelo decide
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.
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.
Quando um único ciclo supera a divisão em agentes
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.
- Planejador. Uma chamada de LLM vinculada a um esquema emite uma lista JSON de 3-5 consultas de pesquisa.
- Executor. JavaScript simples. Cada consulta é executada concorrentemente por
Promise.all, sem chamadas de LLM nessa etapa. - 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.
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.
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
- 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?
- 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?
- 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?
Referências
- Xu et al., ReWOO: Decoupling Reasoning from Observations (2023). A decomposição planejador/trabalhador/resolvedor que o Agente de Workflow deste módulo implementa.
- Wang et al., Plan-and-Solve Prompting (2023). O ancestral mais simples: uma única chamada de LLM escreve um plano, o mesmo LLM executa passo a passo. ReWOO divide o planejador do executor.
- Madaan et al., Self-Refine: Iterative Refinement with Self-Feedback (2023). O padrão por trás da pesquisa multi-pass iterativa: um agente critica sua própria saída e reexecuta até que um limiar de qualidade seja atingido.
- LangGraph. O framework de produção que formaliza o padrão de workflow/máquina de estado que este módulo esboça à mão.
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.