Stavo riflettendo su cosa servirebbe per creare un agente di contabilità Beancount che migliori nel tempo senza essere riaddestrato ogni volta che commette un errore. "Reflexion: Language Agents with Verbal Reinforcement Learning" (NeurIPS 2023) di Shinn et al. affronta direttamente questa domanda, e la risposta è sia promettente che più limitata di quanto suggeriscano i numeri principali.
Il documento
Reflexion (Shinn, Cassano, Berman, Gopinath, Narasimhan, Yao; NeurIPS 2023) propone che, invece di aggiustare i pesi del modello attraverso un costoso apprendimento per rinforzo, si possa migliorare un agente facendogli scrivere la propria analisi degli errori in linguaggio naturale. Dopo ogni tentativo, un modello di Auto-Riflessione legge la traiettoria e il segnale di ricompensa, produce un post-mortem verbale e lo aggiunge a un buffer di memoria episodica. Al tentativo successivo, l'Attore legge le riflessioni accumulate prima di agire. Non viene calcolato alcun gradiente. Nessun modello viene messo a punto. L'"apprendimento" risiede interamente nella finestra di contesto.
L'architettura a tre componenti — Attore, Valutatore, Auto-Riflessione — è sufficientemente modulare da adattarsi a diversi tipi di compiti. Il Valutatore può essere un risultato binario di test unitari, un giudice LLM o un'euristica specifica del compito. Questa flessibilità è ciò che rende il documento interessante al di là dei benchmark di programmazione.
Idee chiave
- Su HumanEval Python pass@1, Reflexion + GPT-4 raggiunge il 91%, rispetto all'80% della linea di base GPT-4, un miglioramento genuino e significativo. Su Leetcode Hard il balzo è dal 7,5% al 15%, che è un progresso, ma anche un promemoria di quanto quei problemi rimangano difficili.
- Su AlfWorld (pianificazione domestica testuale), Reflexion risolve 130/134 compiti dopo 12 tentativi contro 108/134 della linea di base ReAct — il risultato più convincente nel processo decisionale del documento.
- Su HotpotQA (domande e risposte multi-salto), CoT + Reflexion passa dal 61% al 75% di corrispondenza esatta su 100 domande campionate.
- Su MBPP (un secondo benchmark Python), Reflexion peggiora leggermente le prestazioni: 80,1% → 77,1%. Il documento minimizza questo dato.
- Su WebShop, Reflexion non aiuta. Gli autori attribuiscono questo alla necessità del compito di "una significativa diversità ed esplorazione" — l'agente scrive riflessioni inutili che non generalizzano tra le ricerche di prodotti.
- La memoria è limitata a 1-3 esperienze memorizzate. Questo è pragmatico data la lunghezza del contesto, ma significa che l'agente non può accumulare apprendimento durante una lunga implementazione.
Cosa regge — e cosa no
L'affermazione centrale è valida: la riflessione verbale migliora le prestazioni su compiti con feedback chiaro e verificabile. Se sai se il codice ha superato i suoi test unitari, il modulo di riflessione ha qualcosa di concreto su cui ragionare. I risultati su AlfWorld e HumanEval sono reali e significativi.
Ma il fallimento su WebShop è istruttivo e il documento lo minimizza in qualche modo. La riflessione funziona quando il valutatore può produrre un segnale chiaro e utilizzabile. Quando la modalità di errore è "l'agente ha esplorato la parte sbagliata di un grande spazio di ricerca", dirgli "prova termini di ricerca diversi la prossima volta" non converge. Questa è una limitazione strutturale: l'apprendimento per rinforzo verbale non è un sostituto delle strategie di esplorazione.
Gli esperimenti di programmazione hanno anche una circolarità che gli autori riconoscono nel loro post sul blog: l'agente genera i propri test unitari per valutare il proprio codice. Una suite di test imperfetta produce falsi positivi. Il numero del 91% su HumanEval regge perché HumanEval fornisce test di verità fondamentali, ma il ciclo di autovalutazione dell'agente è meno affidabile su problemi nuovi in cui non esiste un oracolo esterno.
La riproducibilità è una vera preoccupazione. Tutti i risultati principali utilizzano GPT-4, e gli esperimenti con starchat-beta non mostrano alcun miglioramento rispetto alla linea di base, il che significa che la tecnica è limitata dalle capacità del modello. I team che eseguono modelli più piccoli o open-weight non dovrebbero aspettarsi gli stessi guadagni.
Perché questo è importante per l'AI finanziaria
Il caso d'uso di Beancount ha esattamente la proprietà che fa funzionare bene Reflexion: un valutatore chiaro. Se un agente categorizza erroneamente una transazione, il controllo del saldo contabile o un passaggio di riconciliazione può produrre un segnale binario — i libri quadrano o non quadrano. Questa è una superficie di feedback molto migliore della ricompensa ambigua di WebShop per la ricerca di prodotti.
Concretamente, posso immaginare un agente di scrittura Beancount che, dopo un tentativo di registrazione fallito (conto non valido, valuta errata, asserzione fallita), genera una riflessione verbale: "Ho usato Spese:Pasti ma questo conto richiede una sottocategoria. La prossima volta controllerò la gerarchia dei conti prima di registrare." Questa riflessione viene memorizzata e recuperata alla prossima transazione simile. L'agente accumula efficacemente una politica specifica per sessione dai propri errori.
Il limite di memoria è la principale sfida architetturale. Un buffer di 1-3 esperienze va bene per una singola sessione, ma un agente contabile implementato deve imparare attraverso migliaia di transazioni e settimane di funzionamento. Estendere Reflexion a una memoria a lungo termine — forse riassumendo o indicizzando le riflessioni — è un problema aperto. Il documento non lo risolve.
Cosa leggere dopo
- Language Agent Tree Search (LATS) (Zhou et al., arXiv:2310.04406; ICML 2024) — estende Reflexion avvolgendo la Ricerca ad Albero Monte Carlo attorno al ciclo di riflessione-riprova, consentendo agli agenti di esplorare più rami di ragionamento invece di impegnarsi in una singola traiettoria. Raggiunge il 92,7% su HumanEval con GPT-4.
- Retroformer (Yao et al., arXiv:2308.02151; ICLR 2024) — invece di fare affidamento sullo stesso LLM per l'auto-riflessione, Retroformer addestra un modello retrospettivo leggero separato tramite policy gradient, rendendo il processo di riflessione apprendibile tra i compiti. Più principiato, ma richiede messa a punto.
- Self-Reflection in LLM Agents: Effects on Problem-Solving Performance (arXiv:2405.06682, 2024) — uno studio empirico che indaga specificamente quando e perché la riflessione aiuta, con ablazioni tra tipi di compiti. Utile per calibrare quando applicare Reflexion rispetto ad altre strategie di correzione.