LATS: Language Agent Tree Search — Raciocínio, Ação e Planejamento em um Único Framework
Tenho pensado no que vem depois do Tree of Thoughts — se é possível buscar em etapas de raciocínio, por que não buscar também em ações? É exatamente isso que o LATS (Language Agent Tree Search) faz, e é por isso que estou lendo sobre ele agora. O artigo de Andy Zhou, Kai Yan, Michal Shlapentokh-Rothman, Haohan Wang e Yu-Xiong Wang (ICML 2024, arXiv:2310.04406) é a síntese mais clara até agora de raciocínio, ação e planejamento em um único framework de agente, e os resultados são genuinamente difíceis de ignorar.
O artigo
O problema central que o LATS aborda é uma lacuna estrutural em trabalhos anteriores de agentes. O ReAct intercala raciocínio e ação, mas não possui um mecanismo para voltar atrás e tentar um caminho diferente quando uma trajetória dá errado. O Tree of Thoughts permite a ramificação em etapas de raciocínio, mas opera sobre o conhecimento interno do Modelo de Linguagem (ML) — ele não pode chamar ferramentas ou receber feedback externo dentro da busca. O Reflexion adiciona autocorreção verbal, mas seu loop de repetição linear significa que ele se compromete com uma nova trajetória sem explorar alternativas. O LATS funde essas três ideias com uma estrutura de Monte Carlo Tree Search (MCTS) adequada, permitindo que agentes de LLM explorem múltiplos ramos, recebam feedback real do ambiente e retrocedam quando um caminho falha.
A mecânica técnica é um loop MCTS de seis etapas: Seleção (escolher o próximo nó para explorar via fórmula UCT), Expansão (amostrar n ações candidatas do ML), Avaliação (pontuar cada nó com uma função de valor híbrida), Simulação (executar até um estado terminal), Backpropagation (atualizar os valores dos ancestrais) e Reflexão (em caso de falha, gerar um resumo verbal do que deu errado e armazená-lo como contexto). A função de valor merece atenção: V(s) = λ·LM(s) + (1−λ)·SC(s), onde LM(s) é a própria estimativa do ML sobre a qualidade da trajetória após receber o feedback ambiental, e SC(s) é uma pontuação de autoconsistência baseada na frequência com que essa ação é amostrada entre os nós irmãos. Este não é um modelo de recompensa treinado — a função de valor é inteiramente orientada por prompts.
Ideias-chave
- No HumanEval, GPT-4 + LATS alcança 92,7% de pass@1, contra 91,0% para GPT-4 + Reflexion e 56,9% para GPT-3.5 + ReAct sozinho. O GPT-3.5 + LATS salta para 83,8%.
- No HotPotQA, o LATS (CoT + ReAct) atinge 0,71 de correspondência exata contra 0,32 para a linha de base do ReAct — mais que dobrando a precisão em raciocínios de múltiplas etapas (multi-hop).
- No WebShop (navegação na web + compras), o LATS marca 75,9 (taxa de sucesso de 38,0%) contra o Reflexion com 64,2 (35,0%) — uma lacuna significativa em uma tarefa que exige gerenciar o estado em muitas páginas.
- No Game of 24 (um quebra-cabeça de raciocínio puro), o LATS atinge uma taxa de sucesso de 0,44 contra 0,20 do ToT, apesar de usar a mesma base de GPT-4.
- Surpreendentemente, o LATS expande menos nós para encontrar uma solução do que o ToT (média de 66,65 vs 84,05 nós no HotPotQA com k=50) e usa menos tokens (173.290 vs 210.215), embora pareça mais caro em teoria.
O que se sustenta — e o que não
Os números de benchmark são reais e o framework é conceitualmente limpo. A formulação UCT oferece um tradeoff de exploração-explotação fundamentado que falta ao BFS/DFS ad-hoc no ToT. A integração do feedback ambiental externo na função de valor — em vez de pura introspecção do ML — é a decisão correta, e os resultados comprovam isso.
Dito isto, há uma suposição crítica enterrada no artigo que os autores reconhecem, mas não testam totalmente sob estresse: o LATS requer a capacidade de reverter o ambiente a um estado anterior. Sem checkpointing, você não pode ramificar a árvore — uma vez que uma ação é tomada, você está comprometido. Os autores observam que, para tarefas de ML, isso costuma ser gerenciável "copiando e colando a entrada de texto histórica", mas para ambientes de ação reais (bancos de dados, sistemas de arquivos, APIs com efeitos colaterais), este é um requisito rígido que muitos sistemas de produção não podem satisfazer. Os resultados do WebShop, embora melhores que as linhas de base, mostram que em ambientes complexos as autorreflexões tendem a se tornar genéricas em vez de direcionadas — os agentes podem ficar presos repetindo erros superficialmente diferentes, mas estruturalmente idênticos. O artigo observa isso, mas não apresenta uma solução.
Também não há uma ablação isolando a contribuição da estrutura MCTS versus o design da função de valor. É plausível que uma abordagem de ramificação mais simples com a mesma função de valor híbrida fecharia grande parte da lacuna, e os autores não testam isso diretamente.
Por que isso importa para a IA financeira
Os livros contábeis do Beancount são um ambiente quase ideal para a busca em árvore no estilo LATS por um motivo fundamental: cada ledger é apoiado por um repositório git. A reversão de estado — o requisito rígido que torna o LATS impraticável em muitas configurações do mundo real — é trivialmente satisfeito por git checkout ou git stash. Um agente de gravação (write-back) poderia propor entradas de diário candidatas em múltiplos ramos, avaliá-las contra as restrições do balanço patrimonial (a função de valor) e confirmar apenas o caminho com maior pontuação. Ramos que falharam recebem uma reflexão verbal: "o lançamento postado violou a invariante ativos = passivos + patrimônio líquido porque o tipo de conta foi classificado incorretamente."
O design da função de valor híbrida também é diretamente aplicável. Para um agente de contabilidade, o LM(s) pontuaria uma entrada proposta com base no ajuste semântico (isso parece ser a categoria certa?), enquanto o SC(s) rastrearia a consistência com que o agente classifica transações passadas semelhantes — uma verificação de autoconsistência natural enraizada no próprio histórico do livro contábil.
A suposição de reversão de estado é o único ponto onde eu questionaria a analogia financeira. Livros contábeis reais costumam ter efeitos a jusante: uma entrada registrada dispara uma fatura, que dispara um fluxo de trabalho de pagamento. Nesses casos, a suposição do LATS quebra. Para o Beancount especificamente, onde o livro contábil é um arquivo de texto simples sob controle do git e as alterações são locais antes de qualquer gatilho posterior, a suposição se mantém — mas esta é uma restrição de design que vale a pena manter explícita.
O que ler a seguir
- Planejamento baseado em MCTS sem modelos de ambiente: "Reasoning with Language Model is Planning with World Model" (Hao et al., 2023, arXiv:2305.14992) — RAP, sobre o qual o LATS é construído diretamente e o qual supera.
- Quão bem a função de valor do ML generaliza? "Let's Verify Step by Step" (Lightman et al., 2023, arXiv:2305.20050) — modelos de recompensa de processo como alternativa às funções de valor baseadas em prompts.
- Planejamento seguro de múltiplas etapas sob irreversibilidade: "Decision-Making with Language Models via Successive Prompting" (Creswell et al., 2023) — uma abordagem de planejamento mais simples que evita o requisito de reversão de estado.
