Cinque pattern che cambiano la qualità dell'output di 3-5 volte. Dal "scrivimi una mail" che fa schifo al prompt strutturato che produce roba pubblicabile.
Il prompt engineering non è arte oscura. È una collezione di pattern ripetibili che, applicati con disciplina, fanno passare la qualità di un output da "mediocre" a "production-grade". Pochi pattern bastano.
In questo modulo: 5 pattern essenziali + gli anti-pattern più comuni. Tutto applicabile su Claude / GPT / Gemini, con esempi affiancati cattivo vs buono.
Il pattern base: ruolo + contesto + task + formato
Come fai a non avere risposte generiche?
Il 90% dei prompt mediocri condivide lo stesso problema: sono vaghi. Niente ruolo, niente contesto, niente formato di output atteso. Il pattern che funziona quasi sempre ha 4 ingredienti.
✗ Cattivo
Scrivimi una mail per dire al cliente che la consegna è in ritardo.
✓ Buono
Ruolo: Sei un account manager B2B con 10 anni di esperienza nell'edilizia.
Contesto: Cliente Tizio S.r.l., ordine 30.000 EUR, consegna prevista 5/12, slittamento di 10 giorni dovuto a sciopero portuale (non colpa nostra).
Task: Scrivi una mail che (1) ammette il ritardo senza scuse vaghe, (2) cita la causa esterna, (3) propone soluzione concreta, (4) chiede conferma.
Formato: Tono fermo ma cordiale. Max 120 parole. Firma "Marco · Sales".
Il prompt buono produce output usabile al primo colpo. Il cattivo richiede 5 iterazioni e finisce comunque generico.
Ordine che conta
Metti il ruolo all'inizio (orienta il modello sull'intera richiesta) e il formato alla fine (resta più "fresco" nell'attention quando genera). I dati e i vincoli al centro.
Regola d'oro
Se un prompt produce output da scartare, prima di cambiare modello chiediti: ho dato ruolo? contesto? task chiaro? formato esplicito? Nove volte su dieci la cura è un prompt migliore, non un modello migliore.
Lezione 02 · Pattern
Few-shot: 2 esempi battono 200 parole
Quando spiegare a parole non basta?
Per task con un formato specifico — classificazione, estrazione, trasformazione — mostrare 2-5 esempi dell'output desiderato funziona meglio di qualsiasi descrizione testuale.
Esempio: classificare email
✗ Solo descrizione
Classifica questa email come "urgente", "normale" o "spam". Urgente = richiede risposta entro 24h. Normale = entro la settimana. Spam = pubblicità o phishing.
Email: "Ciao Marco, ti scrivo per la fattura del mese scorso, c'è un errore sull'IVA…"
✓ Few-shot
Classifica le email. Esempi:
Email: "Il server è giù, clienti bloccati"
→ urgente
Email: "Promemoria meeting lunedì alle 15"
→ normale
Email: "🎉 HAI VINTO un iPhone! Clicca qui"
→ spam
Email: "Ciao Marco, fattura del mese scorso, errore IVA…"
→
Il modello inferisce il pattern dagli esempi e lo applica. Funziona molto meglio della descrizione perché gli esempi fissano i casi-limite (cosa è urgente vs cosa è solo importante).
Regole per buoni esempi
Diversi: non mostrare 3 esempi che si assomigliano
Edge case inclusi: mostra anche un caso ambiguo gestito "bene"
Stessi formati: input e output uniformi (es. sempre maiuscole all'inizio, sempre senza punto)
3-5 è il sweet spot: con 1 esempio impara poco, con 10+ saturi il prompt e costa
+25%
accuracy media guadagnata dal passare zero-shot → 3 esempi su task di classificazione. Misurato su benchmark interni Anthropic e OpenAI.
Lezione 03 · Pattern
Chain-of-thought: far ragionare il modello
Come gli fai mostrare il ragionamento?
Per problemi che richiedono più passaggi logici — matematica, logica, troubleshooting — chiedere al modello di "pensare passo per passo" prima di rispondere riduce gli errori del 30-50%.
✗ Risposta diretta
Q: Marco aveva 12 mele. Ne dà 3 a Luca, poi compra il doppio di quelle rimaste. Quante ne ha ora?
A: 18
✓ Chain-of-thought
Q: Marco aveva 12 mele. Ne dà 3 a Luca, poi compra il doppio di quelle rimaste. Quante ne ha ora? Pensa step-by-step.
A: 1. Marco parte con 12 mele.
2. Ne dà 3 a Luca → ne restano 9.
3. Compra il doppio di 9 → +18.
4. Totale: 9 + 18 = 27 mele.
Il modello "ad alta voce" cattura errori che farebbe in silenzio. La risposta diretta sopra è sbagliata (18 ≠ 27), il CoT è corretto.
Trigger CoT
Espressioni che attivano CoT:
Pensa passo per passo prima di rispondere.
Spiega il tuo ragionamento, poi dai la risposta finale.
Step 1: ..., Step 2: ..., Risposta:
Reasoning models (2026)
Modelli come OpenAI o4 o Claude with extended thinking fanno CoT internamente — il "thinking" è nascosto, vedi solo la risposta finale. Più costosi ($15-60/M token) ma necessari per matematica avanzata, problemi complessi.
Quando NON usarlo
Per task creativi (scrittura, brainstorming) il CoT spesso peggiora: rende le risposte rigide e "didascaliche". Riservalo a logica, calcoli, debugging, decisioni multi-step.
Lezione 04 · Pattern
Structured output: JSON garantito
Come uso l'output in una pipeline automatica?
Se l'output di un LLM deve essere parsato da un altro programma (script, API, database), chiedere "rispondi in JSON" non basta — il modello può aggiungere preamboli, code fence, virgolette sbagliate. La soluzione: structured output mode.
Cos'è
Tutti i provider top (Anthropic, OpenAI, Gemini) supportano una modalità in cui passi uno schema (JSON Schema o Pydantic-like) e il modello è obbligato a produrre output conforme — niente preamboli, niente JSON mal formato.
✗ "Rispondi in JSON"
Output tipico:
Ecco il JSON richiesto:
```json
{"sentiment": "positivo", "score": 0.85}
```
Spero sia utile!
Niente parsing fragile. Niente regex sul output. Niente retry "ti prego, solo JSON".
Quando usarlo
Estrazione dati strutturati da testo libero (fatture, contratti, CV)
Classification pipeline con output multi-campo
Tool calling: il modello decide quale tool chiamare e con quali argomenti
Function output destinato a DB / API
Tool del 2026
Tool
Cosa fa
instructor (Python)
Wrapper Pydantic per OpenAI/Anthropic
outlines (Python)
JSON Schema constraint, anche local models
guardrails-ai
Validation + retry automatico
Anthropic Tool Use
JSON Schema nativo nell'API
OpenAI Structured Outputs
JSON Schema garantito al 100%
Lezione 05 · Anti-pattern
Anti-pattern: cosa NON fare
Quali errori vedo più spesso?
Dopo aver visto centinaia di prompt che non funzionano, questi sono i 5 anti-pattern più frequenti. Riconoscerli ti risparmia ore.
1. "Sii dettagliato" / "Sii preciso"
Aggettivi vaghi non aiutano. Cosa significa "dettagliato"? Una pagina? Tre? Con esempi numerici? Specifica. "Risposta di 300-400 parole, con almeno 2 esempi numerici in EUR."
2. Negazioni accumulate
"Non usare gergo tecnico, non scrivere disclaimer, non superare 100 parole, non aprire con 'Certo'…" Gli LLM gestiscono male le istruzioni negative. Riformula in positivo: "Scrivi in linguaggio quotidiano, vai dritto al punto, max 100 parole, apri con il fatto principale."
3. Domande multiple in un prompt
"Riassumi questo articolo, traducilo in inglese, identifica i 3 errori e suggerisci correzioni." L'output sarà mediocre su ognuno dei 4 task. Spezza in 4 prompt sequenziali (prompt chaining) e ognuno sarà di qualità.
4. Roleplay generico
"Sei un esperto." Esperto di cosa? Con quale background? Quale tono? Sii specifico: "Sei un commercialista italiano specializzato in PMI, 15 anni di pratica, tono didattico e diretto."
5. Niente esempi quando servono
Hai un task con un formato preciso (es. "estrai date in YYYY-MM-DD") e non mostri esempi? Il modello indovinerà. 2 esempi few-shot azzerano gli errori di formato.
Checklist pratica
Quando un prompt non funziona, prima di cambiare modello o pagare di più, esegui questa checklist:
✓ Ruolo specifico?
✓ Contesto sufficiente?
✓ Task atomico (uno solo)?
✓ Formato esplicito?
✓ 2-3 esempi se task con pattern?
✓ "Step-by-step" se ragionamento?
Verifica
5 domande per fissare
1. Hai un task di classificazione (3 categorie). Quale pattern dà il salto di qualità più grande?
Few-shot. Per task di classificazione, 3-5 esempi che coprono i casi-limite portano tipicamente +20-30% accuracy. Cambiare modello costa di più con guadagno minore. Temperature alta peggiora (rende classifier instabile).
2. Quando NON usare chain-of-thought?
Creatività. CoT rende le risposte rigide e didascaliche — pessimo per writing, brainstorming, copy. Riservalo a task con risposta "giusta" verificabile (matematica, logica, code).
3. Il tuo prompt produce output che a volte non è valido JSON. Soluzione robusta?
Structured output. Anthropic/OpenAI/Gemini garantiscono output conforme allo schema — niente preamboli, niente parsing fragile. È la differenza fra "spera" e "garantito".
4. Quale di questi è un anti-pattern?
Task multipli. 4 task in un prompt produce 4 output mediocri. Spezza in prompt chaining: 4 chiamate sequenziali, ognuna ottimizzata, output di qualità.
5. Vuoi un output con tono specifico (es. "fermo ma cordiale"). Dove metti l'istruzione di tono?
Alla fine. L'attention dà più peso a inizio e fine; metti il ruolo all'inizio (orienta) e il formato/tono alla fine (resta "fresco" quando genera). Pattern noto, +5-10% aderenza al tono richiesto.