Un cambiamento fondamentale sta ridefinendo il panorama dell'intelligenza artificiale nella Silicon Valley, con l'emergere dell'“ingegneria del contesto” (context engineering) che ha rapidamente sostituito il "prompt-engineering" come pratica dominante. Questo nuovo paradigma ha ottenuto un sostegno significativo da figure di spicco nel campo dell'IA, tra cui il guru dell'IA Andrey Karpathy, che ha personalmente avallato il concetto, e il CEO di Shopify, Tobias Lütke, che lo preferisce per la sua precisa descrizione di una competenza fondamentale.

L'ingegneria del contesto viene descritta come una "programmazione di atmosfera completamente nuova", il cui successo per un agente AI non risiede in codici sofisticati, ma nella qualità del contesto fornito. In sostanza, si tratta dell'arte di abilitare i Large Language Model (LLM) a risolvere problemi in modo sensato, fornendo loro informazioni di sfondo complete per un compito specifico. Ma perché questa improvvisa ascesa e cosa la distingue dal suo predecessore?

L'ascesa improvvisa dell'ingegneria del contesto

La ragione principale dietro la crescente popolarità dell'ingegneria del contesto è l'emergere degli agenti AI. Greg Brockman, presidente di OpenAI, ha più volte dichiarato pubblicamente che "il 2025 sarà l'anno dell'emergere degli agenti AI". In questo scenario in evoluzione, il fattore decisivo per il successo o il fallimento di un agente è la "qualità del contesto" che gli viene fornito. Ciò significa che le informazioni caricate nella "memoria di lavoro limitata" di un modello diventano di importanza paramount.

La maggior parte dei casi di agenti AI che falliscono non sono dovuti a un fallimento del modello stesso, ma piuttosto a un contesto inadeguato o insufficiente. Questa rivelazione ha spostato l'attenzione degli sviluppatori e dei ricercatori dall'ottimizzazione delle singole istruzioni (prompt) alla costruzione di ambienti informativi ricchi e dinamici, essenziali per la funzionalità di un agente.

Cosa si intende per "contesto"?

Per comprendere appieno l'ingegneria del contesto, è fondamentale ampliare la definizione di "contesto". Non si tratta più solo della singola prompt inviata a un LLM. Si può piuttosto considerare come "tutto ciò che il modello vede prima di generare una risposta". Questo include diversi elementi critici:

  • Istruzioni/System-Prompt: L'insieme iniziale di istruzioni che definisce il comportamento del modello in un dialogo. Può/dovrebbe includere esempi, regole, ecc.
  • Benutzer-Prompt (Prompt utente): L'attuale compito o domanda dell'utente.
  • Status/Verlauf (Kurzzeitgedächtnis) (Stato/Cronologia - Memoria a breve termine): Il dialogo attuale, comprese le risposte dell'utente e del modello fino a quel momento.
  • Langzeitgedächtnis (Memoria a lungo termine): Un repository di conoscenza permanente accumulato attraverso dialoghi precedenti, che contiene preferenze dell'utente apprese, riassunti di progetti precedenti o fatti da conservare per uso futuro.
  • Abgerufene Informationen (RAG) (Informazioni recuperate - Retrieval Augmented Generation): Conoscenze esterne, in tempo reale, informazioni pertinenti da documenti, database o API utilizzate per rispondere a domande specifiche.
  • Verfügbare Tools (Strumenti disponibili): La definizione di tutte le funzioni o degli strumenti integrati che il modello può richiamare, come check_inventory o send_email.
  • Strukturierte Ausgabe (Output strutturato): La definizione del formato di risposta del modello, ad esempio un oggetto JSON.

È evidente che, a differenza del "prompt-engineering", che si concentra sulla creazione di istruzioni perfette in una singola stringa di testo, l'ambito dell'ingegneria del contesto è molto più ampio. In termini semplici, l'ingegneria del contesto è una disciplina che si occupa della progettazione e costruzione di sistemi dinamici. Questi sistemi sono in grado di fornire le informazioni e gli strumenti giusti, al momento giusto e nel formato giusto, in modo che l'LLM abbia tutto ciò di cui ha bisogno per svolgere un compito.

Le caratteristiche distintive dell'ingegneria del contesto

L'ingegneria del contesto si distingue per una serie di caratteristiche chiave che la rendono un approccio più olistico e potente:

  • È un sistema, non una stringa: Il contesto non è un template di prompt statico, ma l'output di un sistema che opera già prima della chiamata principale all'LLM.
  • È dinamico: Il contesto viene generato istantaneamente e adattato al compito corrente. Ad esempio, una richiesta potrebbe richiedere dati del calendario, mentre un'altra potrebbe necessitare di contenuti email o risultati di ricerca dal web.
  • Pone enfasi sulla fornitura delle informazioni e degli strumenti giusti al momento giusto: Il compito principale è garantire che il modello non perda dettagli importanti (pensate al principio "garbage in, garbage out"). Ciò significa fornire al modello conoscenza (informazioni) e capacità (strumenti) solo quando è necessario e utile.
  • Pone enfasi sul formato: Il modo in cui le informazioni vengono presentate è di importanza cruciale. Un riassunto conciso è di gran lunga migliore di un elenco di dati grezzi; una chiara definizione dell'interfaccia di uno strumento è anche molto più efficace di un'istruzione vaga.

L'ingegneria del contesto: scienza e arte

Nella sua valutazione approfondita, Karpathy ha sostenuto che l'ingegneria del contesto è una forma d'arte. Spesso si associa il termine "prompt" alla breve descrizione del compito che si invia quotidianamente a un LLM. Tuttavia, in ogni applicazione LLM di livello industriale, l'ingegneria del contesto è una scienza profonda e anche un'arte abile. Il suo nucleo consiste nel riempire la finestra di contesto per la prossima azione con esattamente le informazioni giuste.

Perché è una scienza

Si parla di una scienza perché richiede la combinazione di una serie di tecniche, tra cui:

  • Descrizione e spiegazione del compito
  • Esempi di apprendimento "few-shot"
  • RAG (Retrieval Augmented Generation)
  • Dati pertinenti (possibilmente multimodali)
  • Strumenti
  • Stato e cronologia
  • Compressione delle informazioni

Se ci sono troppe poche informazioni o il formato è sbagliato, l'LLM non avrà abbastanza contesto per fornire le migliori prestazioni; se ci sono troppe informazioni o queste non sono rilevanti, i costi dell'LLM aumentano e le prestazioni diminuiscono. Questo è un compito piuttosto complesso.

Perché è un'arte

Si parla di un'arte perché dipende dall'intuizione e dalla guida dello sviluppatore per le "caratteristiche" del Large Language Model. È qui che l'esperienza umana e la comprensione sfumata delle capacità e dei limiti di un LLM diventano fondamentali.

Oltre l'ingegneria del contesto: uno strato software complesso

L'ingegneria del contesto, pur essendo fondamentale, è solo una piccola parte di un livello software emergente, vasto e complesso. Questo strato software è responsabile dell'integrazione e della coordinazione di singole chiamate LLM e di molte altre operazioni per creare un'applicazione LLM completa. Karpathy ha dichiarato che è obsoleto e completamente sbagliato etichettare tali applicazioni come semplici "ChatGPT-wrapper".

Un'applicazione LLM completa deve affrontare molto di più, inclusi:

  • Decomporre il problema in un flusso di controllo appropriato
  • Riempire con precisione la finestra di contesto
  • Distribuire la chiamata a un LLM con il tipo e la capacità corretti
  • Gestire il processo UI/UX di "generazione - validazione"
  • E molto altro – come barriere di sicurezza, sicurezza del sistema, valutazione dell'efficacia, elaborazione parallela, pre-fetching dei dati, ecc.

Per questo motivo, ridurre la complessità di queste applicazioni a un semplice "prompt" è fuorviante.

La chiarificazione di Karpathy e l'importanza del termine

Alcuni utenti di internet hanno scherzato, definendo l'ingegneria del contesto la nuova "programmazione dell'umore" (Stimmungsprogrammierung). Karpathy ha risposto: "Non voglio necessariamente introdurre una nuova parola. Trovo solo che, quando si parla di 'prompt', si tende a semplificare una componente in realtà piuttosto complessa."

Un prompt viene utilizzato per chiedere a un LLM, "perché il cielo è blu?". Ma un'applicazione deve costruire un contesto per il Large Language Model per risolvere i compiti ad essa specifici e personalizzati. Questa distinzione è cruciale: il prompt è una domanda; il contesto è l'intero ambiente di informazioni e strumenti che consente una soluzione complessa.

Il segreto del successo degli agenti

In effetti, il segreto per creare un agente AI veramente efficiente non risiede nella complessità del codice, ma nella qualità del contesto fornito. La differenza fondamentale tra un prodotto dimostrativo insufficiente e un agente impressionante sta proprio nella qualità del contesto che gli viene presentato.

Immaginate un assistente AI che deve programmare una riunione. Un semplice prompt come "programma una riunione" è insufficiente. Un'ingegneria del contesto efficace implicherebbe fornire l'email originale, accedere al calendario dell'utente e dei partecipanti, consultare le preferenze di orario, considerare le politiche aziendali per le riunioni, richiamare strumenti di gestione del calendario e persino anticipare potenziali conflitti. Questo approccio olistico è ciò che trasforma un semplice modello in un agente intelligente e capace di operare autonomamente, rendendo l'ingegneria del contesto la vera chiave per il futuro dell'IA.