Prompt chaining per attività legali complesse – IA e Avvocati (16)
Intelligenza artificiale e Avvocati
Scopri come automatizzare attività complesse come la sintesi di atti, l’analisi normativa e la redazione assistita grazie al prompt chaining, una tecnica avanzata per avvocati AI-ready.
Introduzione
Nella pratica forense quotidiana, molte attività giuridiche non si esauriscono in un’unica azione.
Un documento legale può essere letto, sintetizzato, confrontato con norme o atti analoghi, e successivamente rielaborato in una bozza.
Tutte queste fasi richiedono una logica multi-step ben definita.
Il prompt chaining è la tecnica che consente di orchestrare sequenze di richieste all’IA in modo strutturato, tracciabile e replicabile, dando vita a veri e propri flussi di lavoro giuridici intelligenti.
In questo articolo, spieghiamo che cos’è il prompt chaining applicato al diritto e perché è utile per gli studi legali italiani, mostrando cinque esempi pratici che dimostrano come utilizzarlo per attività giuridiche complesse come:
- l’analisi di una clausola contrattuale;
- l’analisi giurisprudenziale;
- la formulazione assistita di una bozza di parere legale;
- la verifica e l’ottimizzazione di una memoria difensiva in ambito penale;
- la comparazione tra due sentenze contrastanti.
Tutti gli esempi sono compatibili con modelli linguistici eseguiti in locale tramite Ollama, nel rispetto della privacy e della deontologia forense.
Cos’è il prompt chaining e perché usarlo in ambito legale
Il prompt chaining consiste nel concatenare più prompt in sequenza, in modo che l’output di ciascun passaggio diventi l’input del successivo.
Questo approccio è particolarmente efficace in ambito legale, dove le attività richiedono analisi multilivello, con trasformazioni progressive del testo (lettura, comprensione, confronto, riscrittura).
LangChain è lo strumento ideale per implementare prompt chaining in modo trasparente, documentabile e riutilizzabile.
L’uso di catene controllate consente inoltre una maggiore verificabilità del lavoro svolto con l’IA, utile anche in caso di verifica esterna.
Per documenti lunghi è consigliato l’uso di strumenti di chunking come TextSplitter, che permettono di dividere il testo in sezioni analizzabili (ad esempio, un ricorso da 50 pagine può essere spezzato in micro-sezioni da 2000 token ciascuna, processabili in sequenza).
Prerequisiti tecnici
Per eseguire lo script Python occorre:
- Python 3.11+
- Librerie:
langchain,langchain-ollama,python-docx(per export in Word) - Ollama installato e in esecuzione, con il modello LLM locale gemma3n
È fondamentale verificare che il modello LLM scelto supporti il numero di token richiesto (context window) e impostare correttamente i parametri (temperature bassa per maggiore determinismo).
Struttura generale del chaining con LangChain
LangChain consente di definire catene di processamento in cui ogni elemento rappresenta un modulo logico, come prompt, modelli linguistici, operazioni di suddivisione, validazione o trasformazione del testo. Le catene possono assumere conformazioni:
- Lineari, dove ciascun output alimenta il modulo successivo;
- Ramificate, con biforcazioni condizionate dall’analisi del contenuto;
- Iterative, caratterizzate da validazione ripetuta fino al superamento di specifici criteri;
- Document-aware, in cui ogni passaggio mantiene accesso al documento originale come riferimento costante.
Questa struttura favorisce la costruzione di flussi logici robusti sia per l’elaborazione di testi giuridici che per scenari di automazione documentale avanzata.
Nota sul metodo R-CAFAR
Il metodo R-CAFAR (Ruolo, Contesto, Attori e Fatti, Finalità, Aggiornamento, Richiesta) è una struttura di prompt che garantisce chiarezza, replicabilità e completezza, come visto nel volume 1 di questa guida e nei post precedenti.
Esempio 1 – Analisi di una clausola di responsabilità in un contratto di locazione abitativa
Scenario
Un avvocato deve valutare una clausola di responsabilità inserita in un contratto di locazione abitativa.
Passaggi della catena
- Sintesi della clausola.
- Confronto normativo.
- Riformulazione equilibrata della clausola per rispettare gli obblighi del conduttore senza imporre responsabilità oltre i limiti di legge.
Codice Python completo e funzionante
from langchain_ollama import OllamaLLM
from langchain_core.prompts import PromptTemplate
# ================================
# CONFIGURAZIONE DEI PARAMETRI
# ================================
PARAMS_LLM = {
"model": "gemma3n", # es. "gemma3n", "mistral", "llama3"
"temperature": 0.2, # risposte più determinate e "giuridiche"
"top_p": 0.9, # controllo della diversità nella generazione
"num_ctx": 8192 # contesto il più alto supportato dal modello
# puoi aggiungere altri parametri supportati dal tuo wrapper
}
llm = OllamaLLM(**PARAMS_LLM)
# ================================
# PROMPT TEMPLATE
# ================================
prompt1 = PromptTemplate.from_template(
"""
[R]uolo: Sei un avvocato esperto in diritto delle locazioni abitative.
[C]ontesto: Stai esaminando una clausola contrattuale complessa e articolata relativa alla responsabilità del conduttore e ad altri obblighi nella locazione abitativa.
[A]ttori e Fatti: Una parte del contratto contiene una clausola strutturata su più previsioni a carico del conduttore.
[F]inalità: Devi sintetizzare la clausola in termini giuridici chiari, evidenziando oggetto, ambito e obblighi del conduttore, senza interpretare o valutare, ma semplicemente chiarire i contenuti schematicamente.
[A]ggiornamento: Se emergono elementi insoliti o innovativi rispetto alla prassi 2025, evidenzialo.
[R]ichiesta: Fornisci una sintesi breve e precisa della clausola.
Clausola:
{clausola}
"""
)
prompt2 = PromptTemplate.from_template(
"""
[R]uolo: Sei un avvocato civilista specializzato in contratti di locazione abitativa.
[C]ontesto: Hai ricevuto la sintesi della clausola redatta al passaggio precedente.
[A]ttori e Fatti: Analizza se le previsioni sinteticamente esposte siano compatibili con il quadro normativo vigente sulle locazioni abitative.
[F]inalità: Valuta in particolare la legittimità della clausola alla luce delle norme rilevanti del Codice civile, del D.lgs. 9 dicembre 1998, n. 431, dell’art. 1418 c.c. (nullità per contrarietà a norme imperative) e dell’art. 1419 c.c. (nullità parziale della clausola), indicando eventuali squilibri o profili di nullità totali o parziali. Evidenzia anche se ci sono stati cambiamenti normativi o pronunce di merito/legittimità successive al 2020 rilevanti.
[A]ggiornamento: Riporta eventuali novità normative e recenti sentenze (Cassazione o Sezioni Unite) che abbiano modificato la prassi.
[R]ichiesta: Fornisci un’analisi giuridica dettagliata (ma sintetica), evidenziando criticità della clausola e distinguendo tra nullità totale e parziale, se del caso.
Sintesi da analizzare:
{input}
"""
)
prompt3 = PromptTemplate.from_template(
"""
[R]uolo: Sei un avvocato incaricato di redigere clausole contrattuali conformi a legge.
[C]ontesto: Stai rivedendo la clausola di responsabilità di un contratto di locazione abitativa, tenendo conto degli esiti dell’analisi normativa appena condotta.
[A]ttori e Fatti: Il locatore vuole tutelarsi da danni all’immobile, spese e rischi, ma il conduttore non può essere gravato di responsabilità oltre i limiti di legge.
[F]inalità: Proponi una clausola riformulata che garantisca il giusto equilibrio tra interessi e tuteli il locatore senza imporre al conduttore obblighi nulli o eccessivamente gravosi.
[A]ggiornamento: Rispetta le disposizioni di legge, in particolare la disciplina del Codice civile e del d.lgs. 431/1998; puoi citare giurisprudenza aggiornata.
[R]ichiesta: Redigi una clausola chiara e utilizzabile in un contratto reale, riequilibrata rispetto a quella di partenza.
Analisi precedente:
{input}
"""
)
# ================================
# INPUT DELLA CLAUSOLA COMPLESSA
# ================================
clausola_articolata = (
"""Il conduttore si obbliga a restituire l’immobile in perfetto stato di conservazione, rispondendo di ogni danno comunque verificatosi, anche se dovuto a caso fortuito, vetustà o difetti preesistenti. Egli rinuncia sin d’ora ad eccepire cause di esonero da responsabilità e si impegna, altresì, a farsi carico delle spese straordinarie di manutenzione normalmente a carico del locatore, comprese quelle relative alla struttura portante, agli impianti idrici, elettrici e di riscaldamento. Il conduttore si obbliga, infine, a stipulare una polizza assicurativa contro qualsiasi rischio di danno all’immobile, indicando come beneficiario esclusivo il locatore."""
)
# ================================
# ESECUZIONE DEL WORKFLOW PROCEDURALE
# ================================
print("=== PARAMETRI LLM USATI ===")
for k, v in PARAMS_LLM.items():
print(f"{k}: {v}")
prompt1_filled = prompt1.format(clausola=clausola_articolata)
sintesi = llm.invoke(prompt1_filled)
prompt2_filled = prompt2.format(input=sintesi)
analisi = llm.invoke(prompt2_filled)
prompt3_filled = prompt3.format(input=analisi)
riformulata = llm.invoke(prompt3_filled)
print("\n>>> SINTESI CLAUSOLA\n")
print(sintesi)
print("\n>>> ANALISI NORMATIVA DELLA CLAUSOLA\n")
print(analisi)
print("\n>>> CLAUSOLA RIFORMULATA\n")
print(riformulata)
# ================================
# (Opzionale) Salvataggio in DOCX
# ================================
try:
from docx import Document
doc = Document()
doc.add_heading("Analisi Clausola di Responsabilità - Locazione Abitativa (Script Procedurale con Parametri)", level=1)
doc.add_heading("Parametri LLM usati", level=2)
for k, v in PARAMS_LLM.items():
doc.add_paragraph(f"{k}: {v}")
doc.add_heading("1. Sintesi Clausola", level=2)
doc.add_paragraph(sintesi)
doc.add_heading("2. Analisi Normativa", level=2)
doc.add_paragraph(analisi)
doc.add_heading("3. Clausola Riformulata", level=2)
doc.add_paragraph(riformulata)
doc.save("analisi_clausola_procedurale_parametri.docx")
print("\n>>> Documento salvato in 'analisi_clausola_procedurale_parametri.docx'")
except ImportError:
print("\n>>> Per esportare in .docx installa la libreria con: pip install python-docx")
Spiegazione passo–passo
- Input della clausola → lo script riceve una clausola squilibrata.
- Prompt 1 – Sintesi → produce una sintesi chiara e breve.
- Prompt 2 – Confronto normativo → confronta con norme e principi.
- Prompt 3 – Riformulazione → genera una clausola alternativa.
- Output → stampa e può salvare in DOCX.
Esempio 2 – Analisi sistematica di una sentenza
Catena di prompt pronta per l’uso
Prompt 1
Sei un avvocato amministrativista. Suddividi la seguente sentenza TAR 2025 in tre sezioni: a) fatti rilevanti e questione giuridica, b) motivazione principale (riassunta o testualmente, senza omettere passaggi essenziali), c) dispositivo. Non comprimere eccessivamente la parte motivazionale.
Prompt 2
Isola e descrivi le principali motivazioni adottate dal TAR, collegandole espressamente ai fondamenti normativi applicati (in particolare artt. 3, 7 e 21-octies della legge 241/1990; artt. 24, 113 Cost.; articoli di riferimento del c.p.a., es. art. 29), indicando se vi siano richiami a principi generali, come legittimità, imparzialità, buon andamento e obbligo di motivazione.
Prompt 3
Verifica se la motivazione adottata dal TAR sia conforme ai principi di diritto in materia di eccesso di potere, motivazione e tutela giurisdizionale, confrontandola con i principali orientamenti del Consiglio di Stato (2020–2025) e con eventuali pronunce della Corte costituzionale sul punto. Segnala eventuali divergenze, coerenze o evoluzioni interpretative.
Prompt 4 (facoltativo)
Suggerisci possibili argomenti di impugnazione della sentenza, indicando le strategie più efficaci alla luce della sintesi e del quadro giurisprudenziale individuato.
Spiegazione
Questa catena consente di sintetizzare rapidamente una sentenza, isolare la ratio decidendi e verificarne la coerenza con la giurisprudenza più recente, utile per redigere note a sentenza o atti di impugnazione.
Esempio 3 – Redazione assistita di un parere legale con input strutturato
Catena di prompt pronta per l’uso
Prompt 1
Analizza il seguente caso concreto:
- Ricostruisci sinteticamente i fatti, distinguendo tra fatti pacifici e questioni controverse.
- Individua le questioni giuridiche principali che emergono dal caso.
Prompt 2
Individua e sintetizza la normativa rilevante applicabile alle questioni individuate, specificando:
- I riferimenti precisi (articoli, commi, eventuale normativa europea).
- Le principali sentenze e orientamenti giurisprudenziali pertinenti, evidenziando eventuali divergenze interpretative.
Prompt 3
Elabora uno schema di parere legale organico e motivato:
- Presenta per ciascuna questione le possibili soluzioni giuridiche, argomentandole con supporto normativo e giurisprudenziale.
- Evidenzia, per ogni soluzione, vantaggi, rischi e conseguenze pratiche.
- Indica eventuali alternative argomentative, raccomandando la soluzione preferibile e motivando la scelta.
Spiegazione
La catena consente di partire da un caso concreto e guidare l’IA nella costruzione di un parere legale, suddividendo in fasi analisi dei fatti, individuazione della normativa e proposta di soluzioni operative.
Esempio 4 – Ottimizzazione di una memoria difensiva in ambito penale
Catena di prompt pronta per l’uso
Prompt 1:
Riassumi la bozza di memoria difensiva penale in massimo 20 righe, evidenziando i punti centrali e la strategia argomentativa principale.
Prompt 2:
Esamina la bozza integrale della memoria difensiva: individua punti di forza e di debolezza, confrontando argomentazioni, struttura e motivazioni con i principi costituzionali (come il diritto di difesa e il giusto processo), con le principali disposizioni del Codice penale, del Codice di procedura penale e/o di altre normative rilevanti, nonché con la giurisprudenza recente e significativa della Corte di Cassazione, della Corte Costituzionale e delle Corti europee, segnalando eventuali criticità, carenze o possibili miglioramenti.
Prompt 3:
Proponi una versione ottimizzata della memoria difensiva, pronta per il deposito, che tenga conto dell’analisi svolta, delle fonti normative e degli orientamenti giurisprudenziali emergenti, rafforzando le motivazioni e colmando eventuali punti deboli identificati.
Prompt 4 (opzionale):
Confronta la versione ottimizzata con la bozza originale, indicando in modo sintetico i miglioramenti apportati sia sul piano giuridico che su quello argomentativo e strategico.
Spiegazione
In ambito penale, questa catena aiuta a migliorare la chiarezza e la coerenza delle memorie difensive, confrontando l’argomentazione con norme e precedenti aggiornati.
Esempio 5 – Confronto tra due sentenze contrastanti
Catena di prompt pronta per l’uso
Prompt 1:
Confronta le due sentenze, evidenziando in modo ordinato le similitudini e le differenze sia per quanto riguarda la ricostruzione dei fatti che le soluzioni giuridiche adottate, indicando anche eventuali divergenze nella motivazione.
Prompt 2:
Analizza criticamente le motivazioni delle due sentenze in relazione ai principi costituzionali rilevanti, alle norme pertinenti e agli orientamenti prevalenti della Corte Costituzionale e della Cassazione, segnalando coerenze, contrasti o innovazioni.
Prompt 3:
Formula una nota a sentenza che riassuma i punti salienti del confronto, evidenzi le implicazioni pratiche per l’applicazione del diritto nel caso concreto e nella prassi giurisprudenziale, e indichi quale orientamento ritieni preferibile, motivando la scelta anche alla luce delle possibili ricadute sul sistema e sui diritti coinvolti.
Prompt 4 (opzionale, per massima profondità):
Proponi possibili sviluppi futuri della giurisprudenza o eventuali interventi normativi auspicabili alla luce delle questioni emerse dal confronto tra le due sentenze.
Spiegazione
Questa catena permette di analizzare due decisioni contrastanti, sintetizzare i punti di divergenza e costruire una nota critica con orientamento preferito.
Limiti tecnici e giuridici del chaining
- Context window/token: rischio di superare i limiti concatenando più passaggi. Usare
TextSplittere sintesi intermedie. Esempio: suddividere un ricorso lungo in chunk da 2000 token elaborati in sequenza. - Aggiornamento normativo e giurisprudenziale: i modelli locali non hanno di per sé accesso a banche dati. Chi vuole spingersi oltre può collegare banche dati o prevedere la possibilità di accedere a Internet, ottenendo analisi sempre aggiornate e pertinenti, come già illustrato in precedenti post.
- Controllo professionale: i risultati vanno sempre verificati da un avvocato.
Conclusioni
Il prompt chaining consente agli studi legali di strutturare flussi di lavoro complessi con l’IA, migliorando qualità e coerenza.
Attraverso esempi concreti in ambito civile, amministrativo e penale, abbiamo visto come concatenare più prompt renda possibile la sintesi di testi complessi, l’analisi normativa e giurisprudenziale, la riformulazione di clausole e la redazione di atti difensivi più chiari.
Per gli studi legali che desiderano integrare l’IA nelle attività, il chaining rappresenta un passo decisivo: da semplici risposte isolate a workflow intelligenti, tracciabili e ripetibili.
È la base per costruire sistemi più evoluti di automazione legale, capaci di affiancare il professionista con precisione e sicurezza.
Per un aiuto e per approfondire
Per un aiuto e per approfondire i temi dell’intelligenza artificiale nello studio legale, del legal tech e del legal design è online il GPT Iusreporter.tech (link esterno, richiede ChatGPT)
Per gli altri articoli pubblicati su questo blog sul tema:
Intelligenza artificiale e Avvocati
Scritto con l’aiuto di Iusreporter, il tuo assistente per la ricerca giuridica online
Studio legale Avvocato Giuseppe Briganti
Pesaro – Urbino
Post aggiornato alla data di pubblicazione
📄 Disclaimer
Gli script Python e i contenuti di questo testo sono forniti esclusivamente a scopo informativo, didattico e sperimentale in ambienti di test controllati. Non costituiscono consulenza legale o tecnica e non sostituiscono il parere di un professionista qualificato.
L’autore declina ogni responsabilità per eventuali errori, omissioni, malfunzionamenti, danni diretti o indiretti, incidentali, consequenziali o di altro tipo derivanti dall’uso, dall’uso improprio o dall’impossibilità di utilizzo degli script o delle informazioni contenute nel presente testo. Gli script sono forniti “così come sono” (AS IS), senza garanzie esplicite o implicite, incluse, ma non limitate a, garanzie di commerciabilità, idoneità a uno scopo particolare o assenza di violazioni.
L’utilizzo degli strumenti è sotto la piena responsabilità dell’utente, che è tenuto a verificarne, in particolare:
- la correttezza tecnica e funzionale,
- la conformità alle normative vigenti, incluse, a titolo esemplificativo, l’AI Act, il GDPR, il Codice Deontologico Forense,
- il rispetto delle licenze delle librerie e dei componenti e software di terze parti eventualmente utilizzati, inclusi quelli distribuiti con licenze open source.
Gli script non sono progettati né validati per l’uso in ambienti produttivi o per l’elaborazione di dati personali. Qualsiasi utilizzo in tali contesti è esclusiva responsabilità dell’utente, che deve adottare le opportune misure di sicurezza e valutare l’impatto normativo.
Gli script sono stati testati su Python 3.10 in ambiente Windows. Non è garantita la compatibilità con versioni diverse del linguaggio o con altri sistemi operativi. L’autore non fornisce assistenza tecnica, aggiornamenti periodici o correzione dei malfunzionamenti.
Tutti i contenuti di questo ebook, inclusi i testi e il codice sorgente, sono protetti dal diritto d’autore ai sensi della Legge 22 aprile 1941, n. 633 e successive modificazioni. È vietata la riproduzione, distribuzione, pubblicazione, comunicazione o modifica, totale o parziale, in qualsiasi forma, dei contenuti senza autorizzazione scritta dell’autore, salvo espressa indicazione contraria.
L’uso di questo testo e degli script in esso contenuti implica l’accettazione integrale del presente disclaimer. Se non si accettano tali condizioni, si prega di non utilizzare il materiale fornito.
Eventuali errori, osservazioni o segnalazioni possono essere comunicati all’autore, che si riserva di valutarli senza alcun obbligo di risposta o correzione.


