AI: le migliori tecniche di prompt per sfruttare i LLM

Le tecniche di prompt sono alla base dell'uso dei LLM. Esistono diversi studi e linee guide per ottenere i migliori risultati da questi modelli. Analizziamo alcuni di essi per estrarre i principi fondamentali che ci permetteranno di ottenere le risposte desiderate in base al nostro compito.

Share

Reading time: 5 minutes

I modelli LLM (Large Language  Models) sono alla base dei motori di intelligenza artificiale. Abbiamo già affrontato alcune tecniche di prompt per ottenere le risposte desiderate in base al compito che dobbiamo affrontare. Questa disciplina però è in continua evoluzione in quanto gli stessi modelli vengono aggiornati continuamente. Pertanto, in questo articolo vedremo nuove nozioni che sono uscite nell’ultimo periodo per progettare un prompt ben strutturato e quali tipi di prompt permettono ai LLM di generare la risposta desiderata.

Che cos’è l’ingegneria dei prompt?

L’ingegneria dei prompt non è una disciplina strettamente ingegneristica o una scienza precisa, supportata da basi matematiche e scientifiche. Viene definita come “il processo [e la pratica] di strutturare un testo che possa essere interpretato e compreso da un modello generativo di intelligenza artificiale“. È, pertanto, una pratica con una serie di linee guida per creare testi precisi, concisi e creativi per istruire un LLM a svolgere un compito. Un altro modo per dirlo è che “l’ingegneria del prompt è l’arte di comunicare con un modello generativo di linguaggio di grandi dimensioni“. 

Per comunicare con i LLM con istruzioni precise e specifiche per il compito da svolgere, Bsharat et.al presentano istruzioni e linee guida complete per migliorare la qualità dei prompt per i LLM. Lo studio suggerisce che, poiché i LLM mostrano un’impressionante capacità e qualità nella comprensione del linguaggio naturale e nello svolgimento di compiti in vari domini, come la risposta a domande, il ragionamento matematico, la generazione di codice, la traduzione e la sintesi di compiti, eccetera, un approccio di principio per curare vari tipi di prompt e tecniche migliora immensamente la risposta generata.

Prendiamo questo semplice esempio di un prompt prima e dopo l’applicazione di uno dei principi di concisione e precisione nel prompt. La differenza nella risposta suggerisce sia la leggibilità e la semplicità, sia il target desiderato per la risposta.

Come si può dedurre dall’esempio precedente, quanto più conciso e preciso è il prompt, tanto meglio LLM comprende il compito da svolgere e, di conseguenza, formula una risposta migliore.

Esaminiamo alcuni principi, tecniche e tipi di prompt che offrono una migliore comprensione di come svolgere un compito in vari domini dell’elaborazione del linguaggio naturale.

Principi e guide del prompt

Bsharat et al. hanno elencato 26 principi ordinati di prompt, che possono essere ulteriormente classificati in cinque categorie distinte, come illustrato nella figura sottostante.

I principi possono essere categorizzati come segue:

  • Struttura e chiarezza del prompt: Integrare il pubblico a cui ci si rivolge nel prompt.
  • Specificità e informazione: Implementare prompt guidati da esempi (utilizzare prompt few-shot).
  • Interazione e coinvolgimento dell’utente: Consentire al modello di chiedere dettagli e requisiti precisi finché non dispone di informazioni sufficienti per fornire la risposta necessaria.
  • Contenuto e stile linguistico: Istruire il tono e lo stile della risposta
  • Compiti complessi e prompt di codifica: Scomporre i compiti complessi in una sequenza di passaggi più semplici sotto forma di prompt.

Allo stesso modo, la guida alla progettazione dei prompt di Elvis Saravia afferma che un prompt può contenere molti elementi:

  • Istruzione: descrive un compito specifico che si vuole far eseguire al modello.
  • Contesto: informazioni aggiuntive o contesto che possono guidare la risposta del modello.
  • Dati di input: espressi come input o domande a cui il modello deve rispondere.
  • Formato di output e stile: il tipo o il formato dell’output, ad esempio JSON, quante righe o paragrafi. I prompt sono associati a ruoli, e i ruoli informano un LLM su chi sta interagendo con lui e quale dovrebbe essere il comportamento interattivo. Ad esempio, un prompt del sistema indica a un LLM di assumere il ruolo di Assistente o di Insegnante.

Un utente assume il ruolo di fornire uno qualsiasi dei suddetti elementi nel prompt che il LLM deve utilizzare per rispondere. Saravia, come lo studio di Bsharat et.al., afferma che l’ingegneria dei prompt è un’arte di comunicazione precisa. In altre parole, per ottenere la migliore risposta, il prompt deve essere progettato e realizzato in modo da essere preciso, semplice e specifico. Più è sintetico e preciso, migliore sarà la risposta.

Anche la guida di OpenAI sull’ingegnerizzazione dei prompt fornisce consigli analoghi e autorevoli, con indicazioni simili ed esempi dimostrabili:

  • Scrivere istruzioni chiare
  • Fornire un testo di riferimento
  • Dividere i compiti complessi in sottocompiti più semplici
  • Dare al modello il tempo di “pensare”

Infine, Sahoo, Singh e Saha et.al propongono un’indagine sistematica sulle tecniche di prompt engineering e offrono una concisa “panoramica dell’evoluzione delle tecniche di prompting, che spazia dal prompting zero-shot agli ultimi progressi”. Esse si suddividono in categorie distinte, come mostrato nella figura seguente.

Framework del prompt CO-STAR

Ma il framework CO-STAR fa un ulteriore passo avanti. Semplifica tutte le linee guida e i principi sopra citati in un approccio pratico.

Nel suo blog di prompt engineering che ha vinto il concorso di prompt engineering GPT-4 di Singapore, Sheila Teo offre una strategia pratica e validi spunti su come ottenere i migliori risultati da LLM utilizzando il framework CO-STAR.

In breve, Teo condensa i principi di Bsharat et.al, insieme ad altri principi sopra citati, in sei termini semplici e digeribili, come CO-STAR:

  • C: Contesto: Fornisce informazioni sul contesto e sul compito
  • O: Obiettivo: Definire il compito che si vuole che il LLM svolga
  • S: Stile: Specificare lo stile di scrittura che si desidera che l’LLM utilizzi.
  • T: Tono: stabilisce l’atteggiamento e il tono della risposta
  • A: Audience: Identificare il destinatario della risposta
  • R: Risposta: Fornire il formato e lo stile della risposta

Ecco un semplice esempio di richiesta di CO-STAR:

Con questo prompt di CO-STAR, otteniamo la seguente risposta concisa dal nostro LLM.

Potete vedere esempi esaurienti in questi due notebook Colab:

Oltre a CO-STAR, sono stati proposti altri framework specifici per ChatGPT, ma il cuore della creazione di prompt efficaci rimane sempre lo stesso: chiarezza, specificità, contesto, obiettivo, compito, azione, ecc

Tipi di prompt e compiti

Finora abbiamo esplorato le migliori pratiche, i principi guida e le tecniche, provenienti da una serie di fonti, su come creare un prompt conciso per interagire con un LLM. I prompt sono legati al tipo di compiti, il che significa che il tipo di compito che si desidera far svolgere al LLM equivale a un tipo di prompt e al modo in cui lo si deve creare.

Saravia analizza vari prompt legati ai compiti e consiglia di creare prompt efficaci per realizzare questi compiti. In generale, questi compiti includono

  • Riassunto del testo
  • Apprendimento a zero e a pochi colpi
  • Estrazione di informazioni
  • Risposta alle domande
  • Classificazione di testi e immagini
  • Conversazione
  • Ragionamento
  • Generazione di codice

 

In questo articolo non andremo ad analizzare tutte le tipologie di prompt in base al compiuto richiesto. Vi segnalo qui la raccolta di notebook per Colab in cui potete trovare degli esempi illustrativi. Da notare che tutti gli esempi di notebook sono stati testati utilizzando le API OpenAI su GPT-4-turbo, modelli della serie Llama 2, serie Mixtral, Code Llama 70B (in esecuzione su Endpoint Anyscale). Per eseguire questi esempi, è necessario disporre di account su OpenAI e Ansyscale Endpoints. Questi esempi sono derivati da un sottoinsieme di GenAI Cookbook GitHub Repository.

More To Explore

Intelligenza artificiale

Gradio: applicazioni web in python per AI [parte2]

Gradio è una libraria python che ci permette di creare applicazioni web in modo veloce e intuitivo per i nostri modelli di machine learning e AI. Le nostre applicazioni richiedono sempre un’interazione con l’utente e una personalizzazione del layout. Scopriamo, mediante degli esempi, come migliorare le nostre applicazioni.

Intelligenza artificiale

Gradio: applicazioni web in python per AI [parte1]

Scrivere applicazioni web per i nostri modelli di machine learning e/o di intelligenza artificiale può richiedere molto tempo e competenze che non sono in nostro possesso. Per snellire e velocizzare questo compito ci viene in aiuto Gradio, una libreria Python pensata per creare applicazioni web con poche righe di codice. Scopriamo le sue funzionalità base con alcuni esempi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Design with MongoDB

Design with MongoDB!!!

Buy the new book that will help you to use MongoDB correctly for your applications. Available now on Amazon!