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 WebUITikaSearXNGSinossi
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. ...).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.