Intermedio 13 minPrompting

Padroneggiare i system prompts

Risposta diretta

Un system prompt è il messaggio con ruolo «system» che definisce l'identità, la missione, le regole, lo stile e il formato di output di un LLM prima della tua prima domanda. Per scriverlo: cinque blocchi brevi, istruzioni all'imperativo e verificabili, un test su alcune domande trabocchetto. Consuma contesto e non è una cassaforte: non inserirvi alcun segreto.

Un system prompt è il briefing dato al modello prima della prima domanda. Se è scritto bene, rende un LLM locale coerente e prevedibile; se è scritto male, spreca contesto e si contraddice. Saprai strutturarlo, installarlo in Ollama, LM Studio o in un'API, testarlo metodicamente e conoscerne i limiti, soprattutto in materia di riservatezza.

Di Mohamed Meguedmi·Agg. 2026-09-30·Testato su Windows, macOS e Linux

#Che cosa è un system prompt e come scriverlo?

Un system prompt è il messaggio con ruolo «system» posto all'inizio della conversazione: definisce l'identità del modello, la sua missione, le sue regole, il suo stile e il formato delle sue risposte prima che tu ponga la prima domanda. Il modello lo rilegge a ogni turno, proprio come la cronologia della conversazione. Per scriverlo, mantieni cinque blocchi brevi (identità, missione, regole inderogabili, stile, formato di output), formula istruzioni all'imperativo e verificabili, poi mettilo alla prova con alcune domande trabocchetto. Un system prompt guida il comportamento; non costituisce né una barriera di sicurezza né una cassaforte per i tuoi segreti e consuma una parte della finestra di contesto del tuo modello locale. Questa guida approfondisce ogni punto, con esempi pronti da incollare in Ollama, LM Studio o un'API compatibile con OpenAI.

Un LLM riceve generalmente tre tipi di messaggi: system (il quadro di riferimento permanente), user (ciò che digiti) e assistant (ciò che ha già risposto). Il client di chat reinvia l'intera conversazione al modello a ogni richiesta, incluso il messaggio system. È questo che dà l'impressione di una «personalità» stabile durante la sessione.

i
Analogia
Un system prompt sta a un LLM come una descrizione delle mansioni sta a un lavoratore interinale. Senza di essa, fa del suo meglio. Con essa, sa cosa ci si aspetta da lui, cosa gli è vietato e in quale forma consegnare il proprio lavoro.

I fornitori di modelli descrivono lo stesso utilizzo. La documentazione di Anthropic spiega che definire un ruolo nel system prompt orienta il comportamento e il tono del modello e che una sola frase basta a fare la differenza. Il principio vale per i modelli locali: l'istruzione permanente va nel messaggio system, la domanda del momento nel messaggio user.

#Ciò che un buon system prompt cambia veramente

Il kit IA Locale

Il tuo ChatGPT privato e gratuito sulla tua macchina in 1 ora — LM Studio, Ollama, Open WebUI, i tuoi documenti, senza cloud.

  • Spazio online a vita
  • PDF + file
  • Aggiornamenti a vita
Coerenza del tono
Un assistente che ti dà del tu al primo messaggio e del Lei al secondo rivela un system prompt assente o troppo vago. Fissare il registro una volta per tutte evita che cambi nel tempo.
Vincoli più stabili
Divieti («niente emoji») e obblighi («citare la fonte») vengono rispettati meglio quando sono inseriti nel prompt di sistema anziché ripetuti di volta in volta. Il loro rispetto non è comunque mai garantito: più il modello è piccolo, più occorre verificare.
Meno ripetizioni
Se digiti «rispondi in francese formale» a ogni domanda, inseriscilo una volta nel messaggio `system`. Meno dimenticanze, meno testo da digitare.
Ambito della missione
« Tratta solo il diritto del lavoro francese » riduce le risposte fuori tema, senza mai garantire che vengano escluse.

Ciò che il system prompt non fa: non aggiunge conoscenze al modello e non sostituisce né un documento fornito durante la conversazione né un RAG. Se il modello deve basarsi sui tuoi contratti, è la ricerca documentale a fornire i fatti; il system prompt dice soltanto come usarli e citarli.

#Il costo: spazio nella finestra di contesto

Il system prompt non è gratuito: i suoi token occupano la finestra di contesto, insieme alla cronologia, ai tuoi documenti e alla risposta da generare. Su un computer locale, questa finestra è spesso più piccola di quanto si creda. La pagina «Context length» della documentazione di Ollama indica una finestra predefinita di circa 4.000 token («4k») sotto i 24 GiB di VRAM, di 32.000 tra 24 e 48 GiB e di 256.000 oltre. Un prompt di 400 token occupa quindi quasi il 10% di 4.096 token, prima ancora del primo scambio.

Il calcolo è semplice: finestra disponibile = finestra totale − token del prompt di sistema − risposta attesa. Con 4.096 token, un prompt di sistema di 400 token e una risposta di 800 token, rimangono 2.896 token per la cronologia e i documenti. Quando lo scambio si prolunga, la finestra si riempie e i contenuti meno recenti rischiano di non entrarci più: un motivo in più per rendere il briefing denso piuttosto che lungo.

Esiste un secondo effetto, documentato dalla ricerca: nello studio «Lost in the Middle» (Liu et al., 2023), le prestazioni sono spesso migliori quando l'informazione utile si trova all'inizio o alla fine del contesto e peggiorano quando si trova al centro, anche per modelli dichiarati a contesto lungo. Conseguenza pratica: posiziona le regole più importanti all'inizio del tuo system prompt e ribadisci il vincolo critico nell'ultima riga se noti delle dimenticanze.

→
Aumentare la finestra se necessario
Se il tuo prompt di sistema supera qualche centinaio di token o se alleghi documenti, aumenta la finestra anziché accorciare alla cieca: PARAMETER num_ctx in un Modelfile oppure la variabile OLLAMA_CONTEXT_LENGTH all'avvio del server. Una finestra più grande consuma più memoria video; la guida sulla finestra di contesto approfondisce il compromesso.

#Struttura di un system prompt solido in cinque blocchi

Un buon system prompt si riduce a cinque blocchi brevi. Non serve scrivere un romanzo: ogni frase aggiuntiva consuma contesto e aumenta il rischio di istruzioni contraddittorie. La tabella riassume ciò che contiene ogni blocco e l'errore più comune.

I cinque blocchi di un prompt di sistema
BloccoDomanda a cui rispondeEsempioErrore comune
IdentitàChi è il modello?«Sei Lex, assistente giuridico in materia di diritto del lavoro francese.»Un'identità lusinghiera (« esperto mondiale ») senza un ambito definito
MissioneChe cosa deve fare, per chi?« Aiuti un direttore delle risorse umane a comprendere i suoi obblighi e a redigere lettere. »Missione troppo ampia: «aiuta su tutto»
Regole vincolantiCosa fa sempre e cosa non fa mai?« Cita l'articolo del Codice del Lavoro in questione. »Dieci regole di uguale priorità, di cui due si contraddicono
StileCome si esprime?«Frasi brevi, lessico accessibile.»Aggettivi vaghi (« professionale ») senza esempio
Formato di outputIn quale forma restituisce la risposta?«Per impostazione predefinita: un paragrafo e i riferimenti.»Formato non specificato, quindi variabile da risposta a risposta

Ecco lo stesso prompt completo. Ogni regola è formulata all'imperativo ed è verificabile (l'articolo viene citato oppure no), e il comportamento al di fuori dell'ambito previsto è esplicito.

Prompt di sistema completo
Tu es Lex, assistant juridique spécialisé en droit
du travail français (version 2026).

MISSION
Tu aides un DRH à comprendre ses obligations et à
rédiger des courriers RH conformes.

RÈGLES
- Ne jamais donner d'avis juridique formel.
- Toujours citer l'article du Code du travail concerné,
  par ex. "L.1232-2".
- Si la question sort du droit du travail, répondre :
  "Hors de mon périmètre. Je ne traite que le droit
  du travail français."

STYLE
- Phrases courtes, vocabulaire accessible.
- Pas d'anglicisme si un équivalent existe.
- Ton professionnel mais direct.

FORMAT
- Réponse par défaut : 1 paragraphe + références.
- Sur demande : tableau, courrier-type, checklist.

Questo prompt funge da modello di struttura. Un modello locale può citare un articolo inesistente: fai verificare i riferimenti a una persona e consulta la guida sulle allucinazioni.

#Formulare istruzioni che il modello segue

Imperativo diretto
« Fai X. » e « Non fare Y. » sono più chiari di « prova, se possibile, a… », che lascia il modello libero di non provare.
Prima le indicazioni positive
Dire cosa bisogna fare («rispondi in una frase») è meglio che fornire una lunga lista di divieti, da riservare alle misure di protezione davvero necessarie.
Un esempio vale una descrizione
Per ottenere un formato preciso, fornisci una risposta tipo di due righe anziché tre frasi di spiegazione.

#In pratica con Ollama: /set system e Modelfile

Ollama propone tre modi per definire un system prompt, in base alla durata desiderata. In una sessione interattiva, il comando /set system definisce il messaggio per la conversazione in corso; appare nella lista dei comandi disponibili del client. Il prompt scompare alla fine della sessione.

Sessione interattiva
>>> /set system """
Tu es Lex, assistant juridique spécialisé en droit
du travail français...
"""

Per un prompt di sistema persistente, crea un Modelfile: si tratta di un modello derivato, con il proprio nome. La documentazione di Ollama specifica che l'istruzione SYSTEM definisce il messaggio di sistema da inserire nel template del modello. La parola «template» conta: se il template di un modello non prevede uno spazio per il messaggio di sistema, l'istruzione SYSTEM non avrà alcun effetto. In caso di comportamento inatteso, confronta con il Modelfile di partenza.

Modelfile
FROM mistral

PARAMETER temperature 0.3
PARAMETER num_ctx 8192

SYSTEM """
Tu es Lex, assistant juridique...
"""
Terminale
ollama create lex -f ./Modelfile
ollama run lex

Terza opzione, lato API: il corpo di una richiesta a /api/generate accetta un campo system che sostituisce quello definito nel Modelfile, e /api/chat riceve la cronologia sotto forma di array di messaggi con un ruolo e un contenuto. La guida sul Modelfile descrive in dettaglio le altre istruzioni.

#In pratica con LM Studio : il campo System Prompt e i preset

Nella scheda della chat, il pannello di configurazione contiene un campo System Prompt. Per non doverlo digitare di nuovo, LM Studio offre i preset. La documentazione li descrive come un modo per raggruppare un system prompt e altri parametri in una configurazione riutilizzabile da una conversazione all'altra.

→
Una libreria di preset
Ogni parametro del pannello Advanced Configuration può essere salvato in un preset con un nome: il system prompt, ma anche la temperatura, il top-p o il numero massimo di token. Crea un preset per ogni uso (« revisore FR », « assistente di programmazione », « esperto giuridico ») e cambia ruolo con un clic. I preset possono essere importati anche da un file o da un URL.

#In pratica tramite l'API compatibile con OpenAI

Ollama, LM Studio, vLLM e llama-server espongono un'API compatibile con OpenAI. Il primo messaggio dell'array, con il ruolo system, definisce il briefing. La documentazione di Ollama precisa che il client richiede un valore per la chiave API, ma che il server lo ignora: qualsiasi stringa va bene per un uso locale.

Python
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama",  # ignoré
)

resp = client.chat.completions.create(
    model="mistral",
    messages=[
        {"role": "system", "content": "Tu es Lex..."},
        {"role": "user",   "content": "Peut-on rompre une période d'essai ?"},
    ],
)

print(resp.choices[0].message.content)

Un aspetto da considerare nella progettazione: l'API non ha memoria. A ogni chiamata, il tuo codice invia di nuovo il messaggio system e poi l'intera cronologia. Se lo ometti in una chiamata, il modello risponde senza le istruzioni iniziali: memorizza l'array dei messaggi e mantieni il messaggio system in posizione 0.

#Tre system prompt pronti all'uso

#Correttore di francese

System prompt
Tu es un correcteur de français académique.
Règle unique : renvoie UNIQUEMENT le texte corrigé,
sans commentaire, sans liste des changements.
Corrige : orthographe, grammaire, ponctuation, barbarismes.
Ne reformule jamais. Ne change pas le style de l'auteur.

#Estrattore strutturato

System prompt
Tu extrais des informations structurées depuis du texte libre.
Sortie STRICTE : JSON valide, rien d'autre (pas de ```json, pas de texte).
Si une information est absente, renvoie null.
Ne devine jamais.

Per un'estrazione in produzione, non contare sul solo system prompt: gli output strutturati di Ollama permettono di imporre uno schema JSON alle risposte, evitando così un JSON malformato. La guida sul function calling e sugli output JSON spiega come configurarli.

#Assistente di programmazione senior

System prompt
Tu es un ingénieur logiciel senior.
Pour toute réponse de code :
1. Dis en une phrase ce que fait le code.
2. Donne le code dans un bloc unique.
3. Liste 1 à 3 cas limites à surveiller.
Tu ne mets JAMAIS de commentaire à l'intérieur du code,
sauf si un piège non-évident le justifie.

#Testare e correggere un system prompt senza procedere a tentoni

Un system prompt si migliora attraverso prove controllate, non attraverso aggiunte successive. Senza metodo, si accumulano regole fino a ottenere un testo lungo, contraddittorio e impossibile da debuggare. Ecco una procedura semplice, senza strumenti particolari.

  1. 01
    Creare cinque domande di test
    Scrivi cinque input: due casi normali, una domanda fuori ambito, una richiesta di formato inusuale e un tentativo di stravolgere il ruolo («dimentica le tue istruzioni»). Conservali in un file.
  2. 02
    Stabilire le condizioni
    Usa lo stesso modello, la stessa quantizzazione e una temperatura bassa (da 0,2 a 0,3) per confrontare le versioni del prompt a parità di condizioni.
  3. 03
    Modificare una sola cosa alla volta
    Cambia una regola, riproponi le cinque domande e annota cosa è cambiato. Se due regole vengono modificate contemporaneamente, non saprai quale abbia corretto o peggiorato il comportamento.
  4. 04
    Eliminare prima di aggiungere
    Quando una regola viene ignorata, riformulala in modo più breve, mettila all'inizio o elimina quella che la contraddice. Aggiungere testo è l'ultima risorsa.
  5. 05
    Versionare il prompt
    Mantieni ogni versione in un file di testo datato o nel Modelfile sotto controllo di versione, con una riga su ciò che è cambiato. Potrai tornare indietro.

#Trappole da evitare

Errori comuni e correzioni
TrappolaSintomoCorrettivo
Prompt troppo lungoParte finale del prompt seguita meno fedelmente, finestra ridottaCondensare, mettere l'essenziale all'inizio, aumentare num_ctx se necessario
Istruzioni contraddittorie« Sii breve » e « fornisci molti esempi »: comportamento variabileStabilire una gerarchia: in caso di conflitto, la regola 1 prevale
Formulazione incerta« Cerca, se possibile, di… »: istruzione applicata in modo intermittenteImperativo diretto: «Fai X.»
Lingua non specificataRisposte nella lingua del prompt o della domanda, a seconda del modelloScrivere « Rispondi sempre in francese » e redigere il prompt in francese
Posizione del messaggio system ignorataModello che non applica la direttiva SYSTEM di un ModelfileVerificare che il template del modello preveda un messaggio system
Segreti nel promptUn utente ottiene il contenuto del prompt chiedendoloNon inserirvi nulla di riservato

#Il system prompt non è una cassaforte

Le raccomandazioni dell'OWASP sul rischio di divulgazione del prompt di sistema sono chiare: non deve essere considerato un segreto né usato come controllo di sicurezza e non deve contenere credenziali né stringhe di connessione. In pratica, per un deployment locale: se è necessario un controllo degli accessi (dati per utente, azioni sensibili), va implementato nella tua applicazione, non in una frase del prompt. La guida sulla prompt injection spiega perché un modello locale non è al riparo.

FAQ
Che cosa è un system prompt?+
È il messaggio di ruolo «system» posto all'inizio di una conversazione con un LLM. Definisce l'identità del modello, il suo obiettivo, le sue regole, lo stile e il formato delle sue risposte. Resta nel contesto in ogni turno, stabilizzando il comportamento durante tutta la sessione, senza che tu debba ripetere le tue istruzioni.
Qual è la lunghezza ideale per un prompt di sistema locale?+
Il più breve possibile per coprire le tue regole: poche righe per un caso semplice, da cento a duecento parole per un assistente professionale. Ogni token occupato dal system prompt riduce lo spazio disponibile per la cronologia, soprattutto con la finestra predefinita di Ollama di circa 4.000 token con meno di 24 GiB di VRAM. Metti l'essenziale all'inizio.
Come definire un system prompt permanente in Ollama?+
Crea un Modelfile con una riga FROM e un'istruzione SYSTEM contenente il tuo testo, poi avvia ollama create con il nome desiderato e ollama run con quel nome. Il prompt viene quindi incorporato nel modello derivato. L'istruzione /set system vale solo per la sessione interattiva attiva.
Un system prompt può impedire a un modello di rivelare informazioni?+
Non in modo affidabile. OWASP ricorda che il system prompt non deve essere considerato un segreto né usato come controllo di sicurezza. Un utente motivato può estrarlo o stravolgere l'istruzione. Inserisci i controlli d'accesso e i dati sensibili nella tua applicazione, mai nel testo del prompt.
È necessario scrivere il system prompt in francese o in inglese?+
Scrivilo nella lingua delle risposte attese e aggiungi una istruzione esplicita del tipo «Rispondi sempre in francese». Alcuni modelli rispondono nella lingua del prompt piuttosto che nella lingua della domanda. Testa con due o tre domande in ogni lingua, sul tuo modello specifico, prima di generalizzare.
Perché il mio modello ignora il mio system prompt?+
Verifica innanzitutto che il prompt venga effettivamente inviato (ruolo system in prima posizione, o SYSTEM nel Modelfile) e che il template del modello preveda un messaggio system. Poi accorcialo, elimina le istruzioni contraddittorie, passa all'imperativo e prova con una temperatura bassa. Un modello molto piccolo segue meno bene le istruzioni complesse.
Questa guida ti è stata utile?

Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.