Nella Silicon Valley, un nuovo concetto sta catturando l'attenzione e sta diventando il tema più discusso: il "Kontext-Engineering". Con il sostegno esplicito di figure di spicco come Andrej Karpathy, guru dell'intelligenza artificiale ed ex direttore di Tesla AI, il tradizionale "Prompt-Engineering" è improvvisamente passato di moda. Questo spostamento di paradigma segna un momento cruciale nello sviluppo dell'intelligenza artificiale, in particolare per quanto riguarda la creazione e l'ottimizzazione degli agenti AI.
Il concetto di "Kontext-Engineering" è descritto come una forma di "programmazione dell'atmosfera completamente nuova". Secondo Karpathy e altri esperti della Silicon Valley, il successo o il fallimento di un agente AI non dipende più esclusivamente dalla complessità dei suoi algoritmi o dalla raffinatezza del codice, ma piuttosto dalla qualità e completezza del contesto fornito. Questo lo rende un campo di studio e applicazione incredibilmente caldo e promettente.
Anche Tobias Lütke, CEO di Shopify, ha espresso la sua preferenza per il "Kontext-Engineering", definendolo una competenza fondamentale che descrive con precisione l'arte di consentire a un Large Language Model (LLM) di risolvere i problemi in modo sensato, semplicemente fornendo tutte le informazioni di base necessarie per un compito specifico. Questa enfasi sulla totalità delle informazioni e sulla loro presentazione corretta è ciò che distingue il "Kontext-Engineering" dal suo predecessore, il "Prompt-Engineering", che si concentrava maggiormente sulla formulazione di istruzioni concise.
Perché il "Kontext-Engineering" è diventato improvvisamente popolare?
L'ascesa improvvisa del "Kontext-Engineering" è intrinsecamente legata all'emergere e alla crescente importanza degli agenti AI. Greg Brockman, presidente di OpenAI, ha dichiarato pubblicamente in diverse occasioni che il 2025 sarà "l'anno dell'emergere degli agenti AI". In questo scenario, 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 sua "memoria di lavoro limitata" assumono un'importanza ancora maggiore.
È stato osservato che la maggior parte dei casi di fallimento degli agenti AI non sono dovuti a un malfunzionamento del modello stesso, ma piuttosto a un contesto insufficiente o mal formulato. Questo punto cruciale sottolinea la necessità di un approccio più olistico alla fornitura di informazioni, che va ben oltre la semplice formulazione di un prompt.
Cos'è il contesto?
Per comprendere appieno il "Kontext-Engineering", è fondamentale ampliare la definizione di "contesto". Non si tratta più solo del 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 una serie di componenti chiave:
- Istruzioni/Prompt di sistema: L'insieme iniziale di istruzioni che definisce il comportamento del modello in un dialogo. Questo può e dovrebbe includere esempi, regole e altre direttive per guidare l'LLM.
- Prompt dell'utente: Il compito o la domanda attuale posti dall'utente. È la richiesta specifica a cui il modello deve rispondere in un dato momento.
- Stato/Cronologia (memoria a breve termine): Il dialogo attuale, comprendente tutte le risposte dell'utente e del modello fino a quel momento. Questa è la memoria di lavoro immediata dell'LLM.
- Memoria a lungo termine: Un archivio di conoscenza persistente accumulato attraverso più dialoghi precedenti. Contiene preferenze dell'utente apprese, riepiloghi di progetti passati o fatti da conservare per uso futuro.
- Informazioni recuperate (RAG - Retrieval Augmented Generation): Conoscenza esterna e in tempo reale, ovvero informazioni pertinenti recuperate da documenti, database o API, utilizzate per rispondere a domande specifiche.
- Strumenti disponibili: La definizione di tutte le funzioni o gli strumenti integrati che il modello può richiamare, come ad esempio
check_inventoryosend_email. Questi strumenti estendono le capacità del modello al di là della semplice generazione di testo. - Output strutturato: La definizione del formato di risposta desiderato per il modello, ad esempio un oggetto JSON. Questo garantisce che l'output sia utile e facilmente elaborabile da altri sistemi.
Si può notare che, a differenza del "Prompt-Engineering", che si concentra sulla creazione di istruzioni perfette in una singola stringa di testo, l'ambito del "Kontext-Engineering" è considerevolmente più ampio e profondo. Non si tratta solo di cosa chiedere, ma di come presentare un intero universo di informazioni rilevanti.
Una definizione semplice di "Kontext-Engineering"
In termini più semplici, il "Kontext-Engineering" è una disciplina che si occupa della progettazione e costruzione di sistemi dinamici. Questi sistemi hanno la capacità di fornire le informazioni e gli strumenti giusti, al momento giusto e nel formato corretto, garantendo che l'LLM abbia tutto il necessario per completare un dato compito con la massima efficienza e accuratezza.
Caratteristiche distintive del "Kontext-Engineering"
Il "Kontext-Engineering" si distingue per diverse caratteristiche fondamentali:
- È un sistema, non una stringa: Il contesto non è un modello di prompt statico, ma l'output di un sistema che è già in esecuzione prima della chiamata principale dell'LLM. Questo implica una logica e un'architettura più complesse dietro la generazione del contesto.
- È dinamico: Il contesto viene generato all'istante e personalizzato per il compito attuale. Ad esempio, una richiesta potrebbe richiedere dati di calendario, mentre un'altra potrebbe necessitare di contenuti e-mail o risultati di ricerca dal web. La sua natura adattiva è cruciale per la sua efficacia.
- Pone l'accento 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 che al modello vengono fornite conoscenze (informazioni) e capacità (strumenti) solo quando sono necessarie e utili, evitando sovraccarichi inutili.
- Pone l'accento sul formato: Il modo in cui le informazioni vengono presentate è di importanza cruciale. Un riepilogo conciso è di gran lunga migliore dell'elenco di dati grezzi; una chiara definizione dell'interfaccia di uno strumento è anche molto più efficace di un'istruzione vaga. La chiarezza e l'organizzazione sono essenziali.
È sia scienza che arte
Nella sua valutazione approfondita, Andrej Karpathy ha anche sostenuto che il "Kontext-Engineering" è 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, il "Kontext-Engineering" è una scienza profonda e anche un'arte raffinata.
Il cuore di questa disciplina consiste nel riempire la finestra di contesto per l'azione successiva con esattamente le informazioni giuste. Si parla di una scienza perché richiede la combinazione di una serie di tecniche, tra cui:
- Descrizione e spiegazione del compito
- Esempi di Few-Shot Learning
- RAG (Retrieval Augmented Generation)
- Dati rilevanti (potenzialmente multimodali)
- Strumenti
- Stato e cronologia
- Compressione delle informazioni, ecc.
Se ci sono troppe poche informazioni o il formato è sbagliato, l'LLM non avrà abbastanza contesto per dare il massimo delle prestazioni. Al contrario, se ci sono troppe informazioni o queste non sono rilevanti, i costi dell'LLM aumentano e le prestazioni diminuiscono. Trovare il giusto equilibrio è una sfida complessa.
Si parla di un'arte perché dipende dall'intuizione e dalla guida dello sviluppatore per le "caratteristiche" del Large Language Model. La capacità di "sentire" come l'LLM risponderà a diversi tipi e volumi di contesto è un'abilità che si sviluppa con l'esperienza.
Oltre il "Kontext-Engineering": la complessità delle applicazioni LLM
È importante sottolineare che il "Kontext-Engineering" è solo una parte, seppur fondamentale, di un'applicazione LLM completa. Un'applicazione LLM industriale deve anche affrontare molte altre sfide e componenti, tra cui:
- 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à giusti.
- Gestire il processo UI/UX di "Genera - Valida".
- E molto altro ancora, come barriere di sicurezza, sicurezza del sistema, valutazione dell'efficacia, elaborazione parallela, pre-fetching dei dati, ecc.
Pertanto, il "Kontext-Engineering" è solo una piccola parte di un livello software emergente, esteso e complesso. Questo livello software è responsabile dell'integrazione e del coordinamento di singole chiamate LLM e di molte altre operazioni per creare un'applicazione LLM completa e robusta. Karpathy ha dichiarato che è obsoleto e completamente errato definire tali applicazioni superficialmente come "ChatGPT-Wrapper".
Alcuni utenti di Internet hanno ironicamente soprannominato il "Kontext-Engineering" 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 una componente in realtà piuttosto complessa." Questo sottolinea la sua intenzione di promuovere una comprensione più profonda delle interazioni tra utenti e modelli AI. Mentre si userebbe un prompt per chiedere a un LLM "Perché il cielo è blu?", un'applicazione completa deve costruire un contesto ricco per il Large Language Model al fine di risolvere i compiti a esso specificamente assegnati.
Il successo o il fallimento di un agente dipende da esso
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 risiede proprio nella qualità del contesto presentato.
Immaginate un assistente AI che deve organizzare una riunione basandosi su una semplice e-mail. Se riceve solo la frase "Organizza una riunione", le sue possibilità di successo sono limitate. Ma se il contesto include il calendario dell'utente, le sue preferenze orarie, l'elenco dei partecipanti, la loro disponibilità, lo scopo della riunione, i documenti pertinenti da discutere e le funzioni disponibili per inviare inviti e controllare i fusi orari, allora l'agente ha tutte le informazioni per svolgere il compito in modo efficace. Questo è l'essenza del "Kontext-Engineering" e il motivo per cui sta diventando il fulcro dell'innovazione AI nella Silicon Valley.