
Prompt engineering per task tecnici complessi

Prompt engineering per task tecnici complessi
Il prompt engineering tecnico nel 2026 è la differenza tra un agente AI che chiude un task multi-file in un solo tentativo e uno che brucia 40 minuti rigenerando codice sbagliato. I 5 pattern che funzionano: role-task-format-constraints, few-shot examples, chain-of-thought, plan-then-execute, output schema. Power user usano prompt da 800-2000 token strutturati, raggiungono 78% one-shot success su task complessi e risparmiano 8-12 ore a settimana. Niente magia: template riusabili, vincoli espliciti, esempi concreti, schema di output.
Sono Davide Cocozza, co-founder di Datazen e dev da oltre 5 anni. Negli ultimi 18 mesi ho scritto migliaia di prompt per Claude Code, Cursor, GPT-5 e modelli locali, lavorando su progetti reali con clienti italiani — dal refactoring di legacy PHP a sistemi di lead generation B2B. Questa guida raccoglie i pattern che funzionano davvero su task tecnici complessi, non gli esempi giocattolo da tutorial.
Se cerchi il contesto generale sull'ecosistema AI coding leggi prima la mia guida all'AI per sviluppatori italiani 2026. Qui andiamo subito sul pratico: cosa scrivere, come strutturarlo, perché funziona.
Cosa rende un prompt tecnico veramente efficace nel 2026
Un prompt tecnico efficace nel 2026 non è una frase. È un documento strutturato con ruolo, contesto, vincoli, esempi e schema di output. I dev senior che usano LLM come daily driver scrivono prompt che assomigliano più a una spec funzionale che a una chat. La differenza in produttività è misurabile.
I numeri arrivano da fonti differenti: la documentazione ufficiale Anthropic Prompt Engineering Guide descrive le tecniche che spostano il success rate da 40% a oltre 70% su task complessi, il OpenAI Cookbook raccoglie pattern simili con metriche di benchmark, e il DSPy framework di Stanford ha dimostrato in paper peer-reviewed che prompt programmatici strutturati battono i prompt naive di 15-30 punti percentuali su task di reasoning. Il dato sui 1.450 token medi viene dai miei log Claude Code degli ultimi 6 mesi su progetti client reali.
Tre principi che ho interiorizzato:
- Il contesto vale più del modello. Un GPT-5 con prompt vago perde contro un Claude 3.5 con prompt strutturato bene. Il modello migliore è quello a cui hai dato più contesto rilevante.
- I vincoli espliciti riducono allucinazioni. "Non inventare nomi di file, usa solo quelli che leggi" è la singola istruzione che cambia di più la qualità su task multi-file.
- Lo schema di output è il moltiplicatore di affidabilità. Chiedere JSON, XML o un formato preciso elimina il 70% degli errori di parsing nei flussi automatizzati.
I 5 pattern di prompt engineering tecnico
Questi sono i 5 pattern che uso ogni giorno. Coprono il 90% dei task tecnici complessi.
1. Role-Task-Format-Constraints
Il template base. Definisci ruolo del modello, task specifico, formato di output, vincoli espliciti. Sostituisce il 60% dei prompt ad-hoc. Best per: refactoring, code review, generazione boilerplate.
2. Few-Shot Examples
Mostra 2-4 esempi input/output prima di chiedere il task vero. Funziona dove il task è ambiguo o lo stile conta. Best per: pattern di codice custom, format proprietari, naming convention.
3. Chain-of-Thought
Forza il modello a ragionare step-by-step prima di rispondere. Aumenta accuracy del 20-35% su task di reasoning. Best per: debugging, problemi algoritmici, decisioni architetturali.
4. Plan-then-Execute
Il modello prima produce un piano, l'umano approva, poi il modello esegue. Riduce errori cross-file del 50%. Best per: refactoring multi-file, nuove feature, migrazioni.
5. Output Schema (JSON/XML)
Specifichi formato esatto dell'output con schema. Elimina ambiguità di parsing, abilita integrazione in pipeline. Best per: API design, dati strutturati, tool calling.
Quale scegliere quando? Ecco la mappa che uso io:
| Pattern | Use case ideale | Token budget tipico | One-shot success atteso |
|---|---|---|---|
| Role-Task-Format-Constraints | Refactoring singolo file, generazione boilerplate | 300-600 | 85% |
| Few-Shot Examples | Stile proprietario, format custom, naming | 600-1.200 | 82% |
| Chain-of-Thought | Debugging complesso, algoritmi | 400-800 | 74% |
| Plan-then-Execute | Refactoring multi-file, nuove feature | 1.500-3.000 | 78% |
| Output Schema JSON/XML | Pipeline automatizzate, tool calling | 400-700 | 91% |
Pattern 1 come usare il template role task format constraints
Il template Role-Task-Format-Constraints (RTFC) è la base. Lo uso in oltre metà dei miei prompt tecnici. La struttura è semplice ma va rispettata in ordine.
Definisci il ruolo
Una frase precisa su chi è il modello e che expertise simula. Non "sei un assistente utile" ma "sei un senior TypeScript engineer specializzato in refactoring di codice legacy verso pattern funzionali".
Specifica il task
Un imperativo chiaro. "Refactora questa funzione X per..." con criteri di successo misurabili: "deve passare i test esistenti, mantenere la signature pubblica, ridurre complessità ciclomatica sotto 8".
Indica il formato di output
Dove e come scrivere il risultato. "Output: codice TypeScript completo del file modificato, no spiegazioni intermedie, no markdown fences". Specifico salva tempo dopo.
Elenca i vincoli espliciti
Cosa NON fare. "Non aggiungere dipendenze esterne, non rinominare funzioni esportate, non toccare il file di test, se incontri ambiguità STOP e chiedi". I vincoli espliciti sono il vero moltiplicatore.
Esempio completo di prompt RTFC per un task reale di refactoring TypeScript:
Ruolo: sei un senior TypeScript engineer specializzato in refactoring
verso pattern funzionali. Lavori su una codebase Next.js 15 production.
Task: refactora la funzione `processUserOrders` nel file
`src/services/orders.ts`. Obiettivo:
- ridurre complessità ciclomatica da 14 a sotto 8
- estrarre i side effect (DB writes, email) in funzioni pure
composte via Result<T, E>
- mantenere la signature pubblica identica
- tutti i test in `orders.test.ts` devono continuare a passare
Formato output:
- codice completo del file `orders.ts` modificato
- lista bullet point dei cambi (max 5 righe)
- NO spiegazioni intermedie, NO markdown fence ```
Vincoli:
- non aggiungere dipendenze npm
- non modificare altri file
- non rinominare export pubblici
- se trovi ambiguità sull'API esistente, STOP e fai una domanda
invece di assumere
- se la complessità target non è raggiungibile senza breaking
change, dimmelo prima di scrivere codice
Questo prompt è circa 200 token. Su Claude Sonnet ha un one-shot success rate stabile sopra l'80% nei miei test interni. La parte che fa la differenza è l'ultimo vincolo: dire al modello cosa fare quando non sa è molto più potente di sperare che indovini.
Pattern 2 few shot examples per task ambigui
Il few-shot prompting è la mossa che usi quando il task ha uno stile specifico che è difficile da spiegare a parole ma facile da mostrare. Per la teoria di base ti rimando alla mia guida completa zero-shot vs few-shot prompting. Qui ti mostro come applicarlo a task tecnici reali.
Use case tipico: hai una convention di naming proprietaria nei tuoi commit message. Spiegarla a parole prende 200 token e il modello la sbaglia comunque. Mostrarla con 3 esempi prende 150 token e funziona quasi sempre.
Ruolo: generatore di commit message per il team Datazen.
Convention: <type>(<scope>): <imperativo breve, max 60 char>
Esempi:
Input: aggiunto endpoint POST /api/leads con validazione zod
Output: feat(api): aggiungi endpoint POST /api/leads con zod
Input: fix race condition su retry queue del webhook stripe
Output: fix(webhook): risolvi race condition su retry queue stripe
Input: refactor del modulo billing per estrarre invoice service
Output: refactor(billing): estrai invoice service da modulo billing
Task: genera commit message per:
"aggiornata libreria openai sdk da 4.2 a 5.1, rimossi tipi deprecati
e fixati 3 call site"
Tre regole sui few-shot examples che ho imparato sbagliando:
- Usa esempi diversi tra loro. Se tutti i tuoi esempi iniziano con
feat(api)il modello pensa che sia obbligatorio. Mostra varietà nei pattern che vuoi catturare. - Mostra anche il caso edge. Se un campo a volte è opzionale, includi un esempio con e uno senza. Altrimenti il modello assume "sempre presente".
- Da 3 a 5 esempi è il sweet spot. Sotto 3 il pattern non si stabilizza. Sopra 5 stai pagando token per zero accuracy marginale e il context starts shifting.
Su LLM moderni (Claude Sonnet 3.5+, GPT-5, Gemini 2.5+) il few-shot non serve quasi mai per task standard. Serve eccome per task che hanno DNA proprietario.
Pattern 3 plan then execute per task multi step
Il pattern Plan-then-Execute è quello che ha più impatto su task complessi reali. Lo applico ogni volta che un task tocca 3+ file o quando il rollback è costoso. La logica: il modello prima produce un piano testuale, tu come dev lo leggi e lo correggi, poi il modello esegue il piano approvato.
Chiedi solo il piano nel primo turno
"Voglio refactorare X. NON scrivere codice. Produci un piano in 5-8 step con i file toccati e il rationale per ognuno. Indica esplicitamente i rischi e le dipendenze tra step."
Verifica il piano come reviewer
Leggi il piano. Cerca step ambigui, ordini sbagliati di dipendenze, assunzioni implicite. Se trovi un problema, non far rigenerare tutto il piano: indica esattamente cosa correggere.
Approva o modifica esplicitamente
"Piano approvato. Procedi con step 1." oppure "Piano approvato con queste 2 modifiche: (a) inverti ordine step 3 e 4, (b) nello step 5 mantieni la funzione vecchia come deprecated invece di rimuoverla. Procedi."
Esegui un solo step alla volta su task ad alto rischio
Per migrazioni di schema DB o codice critico per la sicurezza, fai eseguire uno step alla volta con verifica intermedia. Slow but safe.
Chiudi il loop con verifica e summary
Alla fine: "Riassumi cosa hai cambiato, quali test ho da eseguire, e cosa rimane da fare manualmente che tu non hai potuto fare". Questo step è il più sottovalutato.
Il punto chiave è che plan-then-execute non è solo una tecnica di prompt, è un cambio di workflow. Stai trattando il modello come un dev junior bravo ma overconfident. Il piano scritto è la tua superficie di review. Senza piano, stai approvando codice a scatola chiusa.
Su un progetto di sviluppo software AI personalizzato per un cliente B2B, il pattern plan-then-execute ha ridotto i rollback su feature multi-file dell'82%. Su task simili senza piano esplicito vedo 1 rollback ogni 3 PR. Con piano scritto e approvato, 1 su ~15.
Sul fatto che proteggere il codice durante prompting sia anche un tema di privacy, ho scritto una guida dedicata: AI coding privacy come usare l'AI senza esporre il codice. Vale la lettura se lavori su codebase con NDA strict.
Errori più comuni nei prompt tecnici
Otto errori che vedo costantemente nei prompt di dev italiani (junior e senior). Se li fai, stai bruciando token e produttività.
- Prompt vago senza criteri di successo misurabili ('rendi questo codice migliore')
- Zero vincoli espliciti su cosa NON fare — il modello assume libertà di modificare tutto
- Nessun esempio quando il task ha stile proprietario o naming convention specifica
- Output schema implicito — chiedi 'JSON' senza specificare i campi, il modello inventa
- Nessun fallback istruito per ambiguità — il modello indovina invece di chiedere
- Single-attempt mindset — non itererai mai sul prompt, accetti il primo output
- Context dump senza prioritizzazione — incolli 50K token sperando che il modello capisca
- Niente test di regressione sul prompt — non sai se il prompt v2 è meglio o peggio di v1
L'errore più costoso in produzione è il numero 5: nessun fallback su ambiguità. Un modello senza istruzione esplicita "se non sai, fermati e chiedi" inventerà. Inventerà nomi di funzioni che non esistono, importerà librerie non installate, assumerà che un endpoint risponda in un certo modo. Una sola riga nel prompt — "Se non sei certo, STOP e fai una domanda" — taglia gli errori di allucinazione del 50-70% nei miei test.
L'errore numero 8 (assenza di test del prompt) è quello che separa i dev che fanno prompt engineering serio da quelli che fanno prompt-and-pray. Tieni un file prompts.md versionato in repo, con prompt vincenti per i task ricorrenti del tuo team. Quando modifichi un prompt, fallo su un branch e confronta output su almeno 5 casi di test prima di mergeare.
Prompt template riusabili Datazen per dev italiani
Tre template copy-paste che uso settimanalmente. Sostituisci le parentesi quadre con il tuo contesto. Per il workflow di code review più avanzato vedi anche la guida AI code review tool e workflow dev 2026.
Template 1 — Debugging di un bug riportato dal cliente:
Ruolo: senior debugger TypeScript/Node.js. Approccio Sherlock Holmes:
ipotesi, evidenze, conclusione.
Contesto: questo errore appare in produzione su Next.js 15 + Prisma:
[INCOLLA STACK TRACE]
File rilevanti che ti passo:
[FILE 1]
[FILE 2]
Task:
1. Elenca 3 ipotesi sulla causa root, dalla più probabile alla meno
2. Per ciascuna ipotesi indica quali file/log/test guarderesti per
confermarla
3. NON scrivere fix prima che io confermi quale ipotesi è giusta
Vincoli: se mancano informazioni per formulare le 3 ipotesi, chiedi
i 2-3 dati specifici che ti servono. Non assumere.
Template 2 — Code review pre-merge:
Ruolo: senior code reviewer. Stile: diretto, concreto, no fluff.
Task: review questo diff PR. Output strutturato in 4 sezioni:
1. BLOCKER (bug, security issue, breaking change non documentato)
2. CONCERN (design smell, complessità eccessiva, test mancanti su
path critici)
3. NIT (stile, naming, refactor minori — usa prefisso "nit:")
4. POSITIVE (cosa è fatto bene — 1-2 punti)
Vincoli: ogni item con riferimento a file:linea. Se un item è "secondo me"
e non oggettivo, prefissa con "opinion:". Niente commenti vaghi del tipo
"considera di migliorare X" — sii specifico.
Diff:
[INCOLLA DIFF]
Template 3 — System design discussion:
Ruolo: senior system architect con esperienza su sistemi 10K-100K
utenti. Pragmatico, non over-engineer.
Contesto: stiamo progettando [DESCRIVI FEATURE].
Stack attuale: [STACK].
Vincoli operativi: [TEAM SIZE, BUDGET, TIMELINE].
Constraint non negoziabili: [GDPR, latenza, etc].
Task:
1. Proponi 2 architetture alternative (semplice vs scalabile)
2. Per ciascuna: pro, contro, costi mensili stimati, complessità
operativa
3. Raccomandazione finale con rationale di 3-5 righe
4. Lista esplicita di cosa rimandiamo a "fase 2" (premature
optimization)
Vincoli: se la feature non è abbastanza definita per scegliere
un'architettura, fai le 3 domande chiarificatrici più importanti
prima di proporre.
Questi tre template coprono circa il 70% dei miei prompt non-trivial. La cosa importante non è copiarli identici, è capire la struttura: ruolo, contesto, task in output strutturato, vincoli espliciti incluso un fallback per ambiguità.
Per dev italiani che vogliono andare oltre il prompt engineering classico, Claude Code vs Cursor confronto reale 2026 confronta i due strumenti su task identici e mostra come gli stessi prompt rendano diversamente. E se stai costruendo prodotti AI completi, l'angolo sviluppo web AI di Datazen mostra come integriamo prompt engineering, retrieval e fine-tuning sul lato applicativo.
Risorse esterne che vale la pena seguire: il GitHub repo Awesome ChatGPT Prompts per ispirazione cross-dominio, il corso gratuito DeepLearning.AI ChatGPT Prompt Engineering for Developers e la Anthropic Prompt Library con esempi production-grade per task tecnici. Se vuoi vedere come iterare su un prompt fino al risultato giusto la mia guida su come raffinare un prompt descrive il loop iterativo che applico in pratica.
Limiti del prompt engineering quando non basta
Il prompt engineering ha limiti precisi. Se ignori questi limiti perdi tempo cercando di ottimizzare prompt dove il problema è altrove.
Limite 1 — Knowledge cutoff e dominio specializzato. Su librerie/framework rilasciati dopo il knowledge cutoff del modello, nessun prompt magico ti salva. Il modello inventa API che non esistono. Soluzione: passare la documentazione nel context, usare modelli con web search, oppure fine-tuning su corpus aggiornato.
Limite 2 — Codebase troppo grandi per il context window. Su monorepo con 500K+ righe di codice, anche un context da 200K token non basta. Il modello vede frammenti, non la struttura. Servono pattern come retrieval-augmented generation, indici semantici sulla codebase, o tool come Claude Code che gestiscono il context dinamicamente leggendo file on-demand.
Limite 3 — Decisioni architetturali multi-stakeholder. Un prompt eccellente non sostituisce conversazione con product, security, ops. L'AI può proporre 3 architetture; chi sceglie quale ha senso politico-organizzativo sei tu. Non delegare decision-making strategico ai prompt.
Limite 4 — Quando serve fine-tuning, non prompt engineering. Se stai eseguendo lo stesso task 100K volte al giorno con format proprietario complesso, il fine-tuning batte il prompt engineering per costo, latenza e accuracy. Soglia indicativa: oltre 10K esecuzioni/giorno con prompt sopra i 2K token, calcola il break-even del fine-tuning.
Limite 5 — Codice critico per la sicurezza. Su codice che gestisce autenticazione, pagamenti, dati medici, il prompt engineering ti dà velocità ma non ti dà la garanzia che serve. Lo standard 2026 è: AI scrive il draft, security review umano obbligatorio, test di penetration, audit trail. Mai shippare codice security-critical sulla fiducia del prompt.
Il prompt engineering è uno strumento potente ma non onnipotente. Funziona magnificamente nel range 60-80% dei task tecnici comuni. Oltre, servono altre tecniche: RAG, fine-tuning, multi-agent systems, human-in-the-loop strutturato.
Domande frequenti
Da 3 a 5 esempi è il sweet spot per la maggior parte dei task tecnici. Sotto 3 il pattern non si stabilizza e il modello generalizza male. Sopra 5 i token marginali costano e l'accuracy non migliora più. Eccezioni: se il task ha edge case importanti aggiungi un esempio dedicato all'edge case. Se stai facendo classification con 8+ classi, 1 esempio per classe è il minimo. Su LLM 2026 (Claude 3.5+, GPT-5, Gemini 2.5+) il bisogno di few-shot è calato del 30-40% rispetto al 2023: i modelli zero-shot fanno molto di più. Misura prima di assumere che ti servano esempi.
Non è obbligatorio ma è altamente consigliato in tre scenari: (1) il prompt è parte di una pipeline automatizzata dove un altro tool consuma l'output, (2) hai bisogno di parsing affidabile per integrazioni, (3) il task ha campi multipli e vuoi evitare ambiguità sull'ordine o sulla presenza di un campo. Su task interattivi dev-to-AI in IDE, JSON spesso non serve e rende l'output meno leggibile. Su API e tool calling è sempre la scelta giusta. Usa schema JSON con Pydantic, Zod o function calling nativo del provider invece di scrivere lo schema a mano.
Claude (3.5+ e 4.x) risponde meglio a prompt con XML tags strutturati (es. <task>, <context>, <constraints>) e a istruzioni di pensiero step-by-step esplicite. Tende a essere più cauto e a chiedere chiarimenti se istruito a farlo. GPT-5 risponde bene a markdown headings e formato conversazionale, è più assertivo di default e meno propenso a chiedere chiarimenti. Su task di reasoning complesso Claude vince in benchmark recenti, GPT-5 è competitivo su task di codice e velocità. Gemini 2.5+ è competitivo su entrambi e ha context window enorme (fino a 2M token), che cambia le regole su codebase grandi. Pratica: scrivi prompt in modo strutturato e funzionano bene su tutti i modelli moderni.
Tre condizioni indicano che il fine-tuning batte il prompt engineering: (1) esegui lo stesso task migliaia di volte al giorno con format proprietario, (2) il prompt necessario per accuracy accettabile supera 2K-3K token e i costi diventano significativi, (3) hai un dataset di alta qualità con almeno 500-1000 esempi labellati. Sotto queste soglie, prompt engineering + few-shot batte fine-tuning per flessibilità e costo iniziale. Per la maggior parte dei dev italiani, anche in team da 10-30 persone, il prompt engineering rimane la scelta giusta. Il fine-tuning ha senso in scenari ad altissimo volume o con domini estremamente specializzati (legal, medical, finance regulated).
Tre approcci pratici. Primo: file .prompts/ versionato nel repo con un file markdown per ogni task ricorrente (refactor.md, review.md, debug.md). Claude Code legge automaticamente il context del repo e li raggiunge. Secondo: snippet IDE — VS Code e Cursor supportano user snippets con placeholder; trasforma i template in snippet expandibili da prefix tipo prompt-refactor. Terzo: tool dedicati come PromptLayer, LangSmith, o un repo aziendale di prompt con versioning. Per team Datazen consiglio la combinazione: snippet IDE per accesso veloce + file versionato in repo per condivisione e review. Mantieni i template sotto i 500 token quando possibile per essere veramente riusabili.
Sì, ma con caveat. Modelli open source moderni (Llama 4, Qwen3-Coder, Mistral Large, DeepSeek V3+) rispondono bene ai pattern descritti in questo articolo, specialmente RTFC e few-shot. La differenza vs Claude/GPT è che modelli locali tendono a essere meno robusti su istruzioni complesse multi-vincolo: se hai 8 vincoli espliciti, un Llama 70B potrebbe ignorarne 2-3. Strategie: prompt più corti e mirati, output schema con tool calling nativo, temperature più bassa (0.1-0.3). Su task di codice il gap con i modelli proprietari si è ridotto molto nel 2026, ma per task complessi multi-file Claude e GPT rimangono avanti del 15-25% in one-shot success rate nei benchmark indipendenti.
Vuoi padroneggiare prompt engineering nel coding?
Entra nella waitlist della community Skool per corsi e guide step-by-step su prompt engineering, agenti AI e workflow dev moderni.
Entra nella waitlist


