ReAct Prompting (PT)

From Systems analysis Wiki
Jump to navigation Jump to search

ReAct (abreviação de Reason + Act, que significa "Raciocine e Aja") é um paradigma de engenharia de prompts (prompting) para modelos de linguagem grandes (LLMs) que lhes permite resolver tarefas complexas alternando entre raciocínios verbais (pensamentos) e ações que interagem com um ambiente externo[1]. O método foi proposto em 2022 por pesquisadores do Google Research e da Universidade de Princeton e se tornou uma abordagem fundamental no desenvolvimento de agentes inteligentes.

A principal inovação do ReAct consiste em combinar o raciocínio lógico, característico de técnicas como a Cadeia de Pensamento (Chain-of-Thought, CoT), com a execução de ações externas, como a busca de informações ou a interação com interfaces de programação de aplicações (APIs). Isso permite que o modelo ajuste dinamicamente seu plano, verifique fatos e supere as limitações de seu próprio conhecimento, que muitas vezes pode estar desatualizado ou incompleto[2].

Contexto e Histórico

Antes do surgimento do ReAct, existiam duas abordagens principais, porém distintas, para o uso de LLMs na resolução de tarefas complexas:

  • Cadeia de Pensamento (Chain-of-Thought, CoT): O modelo gera um raciocínio lógico passo a passo para resolver uma tarefa, mas faz isso em um "vácuo de informação", baseando-se exclusivamente em seu conhecimento interno. Isso frequentemente leva a erros factuais e "alucinações"[1].
  • Planejamento de Ações (Act-Only): O modelo gera uma sequência de ações para interagir com um ambiente externo (por exemplo, em jogos baseados em texto), mas sem um planejamento explícito de alto nível. Esses sistemas têm dificuldade em lidar com erros e não conseguem adaptar sua estratégia ao encontrar circunstâncias imprevistas.

O ReAct foi criado para combinar sinergicamente os pontos fortes de ambas as abordagens. Ele permite que o modelo não apenas raciocine, mas também ancore seus raciocínios em fatos do mundo externo, além de adaptar suas ações com base no feedback recebido.

Mecanismo de Funcionamento: O Ciclo "Pensamento – Ação – Observação"

O ReAct opera dentro de um ciclo iterativo que inclui três componentes principais. O modelo gera sequencialmente uma trajetória composta pelas etapas de Thought (Pensamento), Action (Ação) e Observation (Observação).

Exemplo da estrutura do prompt:

Pergunta: Qual capital é a cidade onde nasceu o inventor famoso pela corrente alternada?

Thought 1: Preciso descobrir quem inventou a corrente alternada. Depois, encontrar seu local de nascimento e verificar se essa cidade é uma capital.

Action 1: Search[inventor da corrente alternada]

Observation 1: A corrente alternada (CA) foi desenvolvida e promovida por Nikola Tesla.

Thought 2: Agora preciso descobrir onde Nikola Tesla nasceu.

Action 2: Search[local de nascimento de Nikola Tesla]

Observation 2: Nikola Tesla nasceu na aldeia de Smiljan, Império Austríaco (atual Croácia).

Thought 3: Smiljan não é uma capital. Portanto, a pergunta não tem uma resposta direta conforme formulada. No entanto, Tesla viveu e trabalhou por muito tempo nos EUA. Talvez a pergunta se refira à capital do país onde ele fez suas principais descobertas. Essa é uma questão mais complexa. Devo afirmar o fato com base no local de nascimento. A cidade onde ele nasceu não é uma capital.

Final Answer: O inventor associado à corrente alternada, Nikola Tesla, nasceu em Smiljan (Croácia), que não é uma capital.

Pensamento (Thought)

O modelo gera um raciocínio interno no qual analisa a tarefa, a decompõe em subtarefas, formula ou ajusta um plano de ação e avalia o estado atual. Esta etapa não afeta o ambiente externo, mas serve para o planejamento interno.

Ação (Action)

Com base em seu raciocínio, o modelo executa uma ação externa, recorrendo a uma das ferramentas disponíveis. Exemplos de ações:

  • Search [consulta] — para buscar informações em uma base de conhecimento (por exemplo, Wikipédia).
  • Click [elemento] — para navegar em uma página da web.
  • API_call [parâmetros] — para chamar uma API externa.

Observação (Observation)

O sistema ou a ferramenta externa executa a ação e retorna um resultado (observação). Isso pode ser um trecho de texto, uma resposta da API ou uma mensagem de erro. O modelo utiliza essa observação para formular o próximo pensamento, fechando o ciclo de feedback[2].

Resultados Experimentais e Eficácia

Os autores do ReAct testaram o método em uma ampla gama de tarefas, demonstrando sua superioridade sobre as abordagens CoT e Act-Only.

Resultados do ReAct em comparação com métodos de base nos principais benchmarks[1]
Benchmark Tarefa ReAct (sucesso/precisão) Chain-of-Thought (sucesso/precisão) Act-Only (sucesso/precisão)
FEVER Verificação de fatos 87.6% 82.8% 70.1%
HotpotQA Perguntas com múltiplos saltos (multi-hop) 31.8% 36.3% 17.0%
ALFWorld Jogo de texto (planejamento) 71% 10% 13%
WebShop Navegação na web 40% - 30.1%
  • Em tarefas que exigem verificação de fatos (FEVER), o ReAct supera significativamente o CoT, pois pode verificar informações.
  • Em tarefas de planejamento interativo (ALFWorld, WebShop), o ReAct demonstra uma enorme vantagem, pois consegue se adaptar a um ambiente em mudança.
  • Em tarefas de raciocínio puro (HotpotQA), o CoT pode apresentar resultados comparáveis ou até melhores. No entanto, uma abordagem híbrida ReAct+CoT demonstrou o melhor desempenho, atingindo 35% no HotpotQA[1].

Críticas e Limitações

Apesar de sua eficácia, o ReAct possui várias limitações e vulnerabilidades.

  • Fragilidade (Brittleness): Estudos posteriores mostraram que o sucesso do ReAct pode estar relacionado não tanto a uma sinergia genuína entre raciocínio e ação, mas sim à semelhança sintática entre os exemplos no prompt e a tarefa atual. O modelo pode seguir o padrão `Thought-Action-Observation` sem compreender totalmente a semântica do raciocínio[3].
  • Custos computacionais: Cada ciclo do ReAct requer pelo menos uma chamada ao LLM e uma consulta a uma ferramenta externa, o que o torna lento e caro em comparação com o prompting padrão.
  • Dependência de ferramentas: A eficácia do agente depende diretamente da qualidade e da confiabilidade das ferramentas disponíveis. Uma resposta incorreta ou com ruído de uma API pode desviar o raciocínio do modelo para um caminho falso.

Significado e Desenvolvimento Futuro

O ReAct se tornou um marco importante no desenvolvimento da IA, sinalizando a transição de sistemas generativos para sistemas de agentes. Ele estabeleceu a base conceitual e prática para a maioria dos frameworks modernos de criação de agentes, como:

  • LangChain
  • LlamaIndex
  • AutoGen

As ideias do ReAct serviram como ponto de partida para arquiteturas de raciocínio mais complexas, como Reflexion (que adiciona um ciclo de autorreflexão após falhas) и Tree of Thoughts (ToT) (que explora múltiplos caminhos de raciocínio em paralelo).

Ligações externas

Literatura

  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
  • Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
  • Shinn, N. et al. (2023). Reflexion: Language Agents with Verbal Reinforcement Learning. arXiv:2303.11366.
  • Verma, V. et al. (2024). On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models. arXiv:2405.13966.
  • Yao, S. et al. (2022). WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents. arXiv:2207.01206.
  • Shridhar, M. et al. (2020). ALFWorld: Aligning Text and Embodied Environments for Interactive Learning. arXiv:2010.03768.
  • Qin, L. et al. (2023). AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Collaboration. arXiv:2308.08155.
  • Thorne, J. et al. (2018). FEVER: A Large-Scale Dataset for Fact Extraction and Verification. arXiv:1803.05355.
  • Yang, Z. et al. (2018). HotpotQA: A Dataset for Diverse, Explainable Multi-hop Question Answering. arXiv:1809.09600.

Notas

  1. 1.0 1.1 1.2 1.3 Yao, S., Zhao, J., Yu, D., et al. (2022). «ReAct: Synergizing Reasoning and Acting in Language Models». arXiv preprint arXiv:2210.03629. [1]
  2. 2.0 2.1 «ReAct: Synergizing Reasoning and Acting in Language Models». Google Research Blog. [2]
  3. Verma, V., et al. (2024). «On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models». arXiv preprint arXiv:2405.13966. [3]