Ricercatori a Stanford introducono Parsel un framework di Intelligenza Artificiale (IA) che consente l’implementazione automatica e la convalida di algoritmi complessi con grandi modelli di linguaggio (LLM) mediante codice.

Stanford researchers introduce Parsel, an AI framework that automatically implements and validates complex algorithms with large language models (LLMs) using code.

Anche se sono stati fatti progressi recenti nel ragionamento dei modelli di linguaggio di grandi dimensioni (LLM), i LLM hanno ancora difficoltà con compiti di ragionamento gerarchico a più passaggi come lo sviluppo di programmi sofisticati. I programmatori umani, a differenza di altri generatori di token, hanno (di solito) imparato a suddividere compiti difficili in componenti gestibili che funzionano da soli (modulari) e che lavorano insieme (compositivi). Come bonus, se i token generati dall’uomo causano problemi con una funzione, dovrebbe essere possibile riscrivere quella parte del software senza influire sul resto dell’applicazione. Al contrario, si presume ingenuamente che i LLM di codice produrranno sequenze di token prive di errori.

Ciò ha spinto uno studio recente dell’Università di Stanford a esaminare l’utilizzo di LLM nella decomposizione dei problemi e nella costruzione di soluzioni compositive. Propongono Parsel, un compilatore che accetta una specifica che include descrizioni di funzioni scritte in linguaggio naturale e vincoli che definiscono il comportamento desiderato delle funzioni implementate. Utilizzando Parsel, i programmatori possono scrivere programmi in linguaggio naturale in grado di affrontare problemi di codifica a livello di competizione, superando i precedenti SoTA di oltre il 75%.

Un LLM di codice riceve la descrizione di una funzione e le firme delle funzioni delle quali dipende e viene chiesto di generare implementazioni della funzione. Quando viene aggiunto un vincolo, il compilatore cercherà tra le possibili combinazioni di implementazione finché ne trova una che funziona.

Studi precedenti hanno dimostrato che, a differenza degli esseri umani, i modelli di linguaggio di programmazione non sono in grado di sviluppare programmi che eseguono sequenzialmente numerosi compiti di piccole dimensioni. Parsel elimina il problema suddividendo i processi di decomposizione e implementazione. Sebbene si intendesse consentire la codifica in linguaggio naturale, hanno scoperto che i LLM eccellono anche nella codifica Parsel.

La decomposizione di un piano astratto fino a che possa essere risolto automaticamente è un modello comune nel ragionamento umano riflettuto nella generazione e nell’implementazione di Parsel; questa struttura compositiva è anche utile per i modelli di linguaggio. In questo studio, il team dimostra che i LLM possono creare Parsel da un numero limitato di istanze e che le loro soluzioni superano i metodi di stato dell’arte su problemi di livello di competizione dal dataset APPS. I piani scritti dai LLM utilizzando Parsel per produrre piani robotici passo dopo passo da lavori di alto livello sono, entusiasmanti, accurati per oltre due terzi rispetto a una soluzione di pianificazione a zero.

Per valutare l’efficacia di Parsel, Gabriel Poesia, un programmatore competitivo esperto, lo ha utilizzato per risolvere una serie di sfide APPS tipicamente presenti nelle competizioni di codifica. In 6 ore, ha trovato soluzioni per 5 dei 10 problemi, inclusi 3 su cui GPT-3 aveva precedentemente fallito.

I ricercatori mostrano che Parsel può essere utilizzato per dimostrazioni teoremi e altre attività che richiedono ragionamento algoritmico formulandolo come un framework generale.

Pianificano di implementare la generazione autonoma di test unitari nel prossimo futuro. Menzionano che un approccio sarebbe cercare situazioni speciali e vedere se il gruppo di funzioni che concorda su tutti i test esistenti concorda anche su eventuali nuovi test. Si evita lo sviluppo esponenziale delle combinazioni di implementazione, il che potrebbe rendere possibile la decomposizione automatica. Hanno anche l’obiettivo di regolare la “soglia di fiducia” del modello di linguaggio, poiché è necessario mantenere descrizioni chiare e concise per programmi più importanti o sezioni di programmi, è necessario assicurarsi che le descrizioni siano chiare e concise.