I modelli linguistici di grandi dimensioni non sempre rispondono correttamente alle tue domande. La loro complessità li rende difficili da controllare, poiché l’utente non può comprenderne completamente il funzionamento interno. Tuttavia, di recente, i chatbot basati su Large Language Model (LLM) hanno suscitato molte lamentele riguardo alle risposte insoddisfacenti e persino alle allucinazioni.
Per affrontare questo problema, i ricercatori dell’ETH di Zurigo hanno sviluppato un documento chiamato “Prompting Is Programming: A Query Language for Large Language Models”. Questo documento introduce una disciplina emergente chiamata suggerimento intelligente, che combina in modo intuitivo prompt del linguaggio naturale con elementi di linguaggio di programmazione.
Il linguaggio utilizzato si chiama Language Model Query Language (LMQL), ed è un linguaggio di programmazione dichiarativo. Ciò significa che gli utenti possono specificare solo il risultato desiderato dell’attività senza dover preoccuparsi del controllo del flusso logico per ottenere tale risultato. LMQL trae ispirazione da SQL ma integra anche Python nel suo framework. Gli utenti possono formulare prompt contenenti sia testo che codice per ottenere risultati specifici dal modello di linguaggio.
Secondo il documento, la grammatica di LMQL comprende cinque parti essenziali. Il “decoder” decodifica l’algoritmo che genera il testo, migliorando la qualità e la diversità delle parole. Il “blocco Query” scritto in sintassi Python funge da meccanismo principale di interazione con il modello di linguaggio. La clausola “Model/from” specifica il modello richiesto, mentre la clausola “Where” consente di definire vincoli che influenzano l’output generato. Infine, le “Distribution Instructions” guidano la distribuzione dei valori generati, consentendo di controllarne il formato e la struttura.
LMQL offre un modo semplice per esprimere prompt in più parti e imporre vincoli su LLM. Anche per compiti semplici, come chiedere al modello di raccontare una barzelletta, puoi avere il pieno controllo del risultato desiderato. Per agevolare lo sviluppo delle query, LMQL fornisce un IDE Playground che permette di esaminare lo stato dell’interprete, i risultati della convalida e le risposte del modello durante la generazione del testo.
L’efficienza e le prestazioni rappresentano una sfida importante, ma LMQL si dimostra promettente. Riduce la necessità di iterazioni successive e migliora l’efficienza nella programmazione del modello linguistico. Le valutazioni hanno dimostrato che LMQL aumenta la precisione in diverse attività e riduce significativamente i costi computazionali nelle API a pagamento, generando risparmi fino all’85%.
È interessante notare che LMQL non è l’unico approccio ibrido a questa progettazione rapida, ma si unisce ad altri come Jargon, SudoLang e prlang. La combinazione di Large Language Models con linguaggi di programmazione rappresenta un campo molto interessante con molte direzioni da esplorare.
In conclusione, LMQL rappresenta un passo avanti significativo per ottenere risultati desiderati con meno risorse e sforzi nella generazione del testo da modelli linguistici. Offre un approccio conciso per definire prompt e imporre vincoli, migliorando l’efficienza e l’accuratezza della programmazione del modello linguistico. Questo progresso rende l’uso di Large Language Models più accessibile ed efficiente.