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[1].
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[2], focalizzandosi sul contesto informativo fornito in fase di inferenza senza alterare i parametri del modello[3].
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[3], 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)[3].
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[1], 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[4]. 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[2]:
- Condizionamento della distribuzione di probabilità: Il prompt altera la distribuzione di probabilità condizionata
stimata dal modello per selezionare il token successivo
[3].
- Hard / Soft Prompting:
- Hard Prompting: Consiste nell'ingegnerizzazione manuale o automatizzata di sequenze testuali discrete interpretabili dagli utenti[5].
- 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[6].
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[3].
- 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[3].
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[7]. 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[7].
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[8].
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[9]. Il framework Graph of Thoughts (GoT) estende ulteriormente il paradigma strutturando i passaggi intermedi (pensieri) del modello nella forma più generale di grafo orientato[10].
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)[11]. Il ciclo operativo si articola nell'alternanza continua di tre fasi: pensiero (Thought), azione (Action) e osservazione del risultato (Observation)[11].
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[12]:
- 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)[12].
- 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[13].
- 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
- ^ a b Jules White, Quchen Fu, Sam Hays, Michael Sandborn, Carlos Olea, Henry Gilbert, Ashraf Elnashar, Jesse Spencer-Smith, Douglas C. Schmidt, A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT, in arXiv preprint, 2023, DOI:10.48550/arXiv.2302.11382.
- ^ a b Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin, Attention Is All You Need, in Advances in Neural Information Processing Systems, vol. 30, 2017, pp. 5998-6008, DOI:10.48550/arXiv.1706.03762.
- ^ a b c d e f Tom B. Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, Sandhini Agarwal, Ariel Herbert-Voss, Gretchen Krueger, Tom Henighan, Rewon Child, Aditya Ramesh, Daniel M. Ziegler, Jeffrey Wu, Clemens Winter, Christopher Hesse, Mark Chen, Eric Sigler, Mateusz Litwin, Scott Gray, Benjamin Chess, Jack Clark, Christopher Berner, Sam McCandlish, Alec Radford, Ilya Sutskever, Dario Amodei, Language Models are Few-Shot Learners, in Advances in Neural Information Processing Systems, vol. 33, 2020, pp. 1877-1901, DOI:10.48550/arXiv.2005.14165.
- ^ Rico Sennrich, Barry Haddow, Alexandra Birch, Neural Machine Translation of Rare Words with Subword Units, in Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics, 2016, pp. 1715-1725, DOI:10.18653/v1/P16-1162.
- ^ Taylor Shin, Yasaman Razeghi, Robert L. Logan IV, Eric Wallace, Sameer Singh, AutoPrompt: Eliciting Knowledge from Language Models with Automatically Generated Prompts, in Empirical Methods in Natural Language Processing (EMNLP), 2020, pp. 4222-4235, DOI:10.18653/v1/2020.emnlp-main.346.
- ^ Brian Lester, Rami Al-Rfou, Noah Constant, The Power of Scale for Parameter-Efficient Prompt Tuning, in Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing, 2021, pp. 3045-3059, DOI:10.18653/v1/2021.emnlp-main.243.
- ^ a b Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Brian Ichter, Fei Xia, Ed Chi, Quoc Le, Denny Zhou, Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, in Advances in Neural Information Processing Systems, vol. 35, 2022, pp. 24824-24837, DOI:10.48550/arXiv.2201.11903.
- ^ Takeshi Kojima, Shixiang Shane Gu, Machel Reid, Yutaka Matsuo, Yusuke Koyanagi, Large Language Models are Zero-Shot Reasoners, in Advances in Neural Information Processing Systems, vol. 35, 2022, pp. 22199-22213, DOI:10.48550/arXiv.2205.11916.
- ^ Shunyu Yao, Dian Yu, Jeffrey Zhao, Izhak Shafran, Thomas L. Griffiths, Yuan Cao, Karthik Narasimhan, Tree of Thoughts: Deliberate Problem Solving with Large Language Models, in Advances in Neural Information Processing Systems, vol. 36, 2023, DOI:10.48550/arXiv.2305.10601.
- ^ Maciej Besta et al., Graph of Thoughts: Solving Elaborate Problems with Large Language Models, in AAAI Conference on Artificial Intelligence, 2024, DOI:10.48550/arXiv.2308.09687.
- ^ a b Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, Yuan Cao, ReAct: Synergizing Reasoning and Acting in Language Models, in International Conference on Learning Representations (ICLR), 2023, DOI:10.48550/arXiv.2210.03629.
- ^ a b Kai Greshake, Sahar Abdelnabi, Shailesh Mishra, Christoph Endres, Thorsten Holz, Mario Fritz, Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection, in Proceedings of the 16th ACM Workshop on Artificial Intelligence and Security, 2023, pp. 79-90, DOI:10.1145/3605764.3623985.
- ^ Alexander Wei, Nika Haghtalab, Jacob Steinhardt, Jailbroken: How Does LLM Safety Training Fail?, in Advances in Neural Information Processing Systems, vol. 36, 2023, DOI:10.48550/arXiv.2307.02483.