antonio leandro

ia generativa

ReAct: Synergizing Reasoning and Acting in Language Models

paper · núcleo · Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, et al. ·

a tese

pensamento é uma ação que não toca o ambiente: intercalar raciocínio e chamada de ferramenta no mesmo prompt ancora o modelo em fato externo e mata a alucinação — mas troca esse erro por outro

o que fica

  1. Um pensamento, no ReAct, é só uma ação que não produz observação nenhuma: ela muda o contexto do modelo e mais nada. Não há componente novo, nem treino, nem controlador externo.
  2. No HotpotQA, ReAct sozinho perde para chain-of-thought puro (27,4 contra 29,4 de exact match) e até para o prompt padrão (28,7) — o ganho real só aparece quando os dois se alternam, chegando a 35,1.
  3. A alucinação some quando o modelo pode buscar: ela responde por 56% das falhas do CoT no HotpotQA e por 0% das do ReAct.
  4. O erro só muda de lugar. Erro de raciocínio salta de 16% das falhas no CoT para 47% no ReAct, quase sempre porque o modelo entra em loop repetindo o mesmo pensamento e a mesma ação.
  5. Em tarefas de decisão a diferença é de outra ordem: 71% de sucesso no ALFWorld com um ou dois exemplos no prompt, contra 37% de um agente de imitação treinado com 100.000 trajetórias por tipo de tarefa.
  6. Com finetuning em 3.000 trajetórias a ordem se inverte: PaLM-62B ajustado com ReAct supera todos os métodos de prompting rodando no 540B.

o problema

Em 2022 havia duas linhas de trabalho que não se falavam. De um lado, chain-of-thought: você pede ao modelo que escreva os passos do raciocínio antes de responder, e a acurácia sobe. O problema é que esse raciocínio é uma caixa-preta estática — o modelo deriva tudo das próprias representações internas, sem nenhum contato com o mundo. Se ele inventa um fato no passo dois, os passos três, quatro e cinco herdam a invenção e a resposta final sai errada com uma justificativa impecável. Os autores mediram isso: alucinação é a modalidade principal de falha do CoT no HotpotQA, 56% dos casos.

Do outro lado, trabalhos que usavam modelos de linguagem para gerar ações em ambientes interativos — navegar na web, operar um robô, jogar um jogo textual. Esses estavam ancorados no mundo, mas não raciocinavam sobre ele: previam a próxima ação a partir de prior linguístico, sem decompor o objetivo, sem manter memória do que já foi feito. O agente que só age perde o fio. No exemplo do próprio paper, o modelo pega a faca, tenta lavá-la sem ter ido até a pia, e repete a mesma sequência de comandos até o episódio acabar.

a ideia

O movimento é pequeno o suficiente para caber numa linha: aumente o espaço de ações do agente com a linguagem inteira. Além das ações que o ambiente entende, o modelo pode emitir uma string em texto livre — um pensamento. Essa string não afeta o ambiente e não gera observação alguma. Ela só entra no contexto e fica lá, disponível para o próximo passo.

Isso dá ao modelo um lugar para escrever o que ele não consegue guardar de outro jeito: decompor o objetivo, anotar que a busca voltou vazia, lembrar que já checou a geladeira, injetar conhecimento de senso comum (“abajur costuma ficar em cima de escrivaninha”). Raciocínio guia a ação; a observação que a ação traz corrige o raciocínio. O nome vem daí.

como funciona

O modelo é congelado — PaLM-540B, sem nenhum treino — e recebe few-shot com trajetórias escritas à mão. Seis exemplos para HotpotQA, três para o Fever. Cada exemplo é uma sequência de pensamento, ação e observação, e as ações são três: search[entidade], que devolve as cinco primeiras frases da página da Wikipedia ou sugere entidades parecidas; lookup[string], que é o Ctrl+F da página; e finish[resposta].

Thought 1: preciso buscar Colorado orogeny e achar em que área
           o setor leste se estende.
Action 1:  Search[Colorado orogeny]
Obs 1:     The Colorado orogeny was an episode of mountain building...
Thought 2: não menciona o setor leste. preciso dar lookup.
Action 2:  Lookup[eastern sector]
Obs 2:     The eastern sector extends into the High Plains...

Em tarefas de conhecimento, pensamento e ação se alternam a cada passo. Em tarefas de decisão longa, onde uma solução leva mais de cinquenta passos, o pensamento é esparso: o modelo decide sozinho quando vale a pena parar e pensar. E como nenhum dos dois modos ganha sempre, os autores costuram os dois com uma heurística explícita — se o ReAct não fecha resposta em sete passos (cinco no Fever), cai para CoT com self-consistency; se a maioria entre as amostras de CoT-SC não passa de metade, cai para ReAct.

o que isso custou

Flexibilidade. A estrutura rígida de pensamento-ação-observação limita a forma do raciocínio, e o preço aparece na tabela: erro de raciocínio pula de 16% das falhas no CoT para 47% no ReAct. O padrão mais comum é o modelo repetir o pensamento anterior e travar num loop — os autores suspeitam do decoding guloso e deixam beam search como trabalho futuro. Outros 23% das falhas vêm de busca que não retorna nada útil, e de lá o modelo raramente se recupera.

Custou também a promessa de superioridade geral. No HotpotQA, ReAct puro fica em 27,4 de exact match, abaixo do CoT (29,4) e abaixo do prompt padrão sem nada (28,7). O melhor número do paper, 35,1, ainda está longe do estado da arte supervisionado da época, 67,5. No WebShop, ReAct chega a 40,0% de sucesso contra 59,6% de um humano especialista. E prompting só funciona em escala: com PaLM-8B e 62B, ReAct é o pior dos quatro métodos, porque aprender a raciocinar e a agir ao mesmo tempo por exemplo no contexto é caro demais. Tarefas com espaço de ação grande exigem mais demonstrações do que cabe na janela.

onde isso aparece hoje

O formato thought/action/observation virou o loop padrão de agente com ferramenta. Todo framework de agente que expõe um modo “react” está copiando este arranjo, e a ideia de tratar tool call como token que o modelo emite no meio do próprio raciocínio é descendente direta daqui.

Duas consequências menos citadas. A primeira: o traço fica legível, então dá para editar. Os autores mostram um caso em que um humano apaga uma frase alucinada e adiciona uma dica, e o agente que falhava passa a resolver a tarefa — supervisão por edição de pensamento, não por retreino. A segunda: o finetuning inverte tudo. Com 3.000 trajetórias, PaLM-8B ajustado supera todo prompting no 62B, e o 62B ajustado supera todo prompting no 540B, porque ensinar o modelo a buscar generaliza melhor do que ensiná-lo a memorizar fato.

lido na íntegra por pipeline de llm, revisado por antonio leandro antes de publicar ·