ReAct Prompting: conheça a tecnologia que alimenta os melhores agentes de IA

Entenda o recurso que, apresentado em 2022, revolucionou de ali em diante a forma dos LLMs interagirem com informações externas

A capacidade dos modelos de linguagem de grande escala (LLMs) de raciocinar e agir de forma integrada representa um dos avanços mais significativos em inteligência artificial. O framework ReAct, apresentado por Yao et al. em 2022, revolucionou a forma como os LLMs interagem com informações externas e resolvem problemas complexos.

O que é ReAct Prompting?

ReAct é um framework inovador que permite aos LLMs gerar traços de raciocínio (reasoning traces) e ações específicas de forma intercalada. Em vez de apenas processar informações de forma isolada, o modelo consegue:

  • Induzir e rastrear planos de ação

  • Atualizar estratégias conforme recebe novas informações

  • Lidar com exceções de forma dinâmica

  • Interagir com fontes externas como bases de conhecimento ou ambientes

O diferencial do ReAct está na combinação sinérgica entre "agir" e "raciocinar" - uma capacidade que espelha a forma como humanos aprendem novas tarefas e tomam decisões.

Como funciona o ReAct?

O framework ReAct foi inspirado nas sinergias naturais entre ação e raciocínio que permitem aos humanos aprender e tomar decisões. Enquanto o Chain-of-Thought (CoT) prompting demonstrou a capacidade dos LLMs de realizar raciocínio para gerar respostas, sua falta de acesso ao mundo externo pode levar a problemas como alucinação de fatos e propagação de erros.

O ReAct supera essas limitações ao:

  1. Gerar traços de raciocínio verbal para a tarefa

  2. Executar ações baseadas nesse raciocínio

  3. Receber observações do ambiente externo

  4. Ajustar o raciocínio com base nas novas informações

Exemplo prático

Vamos considerar uma pergunta do dataset HotpotQA:

"Além do Apple Remote, quais outros dispositivos podem controlar o programa para o qual o Apple Remote foi originalmente projetado para interagir?"

O modelo gera uma trajetória de resolução que inclui:

Thought (Pensamento): Preciso buscar informações sobre o Apple Remote e identificar o programa original.

Act (Ação): Buscar informações sobre "Apple Remote programa original"

Obs (Observação): O Apple Remote foi projetado para interagir com o Apple TV e o Front Row.

Thought: Agora preciso descobrir outros dispositivos que controlam esses programas.

Act: Buscar "dispositivos que controlam Apple TV"

E assim por diante, até chegar à resposta final.

Estrutura de um prompt ReAct

Para implementar o ReAct prompting, o primeiro passo é selecionar casos de um conjunto de treinamento e compor trajetórias no formato ReAct. Essas trajetórias servem como exemplos few-shot nos prompts.

Um exemplo simplificado de prompt ReAct:

Question: Qual é a faixa de elevação da área para a qual o setor oriental da orogenia do Colorado se estende?

Thought 1: Preciso buscar informações sobre a orogenia do Colorado e identificar o setor oriental.

Action 1: Search[Colorado orogeny]

Observation 1: A orogenia do Colorado foi um episódio de formação de montanhas no Colorado e áreas adjacentes.

Thought 2: Não menciona o setor oriental. Preciso buscar especificamente por setor oriental.

Action 2: Lookup[eastern sector]

Observation 2: O setor oriental se estende até as High Plains e é chamado de orogenia das Central Plains.

Thought 3: O setor oriental se estende até as High Plains. Preciso buscar High Plains e encontrar sua faixa de elevação.

Action 3: Search[High Plains]

Observation 3: High Plains refere-se a uma das duas regiões terrestres distintas.

Thought 4: Preciso buscar especificamente por High Plains (United States).

Action 4: Search[High Plains (United States)]

Observation 4: As High Plains são uma sub-região das Great Plains. De leste a oeste, as High Plains sobem em elevação de cerca de 1.800 a 7.000 pés (550 a 2.130 m).

Thought 5: As High Plains sobem de 1.800 a 7.000 pés, então a resposta é 1.800 a 7.000 pés.

Action 5: Finish[1.800 a 7.000 pés]

Resultados em tarefas intensivas em conhecimento

Os pesquisadores avaliaram o ReAct em tarefas de raciocínio intensivo em conhecimento, como question answering (HotPotQA) e verificação de fatos (Fever), utilizando o PaLM-540B como modelo base.

Principais descobertas:

Método

HotPotQA

Fever

Act (apenas ação)

Performance baixa

Performance baixa

CoT (Chain-of-Thought)

Boa performance

Sofre com alucinação

ReAct

Melhor que Act

Supera CoT

ReAct + CoT

Melhor performance geral

Melhor performance geral

Análise detalhada dos resultados:

  • CoT sofre com alucinação de fatos

  • ReAct possui restrições estruturais que reduzem flexibilidade no raciocínio

  • ReAct depende muito da qualidade das informações recuperadas

  • Combinação ReAct + CoT demonstra os melhores resultados

Desempenho em tarefas de tomada de decisão

O ReAct também foi avaliado em benchmarks de tomada de decisão:

  • ALFWorld: jogo baseado em texto

  • WebShop: ambiente de compras online

Ambos os ambientes exigem raciocínio complexo para agir e explorar de forma eficaz.

Resultados principais:

O ReAct superou significativamente o método Act em ambos os benchmarks. O método Act, sem pensamentos estruturados, falha em decompor corretamente os objetivos em subobjetivos. O raciocínio mostrou-se vantajoso para esses tipos de tarefas, embora os métodos baseados em prompting ainda estejam distantes da performance de especialistas humanos.

Implementação prática com LangChain

Vamos ver como implementar o ReAct prompting usando LangChain e OpenAI:

# Importar bibliotecas necessárias
import openai
import os
from langchain.llms import OpenAI
from langchain.agents import load_tools
from langchain.agents import initialize_agent

# Configurar o LLM e as ferramentas
llm = OpenAI(model_name="text-davinci-003", temperature=0)
tools = load_tools(["google-serper", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)

# Executar uma consulta
agent.run("Quem é o namorado de Olivia Wilde? Qual é a idade dele elevada à potência de 0.23?")

Execução da cadeia:

> Entrando em nova cadeia AgentExecutor...
Preciso descobrir quem é o namorado de Olivia Wilde e calcular sua idade elevada à potência de 0.23.

Action: Search
Action Input: "Olivia Wilde boyfriend"
Observation: Olivia Wilde começou a namorar Harry Styles...

Thought: Preciso descobrir a idade de Harry Styles.
Action: Search
Action Input: "Harry Styles age"
Observation: 29 anos

Thought: Preciso calcular 29 elevado à potência de 0.23.
Action: Calculator
Action Input: 29^0.23
Observation: Resposta: 2.169459462491557

Thought: Agora sei a resposta final.
Final Answer: Harry Styles, namorado de Olivia Wilde, tem 29 anos e sua idade elevada à potência de 0.23 é 2.169459462491557.

> Cadeia finalizada.

Vantagens e limitações do ReAct

Vantagens:

  • Transparência: o raciocínio é explícito e auditável

  • Flexibilidade: adapta-se a diferentes tipos de tarefas

  • Confiabilidade: acesso a informações externas reduz alucinações

  • Interpretabilidade: humanos podem entender o processo de decisão

Limitações:

  • Dependência da qualidade das ferramentas externas

  • Restrições estruturais podem limitar criatividade

  • Resultados não informativos podem descarrilar o raciocínio

  • Performance ainda abaixo de especialistas humanos em tarefas complexas

Configurações de prompt para diferentes tarefas

É importante notar que diferentes configurações de prompt são usadas para diferentes tipos de tarefas:

  • Tarefas de raciocínio primário: múltiplos passos de pensamento-ação-observação

  • Tarefas de tomada de decisão: pensamentos usados de forma esparsa, com foco em ações

O futuro dos agentes de IA com ReAct

O framework ReAct representa um passo significativo na direção de agentes de IA mais autônomos e confiáveis. A combinação de raciocínio interno e interação com ferramentas externas abre possibilidades para:

  • Assistentes virtuais mais inteligentes

  • Sistemas de automação complexos

  • Agentes de pesquisa autônomos

  • Ferramentas de análise e decisão empresarial

À medida que os LLMs continuam evoluindo, frameworks como o ReAct serão fundamentais para criar sistemas que não apenas processam informações, mas que verdadeiramente raciocinam e agem de forma inteligente.

Conclusão

O ReAct Prompting é mais do que uma técnica de prompting - é um paradigma que transforma como os LLMs interagem com o mundo. Ao combinar raciocínio verbal com ações práticas, o framework permite que os modelos de linguagem superem suas limitações tradicionais e se aproximem de uma verdadeira inteligência artificial capaz de resolver problemas complexos do mundo real.

Para desenvolvedores e pesquisadores interessados em construir agentes de IA mais eficazes, o ReAct oferece uma base sólida e comprovada. Com ferramentas como LangChain facilitando a implementação, nunca foi tão acessível criar sistemas que combinam o poder do raciocínio com a capacidade de ação.

Quer aprender mais sobre prompting e agentes de IA? Explore os cursos da DAIR.AI Academy e domine as técnicas mais avançadas de engenharia de prompts e construção de agentes inteligentes.