Blog

Prompt dinamici per il legal prompting – IA e Avvocati (15)

Prompt dinamici per il legal prompting – IA e Avvocati (15)

Intelligenza artificiale e Avvocati

Prompt dinamici: strumenti pratici per costruire template giuridici flessibili e personalizzati con Python, LangChain e Ollama.

Prompt dinamici: introduzione

Nel secondo post del volume 2 della guida dedicata all’integrazione professionale dell’IA negli studi legali italiani, approfondiamo l’utilizzo di LangChain per progettare prompt giuridici dinamici e parametrizzabili.

L’obiettivo è fornire agli avvocati uno strumento operativo per formulare richieste personalizzate, replicabili e integrabili in un sistema RAG locale (basato su Python e Ollama) oppure in soluzioni ibride.


1. Cos’è un prompt dinamico? (e il ruolo delle variabili)

Un prompt dinamico è una struttura di istruzione flessibile, costruita con variabili personalizzabili — ovvero segnaposti racchiusi tra parentesi graffe (es. {variabile}) che vengono sostituiti con valori specifici al momento dell’esecuzione.

Questo meccanismo consente di adattare facilmente un prompt a contesti diversi, mantenendo coerenza e precisione nella formulazione.

Consente di generare richieste precise, adattabili a diversi contesti e casi concreti mantenendo uniformità e rigore giuridico.

Le variabili: cosa sono e come funzionano

Nel contesto di LangChain, una variabile è un campo inserito tra parentesi graffe all’interno del prompt, come ad esempio {ambito_legale}.

Queste variabili agiscono come “spazi vuoti” che verranno riempiti al momento dell’esecuzione del prompt legale con i dati effettivi del caso giuridico.

Esempio di variabili comuni in ambito legale:

  • {ambito_legale} → es. “diritto civile italiano”
  • {text} → testo della clausola o documento da analizzare
  • {obiettivo} → es. “valutare la validità della clausola”
  • {finalita} → es. “parere per cliente”, “memo interno”

Utilizzando queste variabili, è possibile definire template di prompt flessibili, riutilizzabili e compatibili con interfacce automatizzate o script Python.

Esempio tipico:

“Sei un avvocato esperto in {ambito_legale}. Analizza il seguente testo: {text}. Rispondi focalizzandoti su: {obiettivo}.”

Vantaggi

  • Modularità: struttura riutilizzabile in vari ambiti giuridici.
  • Coerenza: garantisce uniformità di formulazione tra colleghi.
  • Rapidità: consente risposte veloci su input personalizzati.

Principali applicazioni

I prompt dinamici trovano numerose applicazioni nella pratica legale quotidiana.

Ecco alcuni esempi ricorrenti, in cui l’uso di variabili consente di adattare il template a ogni situazione concreta:

  • Analisi di contratti: generare analisi automatizzate di contratti inserendo variabili come {tipo_contratto}, {clausole}, {ambito_normativo} per evidenziare rischi e incongruenze.
  • Valutazione di clausole: verificare la validità di una clausola contrattuale rispetto a un certo {ambito_legale} o {finalita}.
  • Sintesi di sentenze o decisioni: riassumere contenuti giurisprudenziali fornendo in input {testo_sentenza}, {oggetto}, {criterio_di_sintesi}.
  • Classificazione semantica: categorizzare atti, pareri, verbali o contratti tramite variabili come {testo_documento}, {scopo}, {tipologia_attesa}.

Queste applicazioni possono essere combinate in flussi automatizzati più complessi (chaining) o utilizzate come blocchi modulari in strumenti più ampi di analisi legale assistita.


2. Come costruire prompt dinamici con LangChain

ℹ️ Nota: Gli script che seguono presuppongono un ambiente Python già configurato come indicato nel volume 1 della guida. Il sistema deve disporre del modello locale gemma3n installato tramite Ollama, e delle seguenti librerie Python installate:

  • langchain
  • langchain_ollama
  • ollama

Per installarle:

pip install langchain langchain_ollama ollama

LangChain è una libreria Python progettata per orchestrare LLM (Large Language Models) e integrarli con strumenti esterni. La classe PromptTemplate consente di costruire prompt parametrizzati che accettano input dinamici.

Esempio di codice:

Questo script definisce un template con tre variabili: {ambito_legale}, {text} e {obiettivo}.

Utilizza PromptTemplate di LangChain per costruire il prompt dinamico e inviarlo al modello gemma3n eseguito in locale tramite Ollama.

Il prompt viene compilato automaticamente con i dati forniti nel dizionario e il risultato viene stampato a schermo.

È un esempio base per comprendere l’interazione tra struttura dinamica e generazione del contenuto giuridico.

from langchain.prompts import PromptTemplate
from langchain_ollama.llms import OllamaLLM

# Template con variabili dinamiche
template = """
Sei un avvocato italiano specializzato in {ambito_legale}. Analizza il seguente testo:
{text}
Rispondi focalizzandoti su: {obiettivo}
"""

# Costruzione del PromptTemplate
prompt = PromptTemplate(
    input_variables=["ambito_legale", "text", "obiettivo"],
    template=template
)

# Inizializzazione del modello locale tramite Ollama
model = OllamaLLM(model="gemma3n")
chain = prompt | model

# Esecuzione del prompt
response = chain.invoke({
    "ambito_legale": "Diritto civile italiano",
    "text": """Il Conduttore accetta l’immobile nello stato in cui si trova, 
    rinunciando a far valere vizi non facilmente riconoscibili al momento 
    della consegna, salvo dolo o colpa grave del Locatore. 
    Restano a carico del Conduttore, oltre alla piccola manutenzione, 
    anche riparazioni straordinarie fino a euro 2.500 per singolo intervento. 
    In presenza di vizi che non impediscano l’uso dell’immobile, il Conduttore 
    rinuncia alla sospensione del canone e accetta che l’eventuale riduzione operi 
    solo dalla comunicazione scritta al Locatore.""",
    "obiettivo": "Illustrare le ragioni per cui si ritiene la clausola contrattuale valida o invalida"
})

print(response)

Questo approccio è ideale per creare template riutilizzabili con input dinamici, mantenendo il controllo sul linguaggio e sulla forma.


3. Applicazioni concrete dei prompt dinamici nella pratica legale quotidiana

L’uso di prompt dinamici consente di adattare i template legali a differenti finalità operative.

Di seguito quattro esempi rappresentativi, ciascuno strutturato con variabili personalizzabili per garantire adattabilità e riutilizzabilità:

a. Pareri legali
Prompt dinamico:
“Sei un avvocato italiano esperto in {ambito_legale}. Redigi un parere legale sulla seguente questione: {descrizione_caso}. Indica i riferimenti normativi e giurisprudenziali pertinenti (da verificare su fonti ufficiali). Adatta la risposta alla finalità richiesta: {finalita}.”

Variabili → {ambito_legale}{descrizione_caso}{finalita}


b. Verifica di conformità contrattuale
Prompt dinamico:
“Analizza il contratto relativo a {materia}, verificandone la conformità alla normativa italiana vigente al {anno_riferimento}. Evidenzia clausole critiche indicando i rischi, e proponi alternative di riformulazione bilanciate dal punto di vista della parte {parte_interessata}.”

Variabili → {materia}{anno_riferimento}{parte_interessata}


c. Sintesi di provvedimenti giurisdizionali
Prompt dinamico:
“Sei un avvocato italiano esperto in {ambito_legale}. Sintetizza il seguente provvedimento: {testo_sentenza}. Fornisci un output chiaro e strutturato per {finalita}, specificando: 1) Fattispecie, 2) Motivazione, 3) Dispositivo, 4) Principi di diritto richiamati.”

Variabili → {ambito_legale}{testo_sentenza}{finalita}


d. Classificazione semantica di documenti legali
Prompt dinamico:
Classifica il seguente documento giuridico: {testo_documento}. Indica:

  • materia giuridica primaria e secondaria,
  • tipologia (atto, contratto, sentenza, parere),
  • soggetto redattore (giudice, avvocato, notaio, ecc.),
  • livello di riservatezza,
  • suggerisci tag archivistici coerenti con lo schema adottato: {schema_classificazione}.”

Variabili → {testo_documento}{schema_classificazione}

📏 Limiti di lunghezza e strategie

I modelli linguistici hanno un limite massimo di token che possono essere elaborati in un’unica richiesta. Il limite varia a seconda del modello: tipicamente da 4.000 a 8.000 token per i modelli standard, con versioni più avanzate che possono arrivare a 32k–128k.

Ciò significa che testi giuridici molto lunghi (ad esempio contratti complessi, atti processuali o sentenze voluminosi) non possono essere inseriti per intero in una sola variabile come {text} o {testo_documento}, pena la perdita di parti rilevanti.

Strategie per gestire testi lunghi:

  • Sintetizzare l’input prima di passarlo al prompt (es. riassunto interno preliminare).
  • Suddividere il documento in sezioni (es. clausole contrattuali, capi della sentenza) ed eseguire analisi progressive.
  • Utilizzare prompt chaining, cioè una catena di richieste che elaborano parti distinte e le integrano successivamente.
  • Adottare un sistema RAG (Retrieval-Augmented Generation), che seleziona e fornisce al modello solo i contenuti più pertinenti rispetto alla domanda.

Gestire correttamente questi limiti è fondamentale per ottenere risultati affidabili ed evitare errori di analisi, omissioni o fraintendimenti. Nel contesto legale, la consapevolezza del limite di token è cruciale, perché un’omissione automatica dovuta a un taglio di testo può avere conseguenze significative: l’output deve sempre essere verificato dall’avvocato su documento integrale.


4. Esecuzione da terminale: input delle variabili da script Python

Per studi legali che desiderano mantenere semplicità ed efficienza, è possibile richiedere i valori delle variabili direttamente da terminale, evitando interfacce grafiche.

Script con input manuale:

Questo secondo script mostra un modo interattivo per utilizzare i prompt dinamici da terminale.

Dopo aver definito la struttura del prompt, lo script richiede all’utente l’inserimento manuale delle variabili.

Il contenuto fornito viene inserito nel prompt e inviato al modello locale per la generazione del testo.

Questo approccio è utile per testare rapidamente i template senza necessità di interfacce grafiche o automatismi complessi.

from langchain.prompts import PromptTemplate
from langchain_ollama.llms import OllamaLLM

# Definizione del prompt dinamico con variabili
prompt_template = """
Sei un avvocato italiano specializzato in {ambito_legale}. Analizza il seguente testo:
{text}
Rispondi focalizzandoti su: {obiettivo}
"""

prompt = PromptTemplate(
    input_variables=["ambito_legale", "text", "obiettivo"],
    template=prompt_template
)

# Input manuale da terminale
ambito = input("Inserisci l'ambito giuridico: ")
testo = input("Inserisci il testo da analizzare: ")
obiettivo = input("Inserisci l'obiettivo dell'analisi: ")

model = OllamaLLM(model="gemma3n")
chain = prompt | model
response = chain.invoke({
    "ambito_legale": ambito,
    "text": testo,
    "obiettivo": obiettivo
})

print("\nRisposta generata:\n")
print(response)

Questo tipo di script è perfetto per testare prompt in autonomia, anche in studi legali medio-piccoli senza infrastrutture dedicate.


5. Prompt dinamici: vantaggi dell’approccio parametrico

L’utilizzo dei prompt dinamici tramite LangChain e modelli LLM locali porta numerosi benefici concreti negli studi legali.

Benefici operativi

  • Efficienza operativa: riduce drasticamente i tempi di redazione e revisione dei testi giuridici ripetitivi o di primo livello.
  • Accessibilità: può essere utilizzato anche da personale privo di competenze tecniche, grazie a interfacce semplici o script guidati.
  • Scalabilità: rappresenta la base ideale per sviluppare flussi di lavoro automatizzati (reportistica, analisi di massa, sistemi RAG interni).

Benefici qualitativi

  • Personalizzazione controllata: ogni output è generato sulla base di variabili ben definite, legate a un contesto specifico (ambito, finalità, tipo di documento…).
  • Uniformità comunicativa: i template garantiscono coerenza stilistica e metodologica tra colleghi, utile anche in prospettiva di archiviazione e revisione.
  • Monitorabilità e tracciabilità: la struttura parametrica consente di documentare e controllare ogni prompt, aumentando la trasparenza e la conformità agli obblighi di riservatezza e compliance.

In sintesi, i prompt dinamici permettono di industrializzare i flussi di lavoro senza banalizzarli: l’avvocato mantiene il controllo analitico e metodologico, mentre l’automazione si occupa delle parti ripetitive e formali.


6. Checklist operativa per l’uso dei prompt dinamici

Per garantire un uso professionale, sicuro e ripetibile dei prompt dinamici nello studio legale, si consiglia di verificare sempre i seguenti punti:

✅ Ruolo dell’IA: è chiaro? (es. “avvocato esperto in diritto civile”)
📚 Ambito giuridico: è indicato correttamente e delimitato?
📄 Contesto fattuale: è completo, coerente e pertinente?
🎯 Obiettivo: è ben definito (es. sintesi, verifica, parere)?
⚖️ Riferimenti normativi/giurisprudenziali: sono richiesti? e soprattutto, saranno verificati su fonti ufficiali?
🖋️ Stile e linguaggio: sono coerenti con il registro giuridico richiesto?
👁️🗨️ Revisione umana: è prevista la lettura critica dell’output prima dell’uso esterno?
💾 Tracciabilità: il prompt è salvato o documentato per riuso e archiviazione interna?
🔒 Privacy e dati: i contenuti rispettano GDPR e policy dello studio? I dati sensibili sono trattati solo in locale?

🔗 Per approfondire


7. Applicazione del metodo R-CAFAR ai prompt dinamici

Il metodo R-CAFAR, già introdotto nel volume 1 di questa guida, può essere adottato come guida sistematica per strutturare prompt giuridici dinamici, garantendo completezza, chiarezza e controllo delle variabili.

Ogni prompt costruito con R-CAFAR prevede sei componenti fondamentali:

  • R – Ruolo (chi è l’IA)
  • C – Contesto (situazione giuridica di riferimento)
  • A – Attori e Fatti (soggetti coinvolti e quadro fattuale)
  • F – Finalità (obiettivo dell’analisi o output desiderato)
  • A – Aggiornamento (riferimento temporale della normativa)
  • R – Richieste specifiche (elementi puntuali richiesti: norme, precedenti, motivazione, ecc.)

🧩 Esempio di template dinamico R-CAFAR:

“Sei un avvocato italiano esperto in {ambito_legale}.

Ti viene richiesto di analizzare un caso relativo a {descrizione_contesto}, che coinvolge {attori_e_fatti}.

L’analisi deve essere svolta con la finalità di {finalita}, tenendo conto della normativa e della giurisprudenza vigenti al {anno_riferimento}.

Fornisci una risposta in formato {formato_output}, includendo {richieste_specifiche}.

La risposta deve motivare logicamente le conclusioni e distinguere in sezioni Fatti – Diritto – Conclusioni. Riporta, ove pertinenti, riferimenti normativi e giurisprudenziali, da verificare sempre su fonti ufficiali.”


8. Considerazioni su limiti, rischi e privacy

Limitazioni e rischi dei prompt dinamici
I prompt dinamici sono uno strumento potente per l’automazione e l’assistenza legale, ma vanno utilizzati con consapevolezza e senso critico:

  • Gli LLM non garantiscono la correttezza giuridica dell’output, soprattutto in contesti complessi o ambigui.
  • I modelli possono generare riferimenti normativi o giurisprudenziali inesatti se non collegati a un sistema RAG.
  • Non sono affidabili per l’analisi di casi atipici, controversi o senza precedenti.
  • È sempre necessaria la supervisione umana prima di qualsiasi utilizzo esterno, in particolare verso clienti o in atti ufficiali: la responsabilità professionale resta in capo all’avvocato.

Elaborazione locale e privacy
L’impiego di modelli locali, come quelli offerti da Ollama, consente invece di:

  • evitare la trasmissione di dati riservati a server esterni;
  • lavorare in conformità con il Regolamento (UE) 2016/679 (GDPR);
  • proteggere la riservatezza dei dati sensibili contenuti in atti, contratti o pareri.

Questa architettura rafforza il controllo sul trattamento dei dati e si adatta alle esigenze degli studi legali italiani, a condizione che siano rispettate anche adeguate misure di sicurezza interna (accessi controllati, policy di archiviazione, protezione del dato).

👉 In conclusione: i prompt dinamici offrono grande valore operativo, ma non sostituiscono l’analisi critica e la responsabilità professionale dell’avvocato.

In tema di rischi, sicurezza, privacy e deontologia professionale si rimanda a quanto già discusso nel volume 1 di questa guida.


Conclusione

L’impiego dei prompt dinamici in ambito giuridico rappresenta un passaggio essenziale per introdurre metodologie moderne e strutturate nei flussi di lavoro legali.

Grazie alla parametrizzazione, è possibile:

  • garantire coerenza tra colleghi,
  • ridurre i tempi di redazione,
  • generare risposte rapide, ma sempre aderenti alla finalità richiesta.

Questo approccio consente di creare template riutilizzabili e controllabili, che preservano la qualità del ragionamento giuridico pur sfruttando la potenza dell’IA generativa.

La combinazione di LangChain, Ollama e modelli locali come gemma3n offre un’alternativa sicura ed efficace rispetto al cloud, riducendo i rischi legati alla privacy e massimizzando il controllo sul dato.
L’integrazione del metodo R-CAFAR assicura rigore strutturale anche nella formulazione dinamica, facilitando tracciabilità e archiviazione dei prompt.

Infine, è fondamentale ricordare che ogni utilizzo professionale dell’IA richiede:

  • supervisione esperta,
  • una strategia documentale chiara,
  • consapevolezza dei limiti dello strumento.

In sintesi, i prompt dinamici non sostituiscono l’avvocato: lo supportano, liberandolo dalle attività ripetitive e consentendogli di concentrarsi sull’analisi critica e sul valore aggiunto del lavoro legale.

 


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.

Condividi

Leave a comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *