Prompt e contesto

From Systems analysis Wiki
Jump to navigation Jump to search

Prompt e contesto sono concetti fondamentali nel prompt engineering per i modelli linguistici di grandi dimensioni (LLM).

Il contesto è una componente critica del prompt, che determina la capacità dell'LLM di generare risposte precise, rilevanti e utili. Il prompt engineering efficace consiste in larga misura nell'arte di raccogliere, filtrare, strutturare e presentare il contesto corretto al modello nel momento giusto, superando al contempo i limiti degli LLM moderni.

Definizione di Prompt

Prompt (ingl. prompt) — è l'insieme completo dei dati in ingresso forniti all'LLM per generare una risposta. Non è semplicemente una domanda o un comando, ma un testo strutturato che può includere:

  • Istruzioni: Indicazioni dirette al modello su cosa fare, in quale formato, stile o tono.
  • Richiesta principale (Query): La domanda diretta dell'utente o la descrizione del compito principale.
  • Contesto: Informazioni aggiuntive necessarie per eseguire correttamente la richiesta.
  • Esempi (Few-shot examples): Dimostrazione del formato o dello stile di risposta desiderato su compiti analoghi.

La qualità e la completezza del prompt determinano direttamente la rilevanza, la precisione e l'utilità della risposta dell'LLM.

Definizione di Contesto

Contesto nell'ambito del prompt engineering — è qualsiasi informazione all'interno del prompt che aiuta il modello a comprendere meglio il compito, le specificità della situazione o le aspettative dell'utente, ma che non fa parte dei suoi dati di addestramento originali. Il contesto fornisce i dettagli situazionali necessari per generare una risposta adeguata.

Il contesto può includere:

  • La cronologia del dialogo precedente (nei chatbot).
  • Dati estratti da fonti esterne (documenti, database, pagine web) — la base del RAG.
  • Informazioni sull'utente (profilo, preferenze).
  • Dettagli specifici del compito o della situazione corrente.
  • Esempi di esecuzione di compiti analoghi (come parte del few-shot prompting).

È importante distinguere il contesto fornito nel prompt dalle conoscenze generali acquisite dal modello durante il suo pre-addestramento. Il prompt engineering si concentra sulla fornitura efficace del contesto situazionale.

Interrelazione e Influenza

Prompt e contesto sono concetti fondamentali nel funzionamento dei transformer, che determinano come il modello percepisce i dati in ingresso e su quale base genera il risultato. Architetturalmente, il transformer non distingue specificamente «prompt» e «contesto» — entrambi sono parti della sequenza di token in ingresso, che vengono trasformati in embedding, arricchiti con informazioni posizionali e processati collettivamente dai layer di self-attention.

Prompt e contesto sono inseparabilmente legati: il contesto è una componente del prompt.

  • Il contesto forma il prompt: L'ingegnere seleziona e struttura il contesto rilevante da includere nel prompt.
  • Il contesto guida il modello: Le informazioni fornite permettono all'LLM di restringere lo spazio delle risposte possibili, concentrarsi sugli aspetti rilevanti ed evitare le allucinazioni.
  • La qualità del contesto determina la qualità della risposta: Un contesto insufficiente, non rilevante o contraddittorio porta a risposte imprecise, generiche o errate. Un contesto preciso e completo aumenta la specificità e l'utilità della generazione.
  • Influenza sull'interpretazione delle istruzioni: Il contesto può precisare o modificare l'interpretazione delle istruzioni generali nel prompt.

L'efficacia del prompt dipende in larga misura dalla capacità dell'ingegnere di raccogliere, filtrare e presentare al modello il contesto rilevante.

Tipi di Contesto

Il contesto può essere classificato secondo diversi criteri:

Per fonte:

  • Fornito dall'utente: Input esplicito dell'utente, la sua domanda o descrizione del compito.
  • Dalla cronologia del dialogo: Messaggi precedenti dell'utente e dell'assistente (memoria a breve termine).
  • Estratto (Retrieved): Dati da fonti esterne (documenti, DB, web) tramite RAG.
  • Da profilo/base di conoscenza: Informazioni a lungo termine sull'utente o sul dominio.
  • Statico/Istruttivo: Informazioni inserite dall'ingegnere nel template del prompt (istruzioni, esempi, definizioni di ruoli).

Per dinamicità:

  • Contesto statico: Parte immutabile del prompt (istruzioni, definizioni, esempi). Definisce il compito generale.
  • Contesto dinamico: Informazioni che cambiano da una richiesta all'altra (dati dell'utente, risultati RAG, orario corrente). Fornisce dettagli specifici.

Per durata di conservazione (Memoria):

  • Contesto a breve termine: Cronologia della sessione di dialogo corrente.
  • Contesto a lungo termine: Dati salvati sull'utente o sulle interazioni precedenti, che richiedono meccanismi di archiviazione e recupero.

Gestione del Contesto

La gestione efficace del contesto è un compito chiave del prompt engineering, specialmente alla luce dei limiti della finestra di contesto degli LLM. Principali metodi:

  • RAG: Il metodo più diffuso per lavorare con grandi volumi di informazioni. Permette di trovare dinamicamente e includere nel prompt solo i frammenti più rilevanti da una vasta base di conoscenza. Richiede un database vettoriale e meccanismi di ricerca efficienti (lessicale o semantica).
  • Chunking: Suddivisione di documenti di grandi dimensioni in parti semanticamente correlate o di dimensione fissa per l'indicizzazione e il successivo recupero tramite RAG.
  • Summarizzazione: Compressione di una lunga cronologia di dialogo o di documenti voluminosi per trasmettere il significato principale all'interno della finestra di contesto limitata.
  • Gestione della Memoria (Memory Management): Utilizzo di diverse strategie per archiviare e recuperare la cronologia del dialogo in chatbot e agenti (ad esempio, ConversationBufferMemory, ConversationSummaryBufferMemory in LangChain).
  • Finestra Scorrevole (Sliding Window): Mantenimento nel contesto solo degli N ultimi messaggi del dialogo.
  • Filtraggio e Prioritizzazione: Selezione dei frammenti di contesto più rilevanti in base alla loro importanza (ad esempio, tramite i punteggi di rilevanza forniti dalla ricerca) prima dell'assemblaggio del prompt finale.

Ruolo del Contesto nel Prompt Engineering

  • Aumento della Rilevanza: Il contesto permette al modello di generare risposte che corrispondono precisamente alla richiesta e alla situazione dell'utente.
  • Riduzione delle Allucinazioni: Fornire informazioni fattuali (tramite RAG) obbliga il modello a basarsi su di esse invece di inventare fatti.
  • Personalizzazione: Il contesto sull'utente (preferenze, cronologia) permette di adattare le risposte.
  • Gestione dello Stato: Nei dialoghi e nei processi multi-passo, il contesto (cronologia) garantisce la continuità e la consapevolezza del modello dei passi precedenti.
  • Superamento dei Limiti della Conoscenza del Modello: RAG permette al modello di rispondere a domande su eventi avvenuti dopo il suo addestramento, o su dati specifici/privati.

Limitazioni

  • Limite della Finestra di Contesto: Nonostante l'aumento fino a 1-2 milioni di token nei modelli moderni, l'elaborazione di tali volumi può essere costosa e lenta. Richiede strategie efficaci di compressione e selezione (RAG, summarizzazione).
  • Ricerca del Contesto Rilevante: L'efficacia del RAG dipende dalla qualità della ricerca. Un contesto estratto in modo errato può confondere il modello ("spazzatura in ingresso - spazzatura in uscita").
  • "Valle dell'Indifferenza" (Valley of Meh): Le informazioni posizionate al centro di un prompt molto lungo possono essere ignorate dal modello. Richiede una strutturazione del prompt (ad esempio, la "tecnica sandwich").
  • Rischio di Iniezione di Contesto: Se il contesto viene estratto da fonti non affidabili (ad esempio, pagine web), può contenere istruzioni dannose (prompt injection).

Vedi anche

  • Modelli linguistici di grandi dimensioni
  • Finestra di contesto
  • Database vettoriali
  • LangChain

Letteratura

  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
  • Chen, S. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
  • Packer, C. et al. (2023). MemGPT: Towards LLMs as Operating Systems. arXiv:2310.08560.
  • Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
  • Sahoo, P. et al. (2024). A Systematic Survey of Prompt Engineering in Large Language Models: Techniques and Applications. arXiv:2402.07927.
  • Kim, S. H. et al. (2024). Theanine: Revisiting Memory Management in Long-term Conversations with Timeline-augmented Response Generation. arXiv:2406.10996.
  • Chen, S. et al. (2024). StruQ: Defending Against Prompt Injection with Structured Queries. arXiv:2402.06363.
  • Zhong, M. et al. (2024). Understanding the RoPE Extensions of Long-Context LLMs: An Attention Perspective. arXiv:2406.13282.
  • Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
  • Self-Instruct (2025). Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.