- Data Hackers Newsletter
- Posts
- ReAct Prompting: conheça a tecnologia que alimenta os melhores agentes de IA
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:
Gerar traços de raciocínio verbal para a tarefa
Executar ações baseadas nesse raciocínio
Receber observações do ambiente externo
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.