Il prompt engineering non è trovare la frase magica: è progettare l'input in modo che l'output sia affidabile e ripetibile. In azienda un prompt è codice — va versionato, testato e mantenuto come tale.
Anatomia di un buon prompt
Un prompt robusto separa ruolo, contesto, istruzioni, vincoli e formato di output. La struttura riduce l'ambiguità e rende il comportamento prevedibile.
[RUOLO] Sei un assistente che classifica ticket di supporto.[CONTESTO] Categorie ammesse: fatturazione, tecnico, commerciale.[ISTRUZIONI] Assegna UNA categoria. Se incerto, usa 'tecnico'.[VINCOLI] Non inventare categorie. Non spiegare.[OUTPUT] Rispondi solo con JSON: {"categoria": "..."}
Tecniche che funzionano
Poche tecniche coprono la maggior parte dei casi reali. Vanno scelte in base al task, non accumulate.
- Few-shot: 2–5 esempi corretti guidano formato e stile meglio di mille parole
- Chain-of-thought: chiedi i passaggi per task di ragionamento (poi nascondili)
- Delimitatori: separa istruzioni e dati utente per evitare ambiguità e injection
- Output strutturato: imponi JSON schema quando l'output va usato da codice
Vincoli e sicurezza del prompt
I dati dell'utente non sono istruzioni. Mescolarli con il system prompt apre la porta alla prompt injection. Vanno delimitati e trattati come contenuto da analizzare, mai come comandi da eseguire.
In produzione il prompt va testato su casi limite: input vuoti, fuori tema, malevoli, in lingue diverse.
Il prompt è un artefatto di produzione
Un prompt che funziona nel playground non è ancora pronto. Va versionato, valutato su un dataset di esempi (eval), monitorato e aggiornato quando cambia il modello. Trattarlo come codice è ciò che distingue un esperimento da un sistema.
In sintesi
- Struttura il prompt: ruolo, contesto, istruzioni, vincoli, formato di output.
- Few-shot ed esempi guidano meglio di lunghe descrizioni astratte.
- Separa sempre dati utente dalle istruzioni: è difesa contro la prompt injection.
- Versiona e valuta i prompt con dataset di test: sono codice, non testo usa e getta.
FAQ tecniche
Chain-of-thought va sempre usato?
No. Aiuta nei task di ragionamento (matematica, logica, multi-step) ma aumenta costi e latenza ed è inutile per classificazioni semplici. Spesso lo si usa internamente e si mostra solo il risultato.
Come gestisco prompt diversi per modelli diversi?
Versionali per modello e valutali con lo stesso dataset di eval. Cambiando provider (es. da GPT a Claude) il prompt va riadattato e ritestato, non copiato.