Nella frenetica e innovativa atmosfera della Silicon Valley, un nuovo paradigma sta catturando l'attenzione degli esperti di intelligenza artificiale, superando rapidamente l'approccio che fino a poco tempo fa dominava le conversazioni: la "Kontext-Engineering" o ingegneria del contesto. Questo concetto, sostenuto personalmente da figure di spicco come l'influente guru dell'IA Karpathy, sta rendendo obsoleto il tradizionale prompt engineering, emergendo come quella che viene definita una "programmazione di atmosfera completamente nuova". La vera chiave del successo o del fallimento di un agente basato su intelligenza artificiale, si sostiene, non risiede più nella complessità del codice, ma piuttosto nell'efficacia e nella qualità dell'ingegneria del contesto.
Il brusco cambiamento di preferenza non è casuale. Ciò che è ora in cima alla lista delle priorità nella Silicon Valley non è più il prompt engineering, bensì l'ingegneria del contesto. Persino l'acclamato guru dell'IA Karpathy ha apertamente espresso il suo sostegno a questo nuovo approccio. Anche Tobias Lütke, CEO di Shopify, ha dichiarato di preferire l'ingegneria del contesto, riconoscendola come una competenza fondamentale che descrive con precisione un'arte essenziale: quella di fornire a un Large Language Model (LLM) informazioni di sfondo complete per un dato compito, consentendogli così di risolvere i problemi in modo razionale ed efficace. Ma perché l'ingegneria del contesto è diventata improvvisamente così popolare, quasi da un giorno all'altro?
La repentina ascesa dell'ingegneria del contesto
La ragione principale di questa improvvisa fama risiede nell'emergere degli agenti AI. Greg Brockman, presidente di OpenAI, ha più volte dichiarato pubblicamente che "il 2025 sarà l'anno della nascita degli agenti AI". In questo scenario in evoluzione, il fattore decisivo per il successo o il fallimento di un agente è la "qualità del contesto" fornito. Ciò significa che le informazioni caricate nella "memoria di lavoro limitata" del modello diventano di importanza paramount. La maggior parte dei casi in cui gli agenti AI falliscono non sono imputabili a un difetto del modello stesso, ma a un fallimento del contesto.
Per comprendere appieno l'ingegneria del contesto, è fondamentale espandere la definizione di "contesto". Non si tratta più solo di quel singolo prompt che si invia a un LLM. Il contesto può essere considerato come "tutto ciò che il modello vede prima di generare una risposta", e include diversi elementi chiave, ognuno dei quali contribuisce in modo significativo alla capacità del modello di elaborare e rispondere in modo appropriato.
Componenti fondamentali del contesto
- Istruzioni/System-Prompt: L'insieme iniziale di istruzioni che definisce il comportamento del modello in un dialogo. Queste possono e spesso dovrebbero includere esempi, regole e linee guida per orientare la risposta del modello.
- User-Prompt: Il compito o la domanda attuale posta dall'utente. È l'input diretto che il modello deve elaborare per generare una risposta pertinente.
- Stato/Cronologia (memoria a breve termine): Il dialogo in corso, che comprende le risposte sia dell'utente che del modello fino a quel momento. Questa cronologia è cruciale per mantenere la coerenza e la fluidità della conversazione.
- Memoria a lungo termine: Un repository di conoscenza permanente accumulato attraverso più dialoghi precedenti. Include preferenze dell'utente apprese, riassunti di progetti passati o fatti da conservare per un uso futuro, arricchendo la base di conoscenza del modello.
- Informazioni recuperate (RAG - Retrieval Augmented Generation): Conoscenze esterne e in tempo reale, informazioni pertinenti estratte da documenti, database o API, utilizzate per rispondere a domande specifiche o per fornire dettagli aggiuntivi.
- Strumenti disponibili: La definizione di tutte le funzioni o degli strumenti integrati che il modello può richiamare, come ad esempio
check_inventoryper verificare le scorte osend_emailper inviare una email. Questi strumenti estendono le capacità operative del modello. - Output strutturato: La definizione del formato della risposta del modello, ad esempio un oggetto JSON. Questo garantisce che l'output sia coerente e facilmente utilizzabile da altri sistemi o applicazioni.
Si può notare che, a differenza del "prompt engineering", che si concentra sulla creazione di istruzioni perfette in una singola stringa di testo, il campo dell'ingegneria del contesto è molto più ampio e complesso. In termini semplici, l'ingegneria del contesto è una disciplina che si occupa della progettazione e della costruzione di sistemi dinamici. Questi sistemi sono in grado di fornire le informazioni e gli strumenti giusti, al momento giusto e nel formato corretto, affinché l'LLM abbia tutto ciò di cui ha bisogno per completare un compito specifico con la massima efficienza.
Caratteristiche distintive dell'ingegneria del contesto
L'ingegneria del contesto si distingue per diverse caratteristiche fondamentali che la rendono un approccio superiore e più olistico:
- È 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. Questo implica una logica e un'architettura complesse che orchestrano le informazioni.
- È 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 di email o risultati di ricerca dal web, rendendo il contesto altamente adattabile.
- Enfatizza la fornitura delle informazioni e degli strumenti giusti al momento giusto: Il compito principale è garantire che il modello non perda dettagli importanti (ricordando il principio "garbage in, garbage out"). Ciò significa fornire al modello conoscenza (informazioni) e capacità (strumenti) solo quando è necessario e utile, evitando sovraccarichi inutili.
- Enfatizza il formato: Il modo in cui le informazioni vengono presentate è di cruciale importanza. Un riassunto conciso è di gran lunga migliore che elencare dati grezzi; una chiara definizione dell'interfaccia di uno strumento è anche molto più efficace di un'istruzione vaga. La chiarezza e la strutturazione del formato ottimizzano l'elaborazione da parte dell'LLM.
L'ingegneria del contesto: scienza e arte
Nella sua valutazione approfondita, Karpathy ha anche 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 qualsiasi applicazione LLM di livello industriale, l'ingegneria del contesto è sia una scienza profonda che un'arte abile. Il suo cuore consiste nel riempire la finestra di contesto per la prossima azione con esattamente le informazioni giuste.
Si parla di scienza perché per realizzarla è necessario combinare una serie di tecniche, tra cui: la descrizione e la spiegazione del compito, esempi di few-shot learning, RAG (Retrieval Augmented Generation) per recuperare informazioni pertinenti, dati rilevanti (possibilmente multimodali), strumenti, stato e cronologia, compressione delle informazioni e molto altro. Se ci sono troppe poche informazioni o il formato è errato, l'LLM non avrà abbastanza contesto per dare il massimo delle prestazioni; al contrario, se ci sono troppe informazioni o sono irrilevanti, i costi dell'LLM aumentano e le prestazioni diminuiscono. È un equilibrio piuttosto complesso da gestire.
Si parla di arte perché dipende dall'intuizione e dalla guida dello sviluppatore per comprendere le "caratteristiche" intrinseche del Large Language Model. È qui che l'esperienza umana e la finezza nell'interazione con l'IA giocano un ruolo cruciale, permettendo di affinare il contesto in modi che la mera logica computazionale non potrebbe catturare da sola.
Oltre all'ingegneria del contesto stessa, un'applicazione LLM completa deve gestire molti altri aspetti cruciali. Questi includono: scomporre 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 ancora, come barriere di sicurezza, sicurezza del sistema, valutazione dell'efficacia, elaborazione parallela, pre-fetching dei dati, ecc.
Per queste ragioni, l'ingegneria del contesto è solo una piccola parte di un livello software emergente, esteso e complesso. Questo livello software è responsabile dell'integrazione e del coordinamento delle singole chiamate LLM e di molte altre operazioni, al fine di creare un'applicazione LLM completa e funzionale. Karpathy ha dichiarato che definire con leggerezza tali applicazioni come "ChatGPT-wrapper" è obsoleto e completamente sbagliato, poiché non rende giustizia alla complessità e all'ampiezza dell'architettura sottostante.
Alcuni utenti di internet hanno scherzato, definendo l'ingegneria del contesto come la nuova "programmazione dell'atmosfera". Karpathy ha risposto: "Non voglio necessariamente introdurre una nuova parola. Trovo solo che, quando si parla di 'prompt', si tende a semplificare eccessivamente una componente in realtà piuttosto complessa." È un conto usare un prompt per chiedere a un LLM "Perché il cielo è blu?", ma un'applicazione deve costruire un contesto per il Large Language Model al fine di risolvere i compiti a esso dedicati e su misura.
Il successo di un agente dipende dalla qualità del contesto
In effetti, il segreto per creare un agente AI veramente efficiente non risiede nella complessità del codice, ma nella qualità del contesto che viene fornito. La differenza fondamentale tra un prodotto dimostrativo insufficiente e un agente impressionante risiede proprio nella qualità del contesto offerto. Immaginate un assistente AI che deve creare una riunione o redigere note di un incontro basandosi su una semplice email: senza un contesto ben ingegnerizzato che includa le preferenze dell'utente, l'agenda, i partecipanti e lo storico delle conversazioni, l'efficacia dell'assistente sarebbe gravemente compromessa. L'ingegneria del contesto, quindi, non è solo una tendenza passeggera, ma la fondazione su cui si costruiranno le applicazioni di intelligenza artificiale più avanzate e performanti del futuro.