Ho riflettuto su cosa viene dopo Tree of Thoughts — se puoi cercare tra i passaggi di ragionamento, perché non cercare anche tra le azioni? Questo è esattamente ciò che fa LATS (Language Agent Tree Search), ed è il motivo per cui lo sto leggendo ora. Il paper di Andy Zhou, Kai Yan, Michal Shlapentokh-Rothman, Haohan Wang e Yu-Xiong Wang (ICML 2024, arXiv:2310.04406) è la sintesi più chiara finora di ragionamento, azione e pianificazione in un unico framework per agenti, e i risultati sono davvero difficili da ignorare.
Il paper
Il problema centrale che LATS affronta è una lacuna strutturale nei lavori precedenti sugli agenti. ReAct alterna ragionamento e azione, ma non ha alcun meccanismo per invertire la rotta e provare un percorso diverso quando una traiettoria va male. Tree of Thoughts consente di ramificare sui passaggi di ragionamento, ma opera sulla conoscenza interna del LM — non può chiamare strumenti né ricevere feedback esterni durante la ricerca. Reflexion aggiunge l'autocorrezione verbale, ma il suo ciclo di retry lineare si impegna in una nuova traiettoria senza esplorare alternative. LATS fonde tutte e tre le idee con una solida base di Monte Carlo Tree Search (MCTS), consentendo agli agenti LLM di esplorare più rami, ricevere feedback reali dall'ambiente e tornare indietro quando un percorso fallisce.
La macchina tecnica è un loop MCTS in sei fasi: Selezione (scegliere il nodo successivo da esplorare tramite la formula UCT), Espansione (campionare n azioni candidate dal LM), Valutazione (valutare ogni nodo con una funzione di valore ibrida), Simulazione (eseguire fino a uno stato terminale), Retropropagazione (aggiornare i valori degli antenati) e Riflessione (in caso di fallimento, generare un riepilogo verbale di ciò che è andato storto e memorizzarlo come contesto). La funzione di valore merita attenzione: V(s) = λ·LM(s) + (1−λ)·SC(s), dove LM(s) è la stima del LM stesso della qualità della traiettoria dopo aver ricevuto feedback dall'ambiente, e SC(s) è un punteggio di auto-consistenza basato su quanto spesso quell'azione viene campionata tra i nodi fratelli. Non si tratta di un modello di ricompensa addestrato — la funzione di valore è interamente guidata da prompt.
Idee chiave
- Su HumanEval, GPT-4 + LATS raggiunge il 92,7% pass@1, rispetto al 91,0% di GPT-4 + Reflexion e al 56,9% di GPT-3.5 + ReAct da solo. GPT-3.5 + LATS salta all'83,8%.
- Su HotPotQA, LATS (CoT + ReAct) raggiunge 0,71 Exact Match rispetto a 0,32 per la baseline ReAct — più che raddoppiando l'accuratezza multi-hop.
- Su WebShop (navigazione web + acquisto), LATS ottiene 75,9 (38,0% di successo) rispetto a Reflexion con 64,2 (35,0%) — un divario significativo su un compito che richiede la gestione dello stato attraverso molte pagine.
- Su Game of 24 (un puzzle di puro ragionamento), LATS raggiunge 0,44 di successo rispetto a 0,20 di ToT, nonostante utilizzi lo stesso backbone GPT-4.
- Sorprendentemente, LATS espande meno nodi per trovare una soluzione rispetto a ToT (in media 66,65 vs. 84,05 nodi su HotPotQA a k=50) e usa meno token (173.290 vs. 210.215), anche se in teoria sembra più costoso.
Cosa regge — e cosa no
I numeri dei benchmark sono reali e il framework è concettualmente pulito. La formulazione UCT fornisce un tradeoff esplorazione-sfruttamento principe che la BFS/DFS ad hoc di ToT non ha. Integrare il feedback esterno dell'ambiente nella funzione di valore — invece della pura introspezione del LM — è la mossa giusta, e i risultati lo dimostrano.
Ma il paper porta con sé un'ipotesi critica che gli autori riconoscono senza stress-testare completamente: LATS richiede la capacità di ripristinare l'ambiente a uno stato precedente. Senza checkpoint, non puoi ramificare l'albero — una volta che un'azione è stata compiuta, sei vincolato. Gli autori notano che per i compiti LM questo è spesso gestibile "copiando e incollando input testuali storici", ma per ambienti d'azione reali (database, filesystem, API con effetti collaterali) questo è un requisito difficile che molti sistemi di produzione non possono soddisfare. I risultati WebShop, sebbene migliori delle baseline, mostrano che in ambienti complessi le auto-riflessioni tendono a diventare generiche piuttosto che specifiche — gli agenti possono bloccarsi e ripetere errori superficialmente diversi ma strutturalmente identici. Il paper lo nota ma non offre rimedio.
Inoltre, non c'è un'ablazione che isoli il contributo della struttura MCTS rispetto al design della funzione di valore. È plausibile che un approccio di ramificazione più semplice con la stessa funzione di valore ibrida chiuderebbe gran parte del divario, e gli autori non lo testano direttamente.
Perché questo è importante per la finanza AI
I registri Beancount sono un ambiente quasi ideale per la ricerca ad albero stile LATS per un motivo principale: ogni registro è supportato da un repository git. Il requisito di reversibilità dello stato — il vincolo difficile che rende LATS impraticabile in molti contesti reali — è soddisfatto in modo banale da git checkout o git stash. Un agente di write-back potrebbe proporre voci di giornale candidate su più rami, valutarle rispetto ai vincoli di bilancio (la funzione di valore) e committare solo il percorso con il punteggio più alto. I rami falliti ricevono una riflessione verbale: "La voce pubblicata ha violato Attività = Passività + Patrimonio netto perché il tipo di conto è stato classificato erroneamente."
Anche il design della funzione di valore ibrida è direttamente applicabile. Per un agente di registro, LM(s) valuterebbe una voce proposta sull'adattamento semantico (sembra la categoria giusta?), mentre SC(s) traccerebbe la coerenza con cui l'agente classifica transazioni passate simili — un controllo di auto-consistenza naturale radicato nella storia del registro stesso.
La reversibilità dello stato è l'unico punto in cui farei una contro-osservazione sull'analogia finanziaria. I registri reali hanno spesso effetti a valle: una voce pubblicata attiva una fattura che attiva un flusso di lavoro di pagamento. In questi casi, l'ipotesi di LATS si rompe. Specificamente per Beancount, dove il registro è un file di testo semplice sotto controllo git e le modifiche avvengono localmente prima che qualsiasi trigger a valle scatti, l'ipotesi regge — ma è un vincolo di design da tenere esplicito.
Cosa leggere dopo
- Pianificazione basata su MCTS senza modelli ambientali: "Reasoning with Language Model is Planning with World Model" (Hao et al., 2023, arXiv:2305.14992) — RAP, su cui LATS si basa e migliora.
- Quanto bene generalizza la funzione di valore del LM? "Let's Verify Step by Step" (Lightman et al., 2023, arXiv:2305.20050) — modelli di ricompensa di processo come alternativa alle funzioni di valore basate su prompt.
- Pianificazione multi-step sicura sotto irreversibilità: "Decision-Making with Language Models via Successive Prompting" (Creswell et al., 2023) — un approccio di pianificazione più semplice che evita il requisito di reversibilità dello stato.





