Prompting: da principiante ad avanzato

Progrediamo nelle tecniche di prompting: vediamo quelle più avanzate

By Max
5 Min Read

The Sunday Prompt #17 – 24/9/2023

Torniamo a parlare delle tecniche di prompting. Abbiamo visto nel numero le diverse categorie di prompt ed ora passiamo ad esaminare quali sono le varie “tecniche” che si sono sino ad oggi sviluppate.

Normalmente un prompt è costituito dai seguenti elementi:

1. Istruzione: un’attività o un’istruzione specifica per il modello.

2. Contesto: informazioni esterne o contesto aggiuntivo per guidare il modello.

3. Dati di input: l’input o la domanda a cui siamo interessati.

4. Indicatore di output: il tipo o il formato dell’output.

Per i prompt di base le regole da seguire sono:

– prima inserire le istruzioni e dopo fornire gli altri elementi;

– quanto più specifico è il prompt, tanto più è probabile che l’output soddisfi le aspettative.

Le tecniche avanzate

Zero-shot prompt

Nel prompt zero-shot, non vengono inseriti degli esempi specifici, ma ci si affida al training che è stato già fatto del modello cercando di ottenere degli output soddisfacenti.

Few Shot prompt

In questo caso unitamente agli elementi che abbiamo visto presenti nel prompt base si forniscono alcuni esempi, in modo da indicare un contesto aggiuntivo. Questi esempi aiutano il modello a rispondere in maniera più precisa alla domanda principale, che verrà indicata dopo gli esempi.

struttura:

Esempio 1: “Cosa significa ‘gatto’?”  

Risposta 1: “Un gatto è un mammifero domestico, noto per la sua agilità e la sua affinità con gli esseri umani.”

Esempio 2: “Cosa significa ‘cane’?”  

Risposta 2: “Un cane è un mammifero domestico, spesso utilizzato come animale da compagnia o per lavori specifici come la caccia o la sorveglianza.”

Esempio 3: “Cosa significa ‘albero’?”  

Risposta 3: “Un albero è una pianta perenne con un tronco che supporta rami e foglie.”

Ora, cosa significa ‘libro’?

Chain of thoughts (CoT).

Di questa tipologia di prompt abbiamo già parlato. Si tratta di far esporre al modello i vari passaggi intermedi attraverso cui arriva ad un determinato output, consentendo così di esaminare il “ragionamento” che lo precede.

Tipicamente si inseriscono frasi come “indica passo per passo”.

Coerenza interna

Questa tecnica mira a migliorare le prestazioni degli output in particolare per quelle ipotesi in cui chiediamo al modello di rispondere a domande che richiedono calcoli aritmetici.

Un esempio può essere: “Quando avevo 6 anni mia sorella aveva la metà dei miei anni. Ora ne ho 70, quanti anni ha mia sorella?”

Prompt dal minimo al massimo

In questo caso un problema complesso viene scomposto in più sottoproblemi più semplici. Chiedendo al modello di risolverli in una sequenza otterremo la soluzione di quelli successivi ed infine la soluzione al problema generale.

Auto-prompt

Questa tecnica è molto interessante. E’ possibile, infatti, chiedere al modello di suggerire come scomporre un prompt iniziale in più prompt successivi, oppure come riformulare il prompt che forniamo in maniera che sia più efficace per trovare una risposta.

Meta-prompt

Qui le cose si fanno complicate dato che bisogna usare librerie come langchain. Il prompt vuole indurre il modello ad analizzare le proprie interazioni con chi inserisce i prompt, per cercare di migliorare gli output. In pratica ci sono due catene di prompt, la prima che riguarda i prompt inseriti, la seconda che analizza e critica gli output. 

Maggiori spiegazioni a questo link:

https://cobusgreyling.medium.com/meta-prompt-60d4925b4347

ReAct

In questo caso chiediamo al modello non solo di fornire una risposta, ma anche di agire raccogliendo informazioni da fonti esterne. 

Pensiamo ai plug-in di ChatGPT che consentono di visitare siti web per trovare delle informazioni, o anche per verificare se un nome a dominio è libero o meno. Un esempio di questo prompt potrebbe essere (attivando il plug-in): “Suggerisci 10 nomi per un ristorante di pesce a Roma e poi verifica se sono liberi i corrispondenti nomi a dominio”.

Prompt iterativo

Si tratta di una variazione del CoT in cui invece di chiedere al modello di esplicitare i passaggi della soluzione ad ogni interazione forniamo informazioni aggiuntive (nell’ambito della stessa sessione) per contestualizzare le informazioni.

Queste tecniche stanno sempre più espandendosi e periodicamente se ne scoprono di nuove, che vengono testate anche con dei benchmark sui vari modelli attualmente utilizzabili.

Se vi viene in mente qualche altra tecnica vi chiedo di aggiungerla nei commenti.

👋🏻 Happy prompting!

Share This Article