#The Sunday Prompt #46 – 24/11/2024
Bentornati!Â
Tra le tecniche “avanzate” di prompting una che può essere molto utile, soprattutto per esaminare documenti o per far eseguire in generale compiti complessi, è quella del Prompt Chaining”, utilizzabile con CHatGPT e gli altri Large Language Models.
Questa metodologia prevede di utilizzare una serie di prompt collegati fra loro consentendo di suddividere un problema complesso in sottofasi facilmente gestibili. In particolare, ogni prompt della “catena” utilizza l’output derivante dal prompt precedente, creando un flusso logico (quasi un diagramma di flusso) per arrivare a un risultato finale.
La tecnica è stata proposta nel 2022 tramite un paper intitolato “PromptChainer: Chanining Large çanguage Model Prompt throught Visual Programming” (che trovate a questo link https://arxiv.org/abs/2203.06566) accompagnato da una web-app che vedremo in seguito.
A cosa serve il prompt chaining
Come anticipato il prompt chaining è molto utile quando è necessario eseguire un compito complesso (un pò come quando si usano gli agenti) che richiederebbe una serie di prompt per poter essere esaustivamente risolto.
E’ diverso dalla Chain Of Thought, in quanto questa è utilizzata nel singolo prompt, mentre questa tecnica prevede di collegare tra loro le interazioni e gli output delle stesse.
Il prompt chaining è molto utile se vogliamo analizzare documenti corposi o risolvere problemi complessi. Ciò perchè riduce la probabilità di errori dovuti a richieste troppo generiche, risultando così più coerente, è scalabile, nel senso che il numero di prompt dipendono dal compito che vogliamo risolvere, e non ci sono limitazioni in tal senso, ed, infine, consente di essere personalizzato.
I concetti di base
La tecnica è abbastanza semplice: è necessario definire in maniera puntuale il flusso di compiti che vogliamo svolgere al LLM, considerando l’output di ogni prompt come input per la domanda successiva in una sequenza del genere:
prompt -> output -> prompt -> output
La particolarità è che l’output generato potrà essere anche modificato o integrato con ulteriori informazioni così da introdurre maggior contesto e specificità nel prompt successivo.
In realtĂ ci sono diverse tipologie di prompt chaining, che possiamo individuare in:
- Linear Chaining
Ogni step dipende direttamente dal precedente, creando una sequenza ordinata. - Branching Chaining
Da un singolo prompt iniziale, si diramano diversi flussi paralleli che poi possono convergere. - Iterative Chaining
Il modello viene interrogato iterativamente per affinare i risultati. - Conditional Chaining
Il flusso cambia in base ai risultati intermedi.
Come si fa
Per eseguire il prompt chaining ci sono diversi metodi.Â
Il più semplice è quello di disegnare una sorta di diagramma di flusso per immaginare la sequenza di input ed output che vogliamo creare, per poi inserirla all’interno dell’interfaccia dell’applicazione che utilizziamo per interagire con il LLM.
Sul sito di Anthropic è presente un esempio riferito all’analisi di un contratto che è molto interessante.
Il sito suggerisce di:
- Identificare i sub-task: suddividere il task in passaggi distinti e sequenziali
- Usare XML: utilizzare tag XML per passare gli output tra i prompt
- Identificare un obiettivo per ogni singolo task: ogni sottoattivitĂ dovrebbe avere un singolo obiettivo chiaro.Â
- Iterare: perfezionare i sub-task in base ai risultati ottenuti
L’esempio relativo al contratto è volto a identificare i rischi di alcune clausole, per poi predisporre una email da inviare alla controparte.Il primo prompt quindi si occupa del compito di classificazione:
You’re our Chief Legal Officer. Review this SaaS contract for risks, focusing on data privacy, SLAs, and liability caps.
<contract>
{{CONTRACT}}
</contract>
Output your findings in <risks> tags.
Il secondo prompt prende i risultati del primo, e chiede di scrivere la email:
Draft an email to a SaaS product vendor outlining the following concerns and proposing changes. Here are the concerns:
<concerns>
{{CONCERNS}}
</concerns>
Il terzo prompt valuta il tono, chiarezza e professionalità del testo delle email che costituiscono l’output del secondo prompt, e fornisce suggerimenti di scrittura:
Your task is to review an email and provide feedback. Here is the email:
<email>
{{EMAIL}}
</email>
Give feedback on tone, clarity, and professionalism.
Strumenti avanzati: il promptchainer
Seppur l’esempio sopra indicato dal sito di Anthropic chiarisce il meccanismo del prompt chaining, in realtà immaginare la sequenza input/output non è così semplice soprattutto quando dobbiamo strutturare compiti complessi e in molte fasi.
Alcune librerie come LangChain o LlamaIndex integrano questa tecnica, ma per usarle è necessario conoscere Python e saper destreggiarsi con il codice.
Ci sono anche strumenti “No-Code” come Zapier e Make che hanno integrato delle funzionalità che consentono di creare dei flussi di lavoro multi-step per realizzare degli output tramite LLM.
Uno strumento espressamente dedicato alla costruzione di “catene” di prompt è il PromptChainer.
Si tratta di una versione beta, disponibile sul sito https://www.promptchainer.io/ che però è interessante perchè consente di visualizzare graficamente il flusso di input ed output che vogliamo creare, facilitando così la realizzazione del flusso di prompt.
Nel PromptChainer è possibile inserire le chiavi API di OpenAI (se le avete attivate) e andare a costruire, tramite l’applicazione visuale, i vari anelli della catena, potendo ogni volta definire quale output costituirà l’input del successivo prompt.
Qui di seguito un’immagine di uno screenshot.
Premendo il tasto RUN, se sono state inserite le chiavi di OpenAI, si potranno vedere i risultati della nostra catena di prompt.
Onestamente l’app è ancora allo stato beta e la sua utilità in condizioni reali non è alta. E’ invece un ottimo modo per “progettare” il nostro flusso di prompt chaining, per poi eventualmente riportarlo in maniera testuale all’interno delle interfacce degli LLM. Vale sicuramente la pena di provarlo, per potenziare le nostre interazioni con gli strumenti di GenAI!
E’ uscito Coding per Giuristi!Â
Per tutti voi che seguite The Sunday Prompt una grande novitĂ !
E’ appena uscito per Giuffrè nella collana “AI e diritto” il libro “Coding per giuristi. Dal browser all’intelligenza artificiale” scritto da Roberto Alma, Massimiliano Nicotra, Lorenzo Piatti e Giuseppe Vaciago.Il libro è un’ottima occasione per comprendere le fondamenta del coding, ma, soprattutto, contiene un’apposita sezione sul prompt engineering, e sulle varie metodologie e tecniche che costituiscono tale disciplina!
Lo trovate qua: https://shop.giuffre.it/024223463-coding-per-giuristi
Gli iscritti alla newsletter via email ricevono invece un diverso contenuto con strumenti e tool – massimo 4 a settimana – che possono essere utilizzati e che usano l’AI per ottimizzare il lavoro.Â
Per ricevere la newsletter via email iscrivetevi su https://the-sunday-prompt.ck.page/f260e8dd80
Happy Prompting!