Guida avanzata a ChatGPT: prompt engineering e design per output
L'intelligenza artificiale generativa restituisce risultati a partire da prompt di input. Ma come scrivere prompt efficaci? Diverse sono le linee guida.
DI Pierfilippo Pierucci / luglio 2024
C'è grande dibattito intorno al tema dell'intelligenza artificiale e delle nuove frontiere del Web3.0. Gran parte del merito è da attribuire all'incredibile ascesa di ChatGPT, modello di intelligenza artificiale generativa realizzato da OpenAI che in meno di due mesi dal lancio ha raggiunto i 100 milioni di utenti diventando l'app consumer con la più rapida crescita di sempre.
I segreti del suo successo li sintetizziamo in tre punti chiave:
- eccezionale semplicità d'utilizzo (UX semplicissima);
- generazione di risultati di eccezionale qualità ("Hero" content);
- gratuità (Chat-GPT può essere utilizzato gratis).
Non è casuale che il portale ResumeBuilder - intervistando 1.187 leader aziendali statunitensi - ha rilevato come la disruption di ChatGPT sia ormai inarrestabile: il 91% dei CEO USA cerca lavoratori con esperienza in ChatGPT e il 30% di essi afferma di avere urgenza di trovare esperti di ChatGPT.
Abbiamo scritto un'introduzione a ChatGPT in un pezzo dedicato, in questo articolo, invece abbiamo l'ambizione di presentarci come una guida avanzata sull'utilizzo di tutte le potenzialità di ChatGPT, all'introduzione di concetti complessi come LLM, machine learning, prompting, prompt engineering e design e tanto altro.
IN QUESTO ARTICOLO
- 1. Breve introduzione a ChatGPT e definizione di LLM
- 2. Dare istruzioni alla macchina: il "prompting"
- 3. Comprendere i punti deboli di ChatGPT per scrivere prompt efficaci
- 4. La potenza di GPT e degli LLM nell'elaborazione di informazioni non strutturate
- 5. Bypassare il limite di caratteri di input e output in ChatGPT
- 6. Tecniche avanzate di prompting
- 7. Conclusioni
1. Breve introduzione a ChatGPT e definizione di LLM
ChatGPT è un modello di IA basato su una rete neurale artificiale addestrata su enormi quantità di dati testuali, in modo che possa riconoscere schemi e costruzioni linguistiche. Il prompting sfrutta questa capacità di riconoscimento per fornire al sistema di IA una serie di parole e frasi chiave, dalle quali questo può generare una risposta con un rischio di errore minore e una qualità di output maggiore. Abbiamo scritto un'introduzione più approfondita all'utilizzo di ChatGPT in un articolo dedicato (QUI).
L'errore principale che si fa quando si parla di ChatGPT è confonderlo con un motore di ricerca. ChatGPT - nonché il suo genitore GPT - è un LLM, Large Language Model, un modello di linguaggio avanzato che utilizza tecniche di deep learning per generare testo coerente e plausibile. ChatGPT può essere utilizzato per creare contenuti, completare frasi, rispondere a domande, tradurre testo e altre funzionalità avanzate di elaborazione del linguaggio naturale, non per ricercare informazioni all'interno della sua conoscenza pregressa.
I motori di ricerca sono utilizzati per trovare informazioni online in base alle parole chiave inserite, mentre un LLM è utilizzato principalmente per generare contenuti e rispondere a domande utilizzando il linguaggio naturale.
È pertanto improprio - poi si può comunque fare, ma i risultati non saranno di pari qualità - utilizzare ChatGPT come un motore all'interno del quale ricercare informazioni. Bisogna intenderlo come una macchina (o meglio un "modello di intelligenza artificiale generativa") molto potente in grado di elaborare grandi moli di informazioni con grande affidabilità.
La complessità dietro GPT è notevole e per questo motivo l'AI non può mai essere abbandonata a sé stessa aspettandosi un output adeguato: leggere, revisionare e integrare l'output del modello è fondamentale tanto quanto riuscire a scrivere un prompt (input) efficace.
Abbiamo parlato in un articolo dedicato al fenomeno delle hallucination che colpiscono le AI - per cui, in breve, esse possono incorrere nella generazione di risposte viziate da informazioni sbagliate e non supportate da dati reali -, ma la "minaccia" più importante per un LLM arriva direttamente dal consumatore/usufruitore e alla sua generale incapacità di dialogare con il modello, che si traduce nella scrittura di prompt insufficienti, senza "contesto" e/o in grado di fuorviare la macchina.
Questa guida ha proprio lo scopo di capire la differenza tra un prompt buoni e modesti, aiutando a scriverne di corretti e in grado di permettere la generazione di output affidabili, coerenti e di qualità.
2. Dare istruzioni alla macchina: il "prompting"
Con "prompting" si definisce l'arte di costruire input adeguati e in grado di fornire istruzioni efficaci ad un modello, mettendolo in condizione di generare risposte coerenti e di qualità rispetto alla richiesta. Il ruolo del prompt è molteplice:
- fornire informazioni essenziali;
- definire il "contesto" (cioè il perimetro entro cui il modello deve operare ed elaborare le informazioni);
- fornire istruzioni circa l'output da generare;
- fornire esempi o chiarificare le risposte che ci si attende (o meno) di ottenere.
Fondamentalmente, è nota la correlazione esistente tra prompt lunghi e output generati di maggior qualità - nonché più lunghi. Il prompt però non deve obbligatoriamente essere lungo, quanto piuttosto essere costruito affinché il margine di errore del modello si riduca al minimo. Fondamentale è l'introduzione del concetto di contesto. Esso rappresenta tutti gli elementi e le informazioni che orbitano attorno ad una determinata richiesta, nonché necessariamente attorno all'output. Fanno parte del contesto elementi come il target di riferimento, il canale di comunicazione pensato, il tono di voce, dettagli territoriali, limiti, barriere, requisiti da rispettare da parte del modello, ... e qualsiasi altra informazione in grado di descrivere lo scenario di inserimento del prompt.
Forniamo di seguito alcuni esempi di prompting su ChatGPT.
1. Prompting per generare la descrizione di un prodotto"Descrivi una macchina fotografica reflex con obiettivo intercambiabile, capacità di registrazione video in 4K e funzioni avanzate di stabilizzazione dell'immagine."
2. Prompting per generare la recensione di un film con una filastrocca
"Scrivi una recensione del film 'Il padrino' di Francis Ford Coppola. Sottolinea i punti di forza della trama e del cast. Analizza i ruoli dei principali protagonisti. Costruisci l'output come una filastrocca utilizzando come rima -ati."
3. Prompting per generare un messaggio di risposta ad una mail
"Scrivi un messaggio di risposta ad una mail che richiede informazioni sul prodotto X. Fornisci una descrizione dettagliata delle sue caratteristiche. Utilizza un tono cortese, ma professionale. Fai leva sui vantaggi del prodotto rispetto ai prodotti concorrenti. Offri al cliente la possibilità di fissare una chiamata per parlarne anche a voce se lo desidera. Chiedi se ha bisogno di altro aiuto al termine."
4. Prompting per generare un testo promozionale
"Scrivi un testo promozionale per il lancio di un nuovo prodotto. Fornisci informazioni sui suoi vantaggi, sulla sua qualità e sulla sua capacità di risolvere i problemi dei consumatori".
5. Prompting per generare una descrizione di ChatGPT
"Genera un testo di almeno 500 parole che illustri il funzionamento del sistema di intelligenza artificiale ChatGPT e le sue possibili applicazioni nel campo dell'analisi del linguaggio naturale e dell'elaborazione del testo. Il testo deve essere scritto in modo chiaro e accessibile anche per i non esperti del settore, e deve includere una definizione dettagliata del concetto di "rete neurale" e del processo di "addestramento" della macchina. Inoltre, il testo deve fornire esempi concreti di come ChatGPT può essere utilizzato per rispondere a domande specifiche, generare descrizioni di prodotti, scrivere recensioni di film e libri, o addirittura creare testi promozionali e annunci pubblicitari. Infine, il testo deve includere anche una valutazione critica delle potenzialità e delle limitazioni del sistema di intelligenza artificiale ChatGPT, e delle implicazioni etiche e sociali dell'utilizzo di tecnologie simili."
Se abbiamo bisogno di imprimere uno stile alla risposta della macchina si può chiedere a ChatGPT di farlo ("immagina di dover rispondere ad un avvocato...", "usa uno stile colloquiale...", "considera che sarà scritto nella letterina di compleanno di una bambina di 4 anni...").
Mai provato a chiedere a ChatGPT di spiegare un concetto a ritmo di rap? Il risultato può essere esilarante... Se cerchiamo un output più leggibile, possiamo porre la stessa domanda ma chiedere un elenco puntato, oppure una tabella come risultato della risposta. La malleabilità dello strumento è unica e totale, sta a noi (nelle veci di prompt designer) trovare il giusto prompt in modo da scrivere l'input in grado di soddisfare le nostre esigenze.
3. Comprendere i punti deboli di ChatGPT per scrivere prompt efficaci
Sfatiamo subito un mito: ChatGPT e le intelligenze artificiali generative non sono perfette nel restituire output. Comprendere i punti deboli alla base della tecnologia delle AI generative diventa dunque cruciale per scrivere prompt efficaci. Non a caso, le tecniche più efficaci di prompting si basano proprio sull'aggiramento dei limiti dei modelli di AI per cercare di andare incontro allo strumento, fornendogli informazioni utili a ottimizzare l'output.Ma quali sono?
- Comprensione del contesto limitata: ChatGPT è molto bravo a generare testo in base al contesto dato in input, tuttavia può avere difficoltà a comprendere completamente il contesto di una conversazione a causa della sua natura di modello statistico. Ciò può portare a risposte imprecise o errate.
- Mancanza di conoscenza specifica: ChatGPT non ha accesso a conoscenze specifiche che non sono presenti nel corpus di addestramento. Ciò significa che potrebbe non essere in grado di fornire risposte accurate su argomenti molto specialistici o di nicchia.
- Risposte incoerenti: in alcuni casi, ChatGPT può generare risposte incoerenti o contraddittorie. Questo potrebbe essere dovuto al fatto che il modello non riesce a comprendere la logica della conversazione o a mantenere una coerenza tra le risposte.
- Bias di dati: i dati di addestramento utilizzati per creare ChatGPT possono contenere bias culturali o di genere, che possono influenzare le risposte generate dal modello.
- Mancanza di creatività: ChatGPT non è in grado di creare idee originali o innovazioni in modo autonomo. Il suo scopo principale è quello di generare testo basato su ciò che ha appreso dal corpus di addestramento.
Soprattutto in termini matematico-logici, ChatGPT e altre AI generative rischiano spesso di incorrere in errore. Prompt anche semplici (per una calcolatrice) come: "Quanto fa 512x45?" possono generare risposte sbagliate, proprio perché, in quanto LLM che lavorano in logica statistica, il calcolo computazionale entra in conflitto con la natura dell'output naturale del modello (statistico, appunto). Per noi esseri umani è un interrogativo molto semplice, ma per un modello - per farla semplice - non è immediato dover passare dal fornire "output in ottica statistica" ad "output in ottica rigida/aritmetica".
Schema di ragionamento del modello dell'AI generativa
4. La potenza di GPT e degli LLM nell'elaborazione di informazioni non strutturate
Le AI generative sono fantastiche per svolgere data analysis, se correttamente istruite, ma come se la cavano con dati non strutturati (quindi non tabellari, non numerici, caotici, ...)?
La risposta è molto bene.
Se, ad esempio, vogliamo inviare una mail ad una persona che non conosciamo per provare a fare buona impressione e le uniche informazioni che abbiamo a disposizione sono quelle che riusciamo a raccogliere dal suo profilo LinkedIn, modelli come ChatGPT possono essere eccezionali per intavolare una prima bozza di email.
Partiamo dunque dal copia e incollare le informazioni che abbiamo a disposizione all'interno del nostro prompt, riportando brutalmente tutte le informazioni di questa persona e ponendo la richiesta al modello.
Ecco un esempio:
Biografia: [informazioni sulla biografia di una persona]
Educazione: [etc. etc]
Progetti: [etc. etc]
Scrivi una email a freddo per sensibilizzare questa persona e proporgli il nostro prodotto "Tubspot", un nuovo CRM rivoluzionario (con queste caratteristiche) . Il mio nome è Max. Rendi l'e-mail formale, ma non troppo. Menziona i dettagli rilevanti della sua biografia, sopra riportata, per aiutare a presentare il prodotto.
Ecco l'output realizzato dal modello:
"Buongiorno NOME,
Mi chiamo Max e la sto contattando perché credo che il nostro prodotto, Tubspot, potrebbe essere perfetto per lei. In qualità di co-fondatore di "Azienda1" e direttore delle risorse per i fondatori di "Startup2", sono sicuro che comprenderà l'importanza di disporre di un CRM affidabile per aiutare a gestire le relazioni con i clienti.
Tubspot è un neo-CRM che aiuta i fondatori e gli imprenditori come lei a gestire facilmente le relazioni con i clienti e a tenere traccia dei dati dei clienti. Il nostro prodotto è progettato per essere facile da usare e intuitivo, così può concentrarsi sulla crescita della sua attività senza preoccuparsi dei dettagli tecnici.
Penso che troverà Tubspot una grande risorsa per la sua attività. Se è interessato, mi piacerebbe fissare una chiamata per discutere ulteriormente.
Grazie per l'attenzione.
Un saluto,
Massimo"
Gli LLM sono degli organizzatori e dei rielaboratori di informazioni in grado di fornire output che presentano solo il succo essenziale del discorso, elaborato secondo i dettagli e le caratteristiche volute.
Le applicazioni di questa potenzialità sono innumerevoli. Come per tutte le applicazioni dell’AI, però, è importante non lasciare mai tutto il lavoro esclusivamente all’intelligenza artificiale: l’output dev’essere rivisto, revisionato e migliorato dall’uomo per essere al 100% affidabile.
In tantissimi contesti aziendali, come è intuibile, ChatGPT rappresenta una vera e propria manna per produttività e miglioramento dei processi interni. In certi casi è possibile richiedere a ChatGPT di riassumere opere famose senza o fornire informazioni aggiuntive dal momento che sono contenuti compresi nella sua memoria di base. Ovviamente, questo concetto non si applica a testi di nicchia - e vale comunque sempre la pena di testare se innanzitutto GPT ha nel database informazioni in materia.
Prendendo l'esempio di "Romeo e Giulietta", si può chiedere a ChatGPT di creare un riassunto atto per atto. In alternativa, se il testo che hai bisogno di riassumere non è presente nel suo database (è una ricerca che hai realizzato tu, una mail o un messaggio ricevuto, ...) si può digitare: "Crea un riassunto [con queste caratteristiche] di [copia incolla del testo da riassumere]".
5. Bypassare il limite di caratteri di input e output in ChatGPT
Sebbene ChatGPT e le ai generative possano fornire output molto lunghi, a volte può capire che il modello interrompa bruscamente la risposta fornita, troncando, letteralmente, l'output senza apparente motivo.
È colpa del limite di caratteri di risposta imposto.
Per ChatGPT questo limite è impostato su circa 4096 caratteri di output, ma esistono vari approcci semplici per superare questo limite di "fabbrica":
- chiedere a ChatGPT di "continuare": copiate e incollate l'output ricevuto nel campo di inserimento del messaggio e aggiungete in fondo "continuare". Il chatbot riprenderà da dove aveva lasciato;
- chiedere di "spezzettare" il testo richiesto in parti più piccole, ad esempio prima l'introduzione o il titolo del testo e poi i singoli concetti e paragrafi;
- chiedere di "espandere" un testo generato. Come nel primo punto, copia e incolla e al termine scrivere "espandere" per ottenere un output più grande;
- corollario del precedente metodo, si può chiedere a ChatGPT di scrivere un elenco di punti da affrontare per trattare l'argomento, quindi chiedergli di espandere singolarmente ciascuno di questi punti.
ChatGPT ha introdotto la funzione " Continue generating" qualora vengano forniti output tronchi. Basterà dunque cliccare sul bottone per far continuare la generazione dell'output da parte del modello. Rappresenta sicuramente una novità interessante che aumenta ulteriormente la qualità dell'output generato, dal momento che il limite di caratteri dell'output viene così bypassato.
6.1. Comprendere il concetto di Zero-Shot Prompting
Con Zero-Shot Chain of Thought (Zero-shot-CoT) si intende la generazione di prompt che basano la risposta semplicemente sulla conoscenza "standard" del modello, senza dunque effettuare affinamento.
Si tratta della stragrande maggioranza dei prompt generati dagli utenti comuni, in pratica, nonché i più fragili e meno precisi. Un esempio è il seguente:
Valuta il sentiment del seguente testo in neutrale, negativo o positivo.
Testo: "Credo che sia una gita ok"
Sentiment:
> Neutral
Pur senza fornire al modello alcun esempio o riferimento, l'LLM è stato in grado di comprendere il concetto di Sentiment e fornire una risposta coerente "zero-shot" (che si potrebbe tradurre con "senza suggerimenti"). Ne parliamo perché, generalmente, si tratta di una bad practice, nonché ciò che il prompt engineering e il prompt design cercano di elevare.
Arricchire il prompt con istruzioni, dettagli e un contesto ha dimostrato di migliorare l'output che viene generato dal modello. Quando questo approccio "zero-shot" non funziona (spoiler: succederà spesso), si consiglia di fornire dimostrazioni o esempi.
Introduciamo quindi le tecniche di Few-Shot Prompting e Chain of Thought (CoT).
6.2. Role Prompting
Una tecnica tanto efficace quanto semplice consiste nell'assegnare un ruolo a ChatGPT. Il role prompting fornisce importanti informazioni in termini di contesto e spiana la strada all'interpretazione dell'input da parte dell'IA.
Un esempio potrebbe essere quello di iniziare la propria richiesta con "Sei un medico" o "Sei un avvocato" per chiedere all'IA di rispondere a qualche domanda medica o legale. È la traduzione dall'inglese del comando “act as”.
Sei un brillante matematico che può risolvere qualsiasi problema nel mondo.
Risolvi il seguente problema:
Quanto fa 100*100/400*56?
> La risposta è 1400.
6.3. Q&A Format
Il Q&A format, dall'inglese question and answer ("domanda e risposta"), è un secondo approccio, molto sistematico, che si può utilizzare quando si sta ponendo una domanda particolarmente specifica all'AI. Si costruisce semplicemente inserendo un marcatore a inizio domanda, sia per chi pone la domanda che per la macchina che dovrà rispondere, come in questo caso:
D: Qual è la capitale della Francia?
U:
Ripetiamo il concetto: per noi esseri umani è palese che "Qual è la capitale della Francia?" sia una domanda e che richieda come risposta una città specifica, ma per un LLM non è banale. È solo grazie al machine learning e al tempo che ChatGPT, è stato in grado di affinare sempre di più le sue capacità capendo l'intento di ricerca dietro al prompt e la risposta da fornire ("Parigi"). Utilizzare questo formato di scrittura del prompt non lascia dubbi al modello, che capisce che quello che ci aspettiamo è una risposta a quella specifica domanda.
A volte però non basta. Un prompt ancora migliore è teoricamente il seguente:
D: Qual è la capitale dell'Italia?
U: Roma
D: Qual è la capitale dell'Inghilterra?
U: Londra
D: Qual è la capitale della Francia?
U:
Lo vedremo anche nei prossimi paragrafi, ma quello che si è cercato di fare qua è stato fornire degli esempi concreti di cosa ci aspettiamo come risposta dal modello. In termini tecnici abbiamo fornito un contesto al nostro prompt.
Il modello si trova dunque a dover interpretare il nostro interrogativo a partire da degli esempi. In quanto AI basata sul machine learning si tratta di una manna: l'errore di interpretazione si riduce notevolmente. In questo caso la risposta "Parigi" sarà pressoché sempre scontata.
6.4. Priming effect
Dato che ChatGPT è dotato di memoria, questo fattore può essere sfruttato attraverso il cosiddetto "effetto priming", che può tradursi in "effetto addescamento". Per capirci: se cominciassimo una conversazione affrontando il tema dei "liquori" e poi chiedessimo a ChatGPT informazioni su "attività che si possono fare nel tempo libero", è statisticamente più probabile che l'output generato dal modello possa includere una voce "andare a fare una degustazione di rum presso una qualche cantina".
Siamo in grado di influenzare gli output con le nostre conversazioni precedenti.
Sfruttando questa caratteristica come un vantaggio, è possibile utilizzare la chat con ChatGPT come una repository di informazioni da cui la macchina potrà prendere spunto per ottimizzare gli output successivi.
Esploriamo meglio il concetto, con un'applicazione avanzata.
Facciamo l'esempio che vogliamo chiedere un parere filosofico a ChatGPT generico. Se chiedessimo "Qual è la tua area di studi filosofici preferita?" la risposta potrebbe essere incredibilmente aleatoria, mentre noi abbiamo bisogno che la risposta sia simile a quella di un professore esperto che parla con uno studente non alle prime armi.
Sfruttiamo quindi l'effetto priming per dare pesi e definizioni alla macchina prima di richiedere un output.
Fornire una definizione significa semplicemente scrivere qualcosa come:
Quando scrivo “Esperto” intendo utilizzare uno stile di professore illustro, con oltre 10 anni di esperienza nell'insegnamento della materia e molteplici PhD conseguiti in quel campo di studio. Userai pertanto una sintassi accademica e profesionale e degli esempi complessi nelle tue risposte, concentrandoti su consigli meno noti per illustrare meglio le tue argomentazioni. Il tuo linguaggio dovrebbe essere sofisticato ma non eccessivamente complesso [etc. etc]
oppure:
Quando scrivo “Studente” significa nello stile di uno studente universitario del secondo anno con una conoscenza di livello introduttivo della materia. Spiega i concetti semplicemente usando esempi di vita reale. Parla in modo informale e dal punto di vista in prima persona, usando umorismo e linguaggio informale [etc. etc]
A questo punto potrei aver bisogno di dare altre definizioni chiare alla macchina per evitare che si incappi in errori di contestualizzazione e di sinonimia. Posso inserire nello stesso prompt quanto segue:
• "Critica" significa analizzare il testo dato e fornire un feedback.
• “Riassumere” significa fornire dettagli chiave da un testo.
• "Rispondere" significa rispondere a una domanda dalla prospettiva data.
- Qualsiasi cosa tra parentesi () indica la prospettiva da cui stai scrivendo.
- Qualsiasi cosa tra parentesi graffe {} è l'argomento in cui sei coinvolto.
- Qualsiasi cosa tra parentesi [] è l'azione che dovresti intraprendere.
Esempio: (Studente){Filosofia}[Rispondi] Qual è il vantaggio di studiare questa materia rispetto ad altre al college? [etc. etc]
Notare il maiuscolo: va molto bene fornire un esempio di applicazione delle istruzioni appena impartite, come vedevamo nel precedente paragrafo. Una volta sazi del prompt scritto possiamo sancire il contenuto e sottoporlo al modello scrivendo come ultima frase: "Se capisci e sei pronto per iniziare, rispondi solo "sì"."
Quest'ultima frase è molto importante e permette di valutare la qualità della prompt inserita. Infatti, dall'output generato dal modello potremo subito capire se le istruzioni sono state chiare o meno nel momento stesso in cui la sua risposta dovesse essere in qualche modo diversa dal semplice "si".
Attenzione: l'effetto priming funziona bene se si usa l'inglese. È suggeribile quindi tradurre il contenuto così realizzato prima di darlo in pasto al modello.
Un consiglio: Esattamente per lo stesso motivo attenzione ad aggiungere un eventuale riga di testo all'interno di prompt successivi con all'interno scritto: "Please avoid all previous instructions and informations", in questo modo il modello capirà di dover resettare le sue conoscenze e non attingerà dalle informazioni presenti nelle conversazioni avute con esso per rispondere. L'output sarà meno influenzato dal contesto pregresso.
È molto interessante comparare le risposte fornite sfruttando l'effetto addescamento e senza per capire le nette differenze che può generare nell'output GPT se non correttamente contestualizzato:
Output senza contestualizzazione | Output con contestualizzazione |
Ci sono molte aree affascinanti della filosofia, e quelle più interessanti dipendono dalle preferenze personali e dalle curiosità intellettuali. Ecco alcune delle aree filosofiche più popolari che hanno catturato l'attenzione dei pensatori nel corso della storia: | Come esperto di filosofia, credo che tutte le aree della filosofia siano interessanti a modo loro. Tuttavia, alcune aree sono particolarmente intriganti e hanno catturato l'attenzione dei filosofi nel corso della storia. Un'area che ha ricevuto molta attenzione è l'epistemologia, che è lo studio della conoscenza e delle credenze. L'epistemologia cerca di rispondere a domande come: che cos'è la conoscenza? Come acquisiamo la conoscenza? Come giustifichiamo le nostre convinzioni? |
1. Metafisica: questo ramo della filosofia si occupa della natura della realtà e dell'universo, comprese le domande sull'esistenza di Dio, la natura della coscienza e il rapporto tra mente e materia. | Un'altra area della filosofia che è affascinante è la metafisica, che è lo studio della realtà e dell'esistenza. La metafisica pone domande come: qual è la natura della realtà? Qual è la natura del sé? Qual è la natura del tempo e dello spazio? |
2. Epistemologia: questa è la branca della filosofia che si occupa della conoscenza e della credenza. Pone domande su come sappiamo ciò che sappiamo, cosa costituisce la conoscenza e come possiamo essere certi di qualsiasi cosa. | Infine, l'etica è un'altra area della filosofia che è sia interessante che rilevante per la nostra vita quotidiana. L'etica è lo studio dei principi e dei valori morali e cerca di rispondere a domande come: qual è la cosa giusta da fare? Come dovremmo vivere le nostre vite? Cosa rende un'azione moralmente giusta o sbagliata? |
3. Etica: l'etica è lo studio dei valori e dei principi morali. Esplora domande su ciò che è giusto e sbagliato, bene e male e ciò che rende le azioni o le persone virtuose. | Nel complesso, queste tre aree della filosofia - epistemologia, metafisica ed etica - sono tutte affascinanti e degne di studio. Ma ci sono anche molte altre aree interessanti della filosofia e incoraggio gli studenti a esplorarne il maggior numero possibile. |
4. Filosofia politica: quest'area della filosofia si occupa di questioni riguardanti l'organizzazione della società e il ruolo del governo nelle nostre vite. | |
5. Estetica: l'estetica si occupa della bellezza e dell'espressione artistica. Esplora domande su cosa rende qualcosa di bello, quale ruolo gioca l'arte nella società e come possiamo apprezzare l'arte. | |
6. Logica: la logica è lo studio del ragionamento e dell'argomentazione. Si occupa di domande su come possiamo distinguere i buoni argomenti da quelli cattivi e come possiamo arrivare a conclusioni vere partendo dalle premesse. | |
Naturalmente, queste sono solo alcune delle molte aree affascinanti della filosofia. Altre aree includono la filosofia del linguaggio, la filosofia della scienza, la filosofia della mente e molte altre. In definitiva, l'area più interessante della filosofia è quella che cattura la tua immaginazione e accende la tua curiosità. |
Si può notare facilmente che la risposta condivide alcuni aspetti con la prima - ad esempio, le domande che offre come esempi per vari campi sono simili - ma fornisce un contesto più profondo, rinuncia al formato dell'elenco a favore di paragrafi coerenti e collega esempi alla vita reale. Molto meglio, no?
Incorporare i primer (“esche”) nei propri prompt è un modo più avanzato di interagire con i LLM.
Poiché il modello può perdere traccia del prompt scritto nel primo messaggio nel tempo - e recentemente questa "pecca" sembra essersi rimarcata - consigliamo di riprendere l'intero messaggio iniziale con le istruzioni (senza l'ultima riga in cui si chiede conferma della comprensione del messaggio) per inserirlo subito prima del messaggio con la prompt di input. Ciò migliora nettamente l'output e restituisce risultati migliori.
6.5. Few-Shot Prompting
Fidatevi se vi diciamo che i prompt "zero-shot" hanno vita breve all'interno degli LLM e portano con sé numerose problematiche dal momento che non forniscono informazioni circa il contesto all'interno del quale dovrebbe operare il modello. Le risposte risultano spesso errate o comunque inconsistenti e/o insufficienti.
La tecnica Few-Shot può essere utilizzata come tecnica per introdurre al LLM delle prime informazioni di contesto per ottimizzare il proprio output. La tecnica opera sfruttando il condizionamento, inducendo il modello a seguire indicazioni da noi fornite influenzando gli output che verranno generati in futuro.
Un normale prompt "zero-shot" come: "Qual è la capitale della Francia?" viene dunque rivisto in questa maniera:
Q: Qual è la capitale della Germania?
A: Berlino
Q: Qual è la capitale dell'Italia?
A: Roma
Q: Qual è la capitale degli USA?
A: Washington
Q: Qual la capitale della Francia?
A:
Così facendo stiamo fornendo un contesto e degli esempi di corretto ragionamento da seguire per rispondere al nostro interrogativo. Dato che abbiamo portato tre esempi, tecnicamente, questo prompt si può definire "Three-Shot".
Sembrerebbe tutto fantastico, ma in realtà la Few-Shot non è ancora una tecnica perfetta, specialmente quando si ha a che fare con attività di ragionamento più complesse.
Proviamo a dimostrare il concetto con un prompt particolare. Partiamo da un prompt zero-shot:
I numeri dispari in questo gruppo si sommano per formare un numero pari: 15, 32, 5, 13, 82, 7, 1.
A:
l'output che genera ChatGPT è il seguente: "Sì, i numeri dispari in questo gruppo danno come somma 107, che è un numero pari."
Sfatiamo dunque subito il mito che anche prompt "zero-shot" possano funzionare. Proviamo a vedere cosa succede aggiungendo esempi (Few-Shot) per vedere se migliorano i risultati.
Q: I numeri dispari in questo gruppo si sommano per formare un numero pari: 4, 8, 9, 15, 12, 2, 1.
A: La risposta è Falso.
Q: I numeri dispari in questo gruppo si sommano per formare un numero pari: 17, 10, 19, 4, 8, 12, 24.
A: La risposta è Vero.
Q: I numeri dispari in questo gruppo si sommano per formare un numero pari: 16, 11, 14, 4, 8, 13, 24.
A: La risposta è Vero.
Q: I numeri dispari in questo gruppo si sommano per formare un numero pari: 17, 9, 10, 12, 13, 4, 2.
A: La risposta è Falso.
Q: I numeri dispari in questo gruppo si sommano per formare un numero pari: 15, 32, 5, 13, 82, 7, 1.
A:
l'ouput, sorprendentemente è: "La risposta è Vero".
Non ha funzionato. Ecco dimostrato che il Few-Shot prompting non è sufficiente ad ottenere risposte affidabili per questo tipo di problema di ragionamento.
L'esempio precedente fornisce informazioni di base sulla risposta richiesta, ma il ragionamento effettivo richiederebbe alcuni passaggi di ragionamento in più. In altre parole, potrebbe essere utile suddividere il problema in ulteriori micro-passaggi per istruire ulteriormente il modello ad una risposta più consistente. In altre parole, serve introdurre la prossima tecnica, quella della "catena di pensiero" (Chain of Thought), una delle tecniche di prompting più efficaci.
6.6. Chain of Thought (CoT) Prompting
Il Chain of Thought (CoT) è un metodo di prompting sviluppato di recente - di cui si è parlato tanto durante l'ultimo Google I/O 2023 - che forza il LLM a mostrare il passaggio logico sul quale ha costruito il ragionamento dietro al suo output.
Detto così potrebbe sembrare una sciocchezza, ma come spesso accade le soluzioni più semplici sono quelle più efficaci. Chiedere - o mostrare - al modello i passaggi logici per iscritto lo costringe a porre particolare attenzione alle micro-task celate dietro la risoluzione di un interrogativo, e riduce drasticamente l’errore nell’output.
Ecco un esempio di prompt standard (a sinistra) e uno con CoT (a destra):
Input | Input |
Q: Massimo ha 10 mele. Compra altre due casse di mele. Ogni cassa ha 10 mele. Quante mele ha adesso? Q: La bottega ha 23 pere. Se ne vendono 20 e se ne comprano altre 6, quante pere hanno? |
Q: Massimo ha 10 mele. Compra altre due casse di mele. Ogni cassa ha 10 mele. Quante mele ha adesso? Q: La bottega ha 23 pere. Se ne vendono 20 e se ne comprano altre 6, quante pere hanno? |
Output | Output |
A: La risposta è 27 | A: La bottega ha inizialmente 23 pere. Ne vendono 20. Quindi hanno 23-20=3 pere. Ne comprano 6, quindi hanno 3+6=9. La risposta è 9. |
Giochi di parole, rompicapi, filastrocche, … ovunque ci sia un sotterfugio linguistico o comunque laddove l'AI generativa mostri una difficoltà nel restituire l'output (come nell'esempio precedente di Few-Shot Prompting), la Chain of Thought può rivelarsi un salvavita. Facciamo un secondo esempio partendo dal Few-Shot Prompting - che rimane comunque una valida tecnica che può continuare ad essere utilizzata:
Qual è il modo più veloce per andare al lavoro?
Opzione 1: prendi un autobus di 1000 minuti, poi un treno di mezz'ora e infine un giro in bicicletta di 10 minuti.
Opzione 2: prendi un autobus di 800 minuti, poi un'ora di treno e infine un giro in bicicletta di 30 minuti.
> L'opzione 1 è un modo più veloce per andare al lavoro.
In questo caso l'output è sbagliato. Per qualche motivo, durante l'elaborazione dell'output il modello ha interpretato male l'input di partenza generando un errore.
Potere alla Chain of Thought! Ecco come la CoT può venire in nostro aiuto per scrivere un prompt più efficace:
Qual è il modo più veloce per tornare a casa?
Opzione 1: prendi un autobus da 10 minuti, poi un autobus da 40 minuti e infine un treno da 10 minuti.
Opzione 2: prendi un treno di 90 minuti, poi un giro in bicicletta di 45 minuti e infine un autobus di 10 minuti.
L'opzione 1 richiederà 10+40+10 = 60 minuti.
L'opzione 2 richiederà 90+45+10=145 minuti.
Poiché l'opzione 1 richiede 60 minuti e l'opzione 2 richiede 145 minuti, l'opzione 1 è più veloce.
Qual è il modo più veloce per andare al lavoro?
Opzione 1: prendi un autobus di 1000 minuti, poi un treno di mezz'ora e infine un giro in bicicletta di 10 minuti.
Opzione 2: prendi un autobus di 800 minuti, poi un'ora di treno e infine un giro in bicicletta di 30 minuti.
> L'opzione 1 impiegherà 1000+30+10 = 1040 minuti.
L'opzione 2 impiegherà 800+60+30 = 890 minuti.
Poiché l'opzione 2 richiede 890 minuti e l'opzione 1 richiede 1040 minuti, l'opzione 2 è più veloce.
Il trucco, insomma, è guidare l’AI verso la soluzione istruendola sui processi logici effettuati per arrivare alla risposta corretta. Fornito qualche esempio essa diventa autonoma. È la logica del machine learning e del training, d'altronde.
Alcuni modelli di AI generativa integrano il processo di Chain of Thought automaticamente all'interno dei loro output, senza la necessità di includere stratagemmi per forzarne l'attivazione all'interno del prompt. Parliamo di sistemi come ad esempio:
• AgentGPT
• GodMode
I seguenti paragrafi di spiegazione di queste tecniche fanno dunque riferimento a LLM come ChatGPT, Perplexity e Bard che ancora non generano automaticamente output in "formato" CoT.
Si tratta di una tecnica estremamente efficace, ma possono esistere dei casi in cui fisiologicamente la sua applicazione risulti particolarmente complessa. Immaginiamo casi in cui l'LLM ci serve proprio per capire il ragionamento richiesto per il completamento di una task: è chiaramente impossibile fornire al modello le informazioni che stiamo cercando.
Per ovviare a questo problema esistono tecniche specifiche come la Zero-Shot Chain of Thought.
6.7. Zero-Shot Chain of Thought
Quindi, non possiamo dare suggerimenti (siamo dunque nel perimetro del "Zero-Shot") ad una catena di pensiero (Chain Of Thought), come possiamo risolvere una task che richiede un prompt più articolato da fornire al modello? Esattamente con lo Zero-Shot Chain of Thought, una tecnica che permette di far elaborare direttamente al modello il percorso logico da seguire.
La genialata - perché di colpo di genio si tratta - è frutto del lavoro di Kojima et al. 2022 che per risolvere questa problematica hanno introdotto una tecnica talmente essenziale e semplice da essere disarmante: basta aggiungere al prompt di cui serve l'esplicitazione del processo logico la frase "Let's think step by step".
Standard | Zero-Shot-CoT |
Q: in media Andre tira 25 pugni in un minuto. Un incontro dura 5 round di 3 minuti. Quanti pugni tira? | Q: in media Andre tira 25 pugni in un minuto. Un incontro dura 5 round di 3 minuti. Quanti pugni tira? A: Ragiona in step |
Un'altra tecnica molto banale, ma estremamente efficace: l'AI generativa in questo modo è forzata a interrogarsi circa i micro-passaggi necessari a rispondere alla domanda. I benefici di questo escamotage sono presto riportati all'interno del paper di Kojima et al. 2022: errori di output ridotti di decine di punti percentuale (!); output più precisi, complessi e consistenti. L'attivazione della tecnica può effettuarsi scrivendo la formula in vari formati come:
- "Ragiona passo dopo passo";
- "Ragiona step by step";
- "Let's think step by step".
Abbiamo testato la funzione e funziona correttamente anche combinando italiano e inglese. Ma vediamo nel dettaglio un esempio concreto:
Vado a comprare delle caramelle, ne metto nel sacchetto 10 rosse, poi ne aggiungo 2 blu, alla fine ne tolgo 5 perché volevo risparmiare, ma poi ne aggiungo altre 3 che però darò a un amico, quante caramelle avrò per me alla fine?
> Avrai 8 caramelle
Questo Zero-Shot Prompt genera un output erroneo. A questo punto è possibile applicare la tecnica di Few-Shot Prompting per fornire degli esempi di ragionamento, ma proviamo a tentare l'approccio Zero-Shot-CoT facendo ragionare "step by step" il modello per vedere cosa succede.
L'input quindi cambia così:
Vado a comprare delle caramelle, ne metto nel sacchetto 10 rosse, poi ne aggiungo 2 blu, alla fine ne tolgo 5 perché volevo risparmiare, ma poi ne aggiungo altre 3 che però darò a un amico, quante caramelle avrò per me alla fine? Ragiona step by step.
L'output è sorprendente:
> Dopo aver fatto tutte queste operazioni con le caramelle, ne avrai ancora 10 per te.
Inizialmente hai messo 10 caramelle rosse nel sacchetto, poi ne hai aggiunte 2 blu, per un totale di 12 caramelle nel sacchetto. Successivamente hai tolto 5 caramelle, quindi rimangono 7 caramelle. Infine, hai aggiunto altre 3 caramelle, ma hai specificato che queste le darai a un amico, quindi non le terrai per te.
Quindi, alla fine avrai ancora 10 caramelle nel sacchetto per te.
È successo esattamente quanto descritto in precedenza: il modello è stato costretto ad esplicitare i passaggi e questa semplice tecnica - senza che noi avessimo dovuto aggiungere ulteriori informazioni di contesto al prompt di input - gli hanno permesso di eliminare l'errore nell'output. Sbalorditivo, no?
Lo Zero-shot-CoT può essere utilizzato anche nell'elaborazione di prompt composti, cioè costituiti dalla costruzione di due richieste e output separati. Nell'immagine sottostante, a sinistra viene in primis generato un output in "stile" Chain of Thought (qui "ragiona step by step" fa costruire direttamente al LLM il ragionamento), che poi viene inserito all'interno di un secondo prompt (quello in alto a destra) che raccoglie l'output dal primo prompt (incluso il primo prompt stesso).
In termini tecnici il prompt a destra si definisce "self augmented prompt" (prompt auto-aumentato).
Intero processo di Zero-Shot-Chain-Of-Thought (Kojima et al.)
6.8. Autocoerenza
Cambiamo contesto. Facciamo finta di trovarci in una situazione in cui non siamo in grado di stabilire quale risposta sia corretta, né quale ragionamento sia giusto da seguire. Ciò può succedere con alcuni problemi matematici o in contesti che richiedono analisi di dati.
La tecnica che può venire in aiuto si definisce "Self-Consistency" (auto-coerenza) implica il campionamento di varie risposte a partire da Few-Shot Chain of Thought Prompting per poi utilizzare gli stessi output per stabilire quale sia la risposta migliore (più coerente) all'input iniziale.
Proposta da Wang et al. (2022), l'autoconsistenza: "Self-consistency aims to replace the naive greedy decoding used in chain-of-thought prompting".
L'autoconsistenza campiona una serie diversificata di percorsi di ragionamento, facendo leva sull'intuizione che un problema di ragionamento complesso in genere può essere risolto adottando soluzioni molto differenti tra loro. Si fornisce al modello un prompt con all'interno "coppie" di domande-risposte o input-output, ciascuna di esse correlate ad una precisa descrizione del processo di pensiero (utilizzando se serve la tecnica di Chain of Thought) che la costituisce.
Per sfruttare l'auto-coerenza del LLM serve svolgere, dunque, alcuni passaggi:
- Identificare il problema su cui interrogare il modello;
- Creare una serie di prompt che affrontano il problema da diverse prospettive o "angolazioni": ogni prompt dovrebbe fornire un percorso di ragionamento univoco che l'IA deve seguire;
- Far generare risposte al LLM;
- Valutare le risposte analizzandole per determinarne correttezza, pertinenza e coerenza. Questo passaggio può comportare il confronto reciproco delle risposte, la ricerca di temi o modelli comuni e il controllo della coerenza logica interna;
- Selezionare la risposta migliore.
Utilizzando alcuni prompt di esempio presi dal paper di Wang et al. 2022:
Q: There are 15 trees in the grove. Grove workers will plant trees in the grove today. After they are done,there will be 21 trees. How many trees did the grove workers plant today?
A: We start with 15 trees. Later we have 21 trees. The difference must be the number of trees they planted.So, they must have planted 21 - 15 = 6 trees. The answer is 6.
Q: If there are 3 cars in the parking lot and 2 more cars arrive, how many cars are in the parking lot?
A: There are 3 cars in the parking lot already. 2 more arrive. Now there are 3 + 2 = 5 cars. The answer is 5.
Q: Leah had 32 chocolates and her sister had 42. If they ate 35, how many pieces do they have left in total?
A: Leah had 32 chocolates and Leah’s sister had 42. That means there were originally 32 + 42 = 74chocolates. 35 have been eaten. So in total they still have 74 - 35 = 39 chocolates. The answer is 39.
Q: Jason had 20 lollipops. He gave Denny some lollipops. Now Jason has 12 lollipops. How many lollipopsdid Jason give to Denny?
A: Jason had 20 lollipops. Since he only has 12 now, he must have given the rest to Denny. The number oflollipops he has given to Denny must have been 20 - 12 = 8 lollipops. The answer is 8.
Q: Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys doeshe have now?
A: He has 5 toys. He got 2 from mom, so after that he has 5 + 2 = 7 toys. Then he got 2 more from dad, soin total he has 7 + 2 = 9 toys. The answer is 9.
Q: There were nine computers in the server room. Five more computers were installed each day, frommonday to thursday. How many computers are now in the server room?
A: There are 4 days from monday to thursday. 5 computers were added each day. That means in total 4 * 5 =20 computers were added. There were 9 computers in the beginning, so now there are 9 + 20 = 29 computers.The answer is 29.
Q: Michael had 58 golf balls. On tuesday, he lost 23 golf balls. On wednesday, he lost 2 more. How manygolf balls did he have at the end of wednesday?
A: Michael initially had 58 balls. He lost 23 on Tuesday, so after that he has 58 - 23 = 35 balls. On Wednesday he lost 2 more so now he has 35 - 2 = 33 balls. The answer is 33.
Q: Olivia has $23. She bought five bagels for $3 each. How much money does she have left?
A: She bought 5 bagels for $3 each. This means she spent 5
Q: When I was 6 my sister was half my age. Now I’m 70 how old is my sister?
A:
A questo punto sottoponiamo il prompt più volte al motore per leggere gli output che ci vengono forniti. Il primo output è il seguente: "When I was 6 my sister was half my age, so she was 3. Now I am 70, so she is 70 - 3 = 67. The answer is 67."
Il secondo output è il seguente: "When the narrator was 6, his sister was half his age, which is 3. Now that the narrator is 70, his sister would be 70 - 3 = 67 years old. The answer is 67."
Il terzo output è il seguente: "When I was 6 my sister was half my age, so she was 3. Now I am 70, so she is 70/2 = 35. The answer is 35."
Decifrare la risposta finale (quella più coerente) richiede alcuni passaggi (Wang et al. (2022) ma, per semplicità, è già possibile vedere come stia già emergendo una risposta statisticamente più frequente, che potrebbe effettivamente essere quella definitiva.
6.9. Conoscenza Generata
Un'altra tecnica funzionale per risolvere problematiche complesse è utilizzare il cosiddetto approccio di "Generated Knowledge" (Conoscenza generata). L'idea alla base dell'approccio è quello di chiedere al LLM di generare informazioni potenzialmente utili su una data domanda/richiesta prima di porre la domanda effettiva su quell'argomento.
In poche parole si tratta di far generare il contesto direttamente al modello, per poi utilizzarlo all'interno di un secondo prompt ("prompt composto"). Ciò aiuterà il LLM a scrivere un contenuto più completo e arricchito di informazioni.
Per mettere in pratica questa tecnica esistono due approcci.
Il primo approccio è il Single prompt approach. Ovvero utilizzando un singolo prompt. Nello stesso messaggio, dunque, si digitano sia la domanda che le informazioni da utilizzare per sviluppare il contenuto:
Genera 4 curiosità sull'Italia, quindi usale per scrivere un piccolo contenuto di blog utilizzando le seguenti informazioni:
L'Italia, ufficialmente nota come Repubblica Italiana, è uno Stato membro dell'Unione europea situato nell'Europa meridionale e occidentale. Il suo territorio coincide in gran parte con l'omonima regione geografica. L'Italia è una repubblica parlamentare unitaria con una popolazione di circa 59 milioni di abitanti, posizionandosi come il terzo Stato dell'Unione europea per numero di abitanti. La capitale è Roma.
Geograficamente, l'Italia è delimitata dall'arco alpino e confina a nord, da ovest a est, con Francia, Svizzera, Austria e Slovenia. La penisola italiana si estende nel mar Mediterraneo ed è circondata dai mari Ligure, Tirreno, Ionio e Adriatico, nonché da numerose isole, tra cui le più grandi sono Sicilia e Sardegna. L'intera estensione del territorio italiano è di 302.068,26 km². Gli Stati della Città del Vaticano e di San Marino sono enclavi della Repubblica Italiana, mentre Campione d'Italia è un'exclave della Repubblica Italiana e un'enclave della Confederazione Svizzera.
L'Italia ha una storia ricca, essendo stata un crocevia di numerose culture preistoriche. Fu unificata dall'antica civiltà romana, diventando il centro amministrativo, economico, culturale e politico dell'Impero romano. Dopo la caduta dell'Impero romano d'Occidente, l'Italia medievale fu soggetta a invasioni e dominazioni di popolazioni barbariche, perdendo la sua unità politica. Tuttavia, tra il XV e il XVI secolo, con la diffusione dell'Umanesimo e del Rinascimento, l'Italia tornò ad essere il centro culturale del mondo occidentale e fu anche il campo di battaglia delle maggiori potenze europee durante le guerre d'Italia. Successivamente, la penisola conobbe la controriforma, il barocco e il neoclassicismo.
Il secondo approccio è il Dual prompt approach. Ovvero utilizzando più di un prompt, nello specifico almeno due. In un primo input chiederemo informazioni al modello circa l'argomento di cui vorremmo informazioni: "Genera 4 curiosità sull'Italia."
Quindi utilizziamo l'output generato dal primo prompt per costruire il prompt con la vera richiesta:
L'Italia è famosa per la sua ricca tradizione culinaria, ma sapevi che il gelato italiano ha origini antiche? Si dice che il gelato sia stato inventato a Firenze nel XVI secolo, durante il Rinascimento. Oggi, l'Italia è conosciuta per la sua produzione di gelato artigianale di alta qualità.
L'Italia è il paese con il maggior numero di siti dichiarati patrimonio dell'umanità dall'UNESCO. Con ben 58 siti, tra cui il Colosseo, Pompei, la Città del Vaticano e gli affreschi di Leonardo da Vinci nella Basilica di Santa Maria delle Grazie a Milano, l'Italia offre una straordinaria varietà di tesori culturali e naturali.
L'Italia è stata la culla di molte delle più grandi opere d'arte e capolavori del mondo. Alcuni dei più famosi artisti italiani includono Leonardo da Vinci, Michelangelo, Raffaello e Caravaggio. Le loro opere, come la Gioconda e la Cappella Sistina, sono ammirate e studiate in tutto il mondo.
L'Italia è sede di una delle corse di automobili più prestigiose e antiche del mondo, la Mille Miglia. Questa gara di velocità su strada aperta si svolgeva tra il 1927 e il 1957, e successivamente è stata ripristinata come una competizione di auto storiche. Ogni anno, migliaia di appassionati di auto si riuniscono per assistere alla Mille Miglia e ammirare auto d'epoca mentre attraversano splendidi paesaggi italiani.
Scrivi un breve articolo di blog contenente queste informazioni.
6.10. Least to Most (LtM): scomporre il problema
Il Least to Most prompting (LtM) fa compiere un ulteriore passo avanti al Chain of Thought Prompting scomponendo un problema in tanti piccoli sotto-problemi per farli risolvere uno alla volta.
È una tecnica che trae ispirazione dalle strategie educative adottate in ambito educativo pedagogico, per far comprendere problemi complessi ai bambini. Esattamente come nel prompt CoT, il problema da risolvere viene scomposto e riformulato in "forma" di sotto-problemi sequenziali, che verranno in un secondo momento risolti uno per volta. La differenza rispetto all'approccio CoT è che la soluzione dei sotto-problemi già risolti viene inserita all'interno del prompt che prova a risolvere il sotto-problema problema successivo, andando ad arricchire il contesto a disposizione del modello.
Facciamo un esempio partendo ancora una volta da un Zero-Shot Prompt:
Q: palla, runner
A: ar
Q: airbag, genitore, bottiglia
A: gea
Q: intelligente, prompt
A: et
Q: transformer, uova, disk, aereo
A: rako
Q: png, rar, mp3, ggl
A:
> lip
Lo Zero-Shot ha fallito un'altra volta. Proviamo con la Chain of Thought:
Q: palla, runner
A: L'ultima lettera di palla è "a". L'ultima lettera di runner è "r". La risposta è "ar"
Q: airbag, genitore, bottiglia
A: L'ultimo carattere di airbag è g, di genitore e, di bottiglia a. La risposta è gea
Q: intelligente, prompt
A: "Intelligente" finisce con "e", mentre "Prompt" finisce in "t". Quindi la risposta è et
Q: transformer, uova, disk, aereo
A: Transformer finisce in "r". Uova finisce in "a". Disk finisce in "k". Aereo finisce in "o". La risposta è "rako"
Q: png, rar, mp3, ggl
A:
> L'ultima lettera di png è "g". L'ultima lettera di "rar" è "r". L'ultima lettera di mp3 è "3". L'ultima lettera di "ggl" è "l". La risposta è gr3l
Lo stesso prompt formulato con la tecnica Least to Most diventerebbe:
Q: palla, runner
A: L'ultima lettera di palla è "a". L'ultima lettera di runner è "r". Concatenando "a" e "r" viene "ar".
La risposta è "ar"
Q: airbag, genitore, bottiglia
A: L'ultimo carattere di airbag è "g". L'ultimo carattere di genitore è "e". Concatenando "g" e "d" viene "ge". L'ultimo carattere di bottiglia è "a". Concatenando "ge" con "a" viene "gea".
La risposta è "gea"
Q: intelligente, prompt
A: "Intelligente" finisce con "e", mentre "Prompt" finisce in "t". Concatenando "e" e "t" viene "et".
Quindi la risposta è "et"
Q: transformer, uova, disk, aereo
A: Transformer finisce in "r". Uova finisce in "a". Concatenando "r" e "a" viene "ra". Disk finisce in "k". Concatenando "ra" con "k" viene "rak". Aereo finisce in "o". Concatenando "rak" con "o" viene "rako".
La risposta è "rako"
Q: png, rar, mp3, ggl, ciao, come, stai, tutto, bene
A:
> L'ultima lettera di png è "g". L'ultima lettera di "rar" è "r". Concatenando "g" e "r" viene "gr". L'ultima lettera di mp3 è "3". Concatenando "gr" con "3" viene gr3". L'ultima lettera di "ggl" è "l". Concatenando "gr3" con "l" viene gr3l. [...]. La risposta è "gr3loeioe"
Qual è la differenza? La differenza fondamentale sta nell'accuratezza dell'output: il metodo Least To Most in un problema in cui vengono concatenate fino a 12 parole restituisce risultati esatti nel 74% dei casi, mentre la tecnica Chain of Thought solo nel 34% (utilizzando il modello text-davinci-002).
6.11 Tree of Thought Prompting
Il Tree of Thought (ToT) prompting è una nuova tecnica di costruzione di input che prende in prestito idee dal framework Tree-of-Thoughts, ampliando e migliorando la tecnica della Chain of Thought: il percorso CoT è singolo e lineare, mentre quello ToT si basa su una strategia maggiormente dinamica e flessibile, simile ad una mappa concettuale composta da più rami.
Ecco una rappresentazione grafica del framework:
La novità che introduce questa tecnica è quella per cui essa consente ai LLM di correggere autonomamente i propri errori accumulando progressivamente conoscenza.
Il framework ToT conferisce inoltre all'IA la capacità di valutare la qualità degli output, introducendo un meccanismo di autovalutazione per poter decidere la linea d'azione da adottare successivamente. L'IA viene quindi messa nelle condizioni di anticipare passaggi successivi, ma anche di valutare e rivalutare scelte e decisioni passate, in modo da poter prendere decisioni successive da lì in poi. Un modello che si autoregola, in pratica.
In un esempio, un prompt ToT migliora la capacità di ragionamento di ChatGPT 3.5 per rispondere a una domanda a cui in precedenza poteva essere data risposta solo da ChatGPT 4.
I Large Language Models (LLM) spesso faticano a rispondere a determinati tipi di domande complesse. Ecco un esempio rappresentativo:
Bob è in soggiorno.
Va in cucina, portando una tazza.
Mette una palla nella tazza e porta la tazza in camera da letto.
Capovolge la tazza, poi va in giardino.
Posa la tazza in giardino, poi va in garage.
Dov'è la palla?
La palla è in camera da letto, ma dal momento che i LLM non sono deterministici, durante diversi tentativi gli output ricevuti sono stati:
- da ChatGPT 3.5: la palla è in giardino.
- da ChatGPT 4: la palla è in camera da letto, con a seguito una spiegazione del ragionamento utilizzato
Pensiamo alla definizione di Tree of Thought: come si mette in moto un framework in grado di mettere un modello nelle condizioni di autoregolarsi? Con la creatività. Proviamo a comporre il prompt precedente con la seguente aggiunta:
Immagina che tre diversi esperti stiano rispondendo a questa domanda.
Tutti gli esperti scriveranno 1 passo del loro pensiero,
quindi condividilo con il gruppo.
Quindi tutti gli esperti passeranno al passaggio successivo, ecc.
Se un esperto si rende conto di aver sbagliato in qualsiasi momento, torna sui suoi passi.
La domanda è:
Bob è in soggiorno.
Va in cucina, portando una tazza.
Mette una palla nella tazza e porta la tazza in camera da letto.
Capovolge la tazza, poi va in giardino.
Posa la tazza in giardino, poi va in garage. Dov'è la palla?
Diventa molto interessante leggere l'output di risposta:
Esperto 1: La palla è nel soggiorno.
Esperto 2: La palla è in cucina.
Esperto 3: La palla è in camera da letto.
Esperto 1: Bob porta la coppa in camera da letto, quindi la pallina deve essere nella coppa.
Esperto 2: Oh, capisco il mio errore. Sì, la palla è nella coppa.
Esperto 3: D'accordo, la palla è nella tazza in camera da letto.
Esperto 1: Successivamente, Bob capovolge la tazza in camera da letto.
Esperto 2: Dopodiché, Bob va in giardino e posa la tazza.
Esperto 3: Pertanto, la palla deve essere caduta dalla tazza quando Bob l'ha capovolta in camera da letto. Quindi, la palla è in camera da letto, non più nella tazza.
Esperto 1: Oh, hai ragione. Ho fatto un errore. La palla è in camera da letto, non nella coppa.
Esperto 2: D'accordo, la palla è in camera da letto.
Esperto 3: Bob poi va in garage, quindi la palla rimane in camera da letto. Non è in giardino o in garage.
Esperto 1: Assolutamente, la palla è ancora in camera da letto.
Esperto 2: Sì, la palla non si è mossa dalla camera da letto.
Esperto 3: Quindi la palla è in camera da letto, non in giardino o in garage.
Tutti e tre gli esperti concordano sul fatto che la palla sia in camera da letto.
Si tratta di un esempio molto stupido e c'è grande manovra per perfezionare la domanda sotto molti punti di vista portando, potenzialmente, a risposte più concise, ma ci basta che passi il concetto.
La risposta è perfettamente coerente con il grafico mostrato a inizio paragrafo: una mappa concettuale che viene vista, rivista, valutata e rivalutata continuamente fino a quando il modello non arriva ad elaborare la risposta più coerente - in grado di mettere d'accordo tutti gli "esperti".
Con l'approccio ToT:
- l'IA è in grado di spaziare attraverso intricate logiche problematiche, prendendo decisioni ottimali autonomamente;
- l'IA riesce a ridurre di molto gli errori bias-oriented, riuscendo ad elaborare il problema a partire da prospettive multiple;
- portano a risultati sono nettamente superiori.
Per attivare questa tecnica, dunque, è sufficiente mettere il modello nelle condizioni di
- vedere il problema da più punti di vista ("3 esperti");
- scomporre il problema ("ogni esperto scrivono 1 passo alla volta");
- valutare e rivalutare le risposte ("le risposte vengono condivise tra gli esperti");
- possibilità di correggersi ("l'esperto può tornare sui suoi passi");
- Scrittura creativa, processi decisionali, strategie si applicano bene a questo framework, che dà la possibilità di espandere ulteriormente i confini di utilizzo dell'AI.
7. Conclusioni
Concludiamo qui l'articolo, ma ci sarebbe da raccontare molto di più. Volevamo scrivere questa guida avanzata per dare dimostrazione dell'incredibile potenzialità dell'AI generativa, generale e nello specifico di ChatGPT, ma anche per sensibilizzare circa la necessità di sviluppare competenze più o meno avanzate in materia di prompt design ed engineering per poterne sfruttare a pieno il potenziale - nonché per non incorrere nei principali errori e limiti di questa tecnologia.
Se siamo arrivati a fornire questa base di sensibilità ci definiamo soddisfatti. Crediamo che questo strumento sia efficace anche per districarsi nel mare di disinformazione presente oggi sul tema dell'AI e sui possibili risvolti apocalittici e tenebrosi della sua propagazione (l'ultimo, in ordine cronologico, la notizia secondo cui "In una simulazione bellica un drone guidato da intelligenza artificiale si è ribellato al suo operatore e l'ha ucciso").
L'AI è già un argomento abbastanza complesso senza che giornalisti sprovveduti di sensibilità - o ancor peggio in malafede - inizino a giocare con i titoli degli articoli.
Vi lasciamo con l'auspicio di avervi suscitato la curiosità necessaria a continuare ad esplorare ulteriormente questo mondo (ad esempio le integrazioni di ChatGPT tramite API in azienda) e gli universi del prompt engineering e del prompt design, già da molti osservatori descritti come alcune dell skill che si svilupperanno maggiormente in futuro.
CHI L’HA SCRITTO?
Riminese, classe '94. Nel mondo del marketing da oltre 10 anni, tra lavoro e progetti personali. Oggi Platform Business Leader in ihealthyou e DD, dove seguo progetti su sanità, AI, metaverso e web3.0. Pieno di passioni, podio a ciclismo, fitness e libri.