Il prompt engineering (letteralmente ingegnerizzazione dei prompt o ing. delle istruzioni) è una disciplina afferente agli ambiti dell'intelligenza artificiale e dell'elaborazione del linguaggio naturale che ha come obiettivi la progettazione, l'ottimizzazione e la formalizzazione degli input testuali (detti prompt) forniti a modelli linguistici di grandi dimensioni (LLM, Large Language Model) al fine di guidare la generazione dell'output verso risultati specifici, coerenti e deterministici.
Mentre l'addestramento tradizionale dei modelli neurali richiede la modifica dei pesi sinaptici tramite retropropagazione dell'errore, nel prompt engineering si sfruttano le capacità di in-context learning (apprendimento nel contesto) emergenti nelle architetture basate su transformer, focalizzandosi sul contesto informativo fornito in fase di inferenza senza alterare i parametri del modello.
Storia
Con l'introduzione dei modelli linguistici di grandi dimensioni e, in particolare, a partire dalla formalizzazione della famiglia GPT-3 nel 2020 da parte di OpenAI, si è osservato un cambio di paradigma: la risoluzione di problemi complessi (traduzione e sintesi di testo, ragionamento logico-matematico, generazione di codice) non richiede necessariamente un ri-addestramento specifico del modello (fine-tuning), bensì la strutturazione adeguata delle informazioni all'interno della cosiddetta "finestra di contesto" (context window).
Il prompt engineering si è evoluto rapidamente da pratica empirica nella sua fase iniziale a una vera e propria disciplina caratterizzata dalla formalizzazione di uno specifico insieme di pattern progettuali, tecniche sintattiche e metriche di valutazione, sovrapponendosi in parte con l'ingegneria del software e la logica formale.
Principi tecnici e meccanica di funzionamento
I modelli di linguaggio elaborano il testo convertendo la sequenza di input in una successione discreta di token tramite algoritmi di tokenizzazione come Byte Pair Encoding (BPE) o WordPiece. Tali token vengono proiettati in uno spazio vettoriale continuo ad alta dimensionalità tramite vettori di embedding.
Il prompt engineering agisce direttamente sulla matrice di attenzione del meccanismo di Self-Attention: Condizionamento della distribuzione di probabilità: Il prompt altera la distribuzione di probabilità condizionata stimata dal modello per selezionare il token successivo . Hard / Soft Prompting: Hard Prompting: Consiste nell'ingegnerizzazione manuale o automatizzata di sequenze testuali discrete interpretabili dagli utenti. Soft Prompting: Consiste nell'ottimizzazione continua di vettori di embedding (prompt tuning) direttamente nello spazio latente tramite tecniche di discesa del gradiente, producendo rappresentazioni non interpretabili come testo in linguaggio naturale.
Tassonomia delle tecniche di prompting
Zero-shot e few-Shot prompting Zero-Shot Prompting: Il modello riceve esclusivamente il prompt relativo al compito da svolgere senza alcun esempio dimostrativo nel contesto. Few-Shot Prompting: Vengono inseriti nel contesto uno o più esempi dimostrativi (-shot) strutturati secondo la dinamica , consentendo al modello di inferire lo schema di formattazione e la logica del compito.
Chain-of-Thought (CoT) La tecnica della catena di pensiero (Chain-of-Thought Prompting) induce il modello a generare esplicitamente una sequenza di passaggi intermedi di ragionamento prima di produrre la risposta finale. Si è osservato che questo approccio è capace di ridurre significativamente gli errori di calcolo e di ragionamento simbolica nei modelli con un numero adeguato di parametri.
Zero-shot CoT Kojima et al. (2022) hanno dimostrato che l'aggiunta della frase-trigger «Let's think step by step» («Pensiamo passo dopo passo») al termine del prompt induce autonomamente il modello a sviluppare un ragionamento CoT senza la necessità di inserire inizialmente esempi dimostrativi.
Tree of Thoughts (ToT) e Graph of Thoughts (GoT) Evoluzione diretta della CoT, l'architettura ad albero (ToT) sviluppata da Yao et al. consente la valutazione di molteplici rami di ragionamento simultanei, permettendo al modello di effettuare backtracking basandosi sull'autovalutazione euristica degli stati intermedi. Il framework Graph of Thoughts (GoT) estende ulteriormente il paradigma strutturando i passaggi intermedi (pensieri) del modello nella forma più generale di grafo orientato.
ReAct (Reasoning and Acting) Sviluppato da Yao et al. nel 2022, il paradigma ReAct combina la generazione di tracce di ragionamento con l'esecuzione di azioni concrete da parte di strumenti esterni (come chiamate ad API, motori di ricerca o librerie di calcolo numerico). Il ciclo operativo si articola nell'alternanza continua di tre fasi: pensiero (Thought), azione (Action) e osservazione del risultato (Observation).
Esempi
Chain-of-Thought per la risoluzione di problemi matematici
Prompt di tipo standard (Zero-Shot) Domanda: Un negozio ha 15 mele. Ne vende 6, poi ne riceve una spedizione pari al doppio di quelle rimaste. Quante mele ha ora il negozio? Risposta:
Prompt strutturato con Chain-of-Thought (Few-Shot CoT) Domanda: Marco ha 3 scatole con 4 matite ciascuna. Ne regala 2 a un amico. Quante matite gli restano? Risposta: Marco inizia con 3 * 4 = 12 matite. Regalandone 2, gli restano 12 - 2 = 10 matite. La risposta è 10.
Domanda: Un negozio ha 15 mele. Ne vende 6, poi ne riceve una spedizione pari al doppio di quelle rimaste. Quante mele ha ora il negozio? Risposta:
Assegnazione di ruolo e vincolo di output strutturato
[SISTEMA] Sei un estrattore di informazioni esperto. Il tuo compito è analizzare il testo fornito e restituire esclusivamente un oggetto JSON valido privo di testo introduttivo o conclusivo.
[SCHEMA JSON] { "tecnologia": "string", "categoria": "string", "anno_rilascio": "number" }
[UTENTE] Il framework React è stato sviluppato da Facebook nell'anno 2013 per la creazione di interfacce utente.
Sicurezza e vulnerabilità del prompt
I sistemi basati su prompt engineering presentano vulnerabilità di sicurezza derivanti dall'impossibilità strutturale dell'architettura dei transformer di separare nettamente le istruzioni del programma dai dati di input: Prompt Injection: Un malintenzionato inserisce dati di input malevoli formulati in modo da sovrascrivere o eludere le istruzioni originarie imposte dallo sviluppatore nell'applicazione (fenomeno rilevante in contesti RAG o con agenti autonomi). Jailbreaking: Ingegnerizzazione di prompt progettati per bypassare i filtri etici e le barriere di sicurezza (alignment) per spingere il modello a generare output soggetti a limitazioni o proibiti. Prompt Leaking: Tecnica tesa a forzare il modello a rivelare il contenuto riservato delle istruzioni di sistema (System Prompt) integrate nel software dell'applicazione.
Note
Categoria:Intelligenza artificiale Categoria:Elaborazione del linguaggio naturale Categoria:Apprendimento profondo