58. Come fare domande ad un LLM (prompt engineering)
In questa puntata ti parlo di legal prompting e prompt engineering con esempi pratici ed approfondimenti sulle tecniche principali per scrivere un prompt in modo efficace. Proseguo nell’approfondimento della puntata 56.
Note dell’episodio
Come sempre, se ti è piaciuto quel che hai letto, ascoltato o visto e non l’hai già fatto, ti suggerisco di iscriverti alla mia newsletter.
Ti avvertirò dei nuovi articoli che pubblico (oltre ai podcast e video su YouTube) e, mensilmente, ti segnalerò articoli che ho raccolto nel corso del mese ed ho trovato interessanti.
Qui trovi la registrazione in video della puntata non editata.
Link
- Newsletter: se vuoi rimanere aggiornato sulle mie pubblicazioni.
- Prompt Engineering: guida ben fatta anche in italiano.
- Open WebUI
- Tika
- SearXNG
Sinossi
Ti ricordo che la sinossi è generata dalla IA in particolare usando la trascrizione del podcast fatta con l’app Transcriber dell’amico Alex Raccuglia (trovi le sue tante applicazioni su Ulti.media) e NotebookLM.
Comunicazioni di servizio
- Tra fine maggio e giugno è previsto lo spostamento del podcast da Squarespace, con i primi test già avviati.
- Il nuovo indirizzo previsto sarà compendium.avvocati-e-mac.it, con un redirect da avvocati-e-mac.com/podcast una volta completato il passaggio.
Dal Legal Prompting al Prompt Engineering
- Questa puntata (la 58) si collega alla puntata precedente (la 56), che trattava il legal prompting.
- Secondo l'autore, il legal prompting non è fondamentale; è più interessante imparare a scrivere prompt efficaci, ovvero il normale prompt engineering.
- La puntata si concentra sulle tecniche vere e proprie di prompt engineering basate su ricerche approfondite.
- Imparare il prompt engineering è più efficace e importante per ottenere i maggiori risultati dai Large Language Model (LLM).
- Il prompt engineering non è l'unico aspetto da conoscere per sfruttare correttamente gli LLM e non commettere errori; è importante approfondire anche altri aspetti come le "allucinazioni".
- Il legal prompting da solo non è la soluzione a tutti i problemi.
Cos'è il Prompt Engineering
- Il Prompt Engineering si riferisce al processo di creazione e ottimizzazione delle istruzioni (prompt) per i sistemi di intelligenza artificiale, in particolare gli LLM, al fine di ottenere risposte pertinenti, accurate e utili.
- Sebbene l'episodio sia fatto nell'ottica legale, gli esempi non saranno focalizzati solo su questo ambito, ma anche su altre attività svolte con gli LLM.
- Viene segnalata come risorsa una guida al Prompt Engineering disponibile nelle note dell'episodio.
System Prompt vs User Prompt
- È fondamentale distinguere tra System Prompt (Prompt di sistema) e User Prompt (Prompt dell'utente).
- Il System Prompt è un prompt generale che governa tutte le risposte dell'LLM in un determinato contesto.
- In sistemi come Open Web UI, il System Prompt è personalizzabile per ogni chat, permettendo di inserire informazioni generali senza ripeterle nell'User Prompt.
- Il System Prompt, in estrema sintesi, viene inserito prima dell'User Prompt vero e proprio e aiuta a uniformare la strutturazione della domanda.
- LLM online a volte hanno System Prompt di base sconosciuti o modificabili dalle aziende, il che può influenzare le risposte.
- L'User Prompt è la domanda specifica posta dall'utente o una serie di domande in una chat.
- Le tecniche per l'User Prompt si applicano in gran parte anche al System Prompt, sebbene gli scopi siano differenti.
Capire gli LLM
- Le regole di Prompting nascono dalla comprensione di come funzionano gli LLM.
- Un LLM è un generatore di testo statistico, che produce il testo più probabile.
- Gli LLM sono addestrati su testi disparati.
- Domande generiche o non strutturate senza contesto specifico portano a risposte "mediane", basate sulla media dei testi di allenamento.
- Gli LLM non hanno intuito o contesto umano; è necessario essere molto chiari, descrittivi e specifici su cosa si vuole ottenere e sul risultato atteso.
- Spesso sono necessarie più interazioni (chat) per raffinare la domanda e ottenere risposte adeguate.
- Una domanda ben posta porta a ottime risposte, mentre una mal formulata no.
- Il processo di iterazione con l'LLM può essere un metodo di autoapprendimento per capire come formulare meglio le domande.
Regole Generali di Prompt Engineering
- Bisogna avere un obiettivo o scopo specifico e descrivere chiaramente il compito per l'LLM.
- Il linguaggio deve essere chiaro e preciso.
- Un trucco utile è chiedere all'LLM di riformulare il proprio prompt per renderlo più chiaro o di fare domande sulla domanda per tirare fuori l'obiettivo.
- È fondamentale considerare le aspettative sul formato della risposta.
- Gli LLM possono generare risposte in formati specifici come elenchi puntati, paragrafi brevi, tabelle o testi per email.
- Una caratteristica potente degli LLM è la capacità di strutturare i dati, anche in formati come JSON.
- Viene mostrato un esempio di come un LLM può decostruire una sentenza della Cassazione e ricostruirla in formato JSON.
- Viene fatto un esempio pratico non legale: usare un LLM per estrapolare argomenti e creare i timestamp per i capitoli di un video YouTube da una trascrizione.
- Il formato della risposta non va sottovalutato ed è stato oggetto di un focus specifico.
- È cruciale spiegare il contesto, poiché l'LLM non conosce la situazione dell'utente.
- Viene mostrato un esempio di prompt strutturato trovato online per generare capitoli YouTube, sebbene lungo.
- Viene mostrato un prompt alternativo creato dall'autore, molto più semplice ma efficace, per lo stesso scopo.
- I prompt più semplici possono funzionare bene, soprattutto con LLM più potenti che richiedono minore specificità.
Sperimentare e Salvare i Prompt
- Il modo migliore per migliorare è sperimentare e salvare i prompt.
- Tenere un archivio dei prompt e svilupparli nel tempo è consigliato.
- L'autore utilizza Obsidian per prendere appunti sui prompt, formattandoli come codice per facilitare la copia.
- Viene descritto un sistema personale per organizzare i prompt basato sul nome dell'LLM e una descrizione.
- Un prompt creato per un LLM specifico (es. Notebook LM) potrebbe non funzionare allo stesso modo su un altro (es. ChatGPT).
Esempio di System Prompt Legale
- Viene presentato un esempio di System Prompt utilizzato in ambito legale con LLM locali (Open Web UI).
- Il prompt specifica il ruolo dell'LLM ("assistente legale italiano nel settore civile") e il compito ("esamina la fattispecie, individua norme e giurisprudenza, argomenta in base ai risultati, cita sempre riferimenti").
- Vengono sottolineati i verbi specifici e chiari utilizzati nel prompt (esamina, individua, argomenta, cita).
- Sono incluse preferenze di formattazione (norme in grassetto, massime giurisprudenziali in corsivo) con esempi (one shot).
- Una regola importante per cercare di evitare le allucinazioni è istruire l'LLM a rispondere "non ho le informazioni per risponderti" se non sa la risposta.
- Le allucinazioni sono una funzione degli LLM di generare testo verosimile ma non veritiero; questo sistema non risolve il problema completamente ma aiuta.
- L'autore inserisce sempre la "catena di pensiero" ("ragiona passo passo e segui un filo logico") anche se alcuni LLM la implementano già.
- Il prompt di sistema mostrato viene utilizzato anche per ricerche web, chiedendo all'LLM di trovare informazioni online e restituire risposte con citazioni dalle fonti web.
- Dare un indirizzo prevalentemente legale a un LLM è utile per ottenere risposte più sensate e appropriate nel mondo legale, anche se un LLM non può sostituire un avvocato.
Tecniche Avanzate (Zero Shot, One Shot, Few Shot, Chain of Thought)
- Gli LLM moderni, nati per il completamento del testo, funzionano bene in chat grazie ai "transformer" e alla capacità di "attenzione".
- Lo Zero Shot consiste nel fare una domanda secca all'LLM aspettandosi una risposta diretta senza esempi.
- In alternativa allo Zero Shot, si può usare la chat per iterare e raffinare la risposta attraverso un dialogo.
- L'approccio via chat può essere comodo per tentativi, come nel caso dell'autore che ha chattato con un'IA per creare un programma non sapendo programmare.
- Nel mondo legale, l'autore tende a usare l'approccio Zero Shot, strutturando e raffinando prompt specifici.
- Il One Shot e il Few Shot consistono nel dare degli esempi di risultato all'LLM direttamente nel prompt. Questo aiuta a ottenere un risultato più preciso, come visto nell'esempio dei capitoli YouTube.
- La Chain of Thought (catena di pensiero) si basa sull'osservazione che quando l'LLM "ragiona" sulla risposta, il risultato è solitamente migliore.
- Nei nuovi LLM, c'è una parte di "pensiero" prima della risposta finale.
- Anche per modelli che non ragionano intrinsecamente, frasi come "pensiamo passo dopo passo" o "ragiona passo passo e segui un filo logico" aiutano a ottenere risposte più centrate.
Dare le Fonti agli LLM
- Dare le fonti all'LLM è una tecnica molto efficace.
- Il modo più semplice è inserire direttamente il testo della fonte nel prompt, come copiare il testo di una sentenza. Questo approccio è limitato dalla finestra di contesto.
- Un modo più efficace è utilizzare i tag XML per delimitare il testo della fonte all'interno del prompt. Questo struttura i dati e permette di fare riferimento alla fonte (es.
<documento>...</documento>
). - La fase successiva per documenti grandi o finestre di contesto limitate è la RAG (Retrieval Augmented Generation).
- La RAG spezzetta il documento e, in base alla domanda, estrae le porzioni di testo più attinenti da inserire nel prompt.
- L'autore sta sperimentando la RAG con il codice civile e di procedura civile in Open Web UI, ottenendo risultati molto centrati e corretti. Il system prompt legale menzionato in precedenza è spesso usato in questo caso.
- L'approccio più evoluto è l'interazione con ricerche online. L'LLM va online, fa ricerche, acquisisce le fonti e genera una risposta basata su di esse.
- L'autore è riuscito a far fare ricerche online a LLM locali usando software come Tika e SearXNG.
- Questo approccio restituisce non solo la risposta ma anche un elenco delle fonti utilizzate, utile per approfondire e verificare.