Modelli di linguaggio assistiti da programmi

Modelli di linguaggio assistiti

LLMs possono scrivere codice, ma cosa succede se possono eseguire programmi?

(Foto di Florian Olivo su Unsplash)

Nonostante i Large Language Models (LLMs) siano utilizzati per una varietà di applicazioni, hanno solitamente avuto difficoltà a risolvere compiti basati sul ragionamento. Questo problema è stato significativamente ridotto con l’avvento delle tecniche di prompting come Chain of Thought e Least-to-Most prompting. A livello generale, queste tecniche incoraggiano il comportamento di ragionamento nei LLMs fornendo esempi di ragionamenti risolutivi all’interno del prompt del modello. Successivamente, il modello può imparare a produrre tali ragionamenti e a fornire una soluzione passo-passo al problema sottostante. È importante sottolineare che si tratta di un approccio basato solo sul prompting che non richiede alcun addestramento specifico, dimostrando così che i LLMs sono capaci di ragionare data un prompt con un contesto sufficiente.

Nonostante l’efficacia delle tecniche come il prompting a catena di pensiero, ci si aspetta che il LLM produca sia una catena di pensiero per la risoluzione del problema che una risposta finale. È interessante notare che tale approccio porta a casi di insuccesso peculiari in cui il LLM può produrre un ragionamento accurato per risolvere un problema, ma genera comunque una risposta errata. Di solito, tali errori sono dovuti a errori semplici (ad esempio, una scarsa aritmetica). Per risolvere questo problema, recenti ricerche hanno esplorato un approccio programmabile che incoraggia il LLM a generare catene di pensiero con componenti linguaggio naturale e codice. Successivamente, il LLM può eseguire questo codice tramite un interprete esterno per ottenere gli output necessari.

Per capire perché un tale approccio sarebbe utile, dovremmo notare che molti problemi con cui i LLMs hanno difficoltà (ad esempio, errori di aritmetica, incapacità di valutare espressioni complesse, ecc.) possono essere facilmente espressi e risolti all’interno di un programma. Di conseguenza, utilizzare prompt di tipo catena di pensiero su LLMs con abilità di programmazione (ad esempio, Codex) ci permette di unire i vantaggi dei LLMs con le capacità computazionali di un programma Python arbitrario! Più specificamente, il LLM può essere incoraggiato a generare un ragionamento risolutivo che contenga sia componenti di linguaggio naturale che di codice, producendo uno script che può essere eseguito da un interprete esterno per calcolare l’output finale di un problema. Un tale approccio, che esploreremo in questa panoramica, è estremamente vantaggioso per l’accuratezza e l’affidabilità dei LLMs nella risoluzione di compiti basati sul ragionamento.