Il panorama dell'intelligenza artificiale è in continua evoluzione, e con esso anche la terminologia e le metodologie adottate dagli esperti. Un concetto che sta guadagnando nuova rilevanza e una definizione più ampia è l'ingegneria del contesto, che di fatto rappresenta un'evoluzione e un rebranding dell'ingegneria dei prompt. Questo articolo, pubblicato originariamente il 11 agosto 2025 alle 07:06 dal "Divine Translation Bureau" (神译局), un team di traduzione di 36Kr specializzato in tecnologia, affari, ambiente di lavoro e stili di vita, mira a introdurre nuove tecnologie, prospettive e tendenze dall'estero.

Secondo la redazione, l'ingegneria dei prompt si sta trasformando in ingegneria del contesto. Attraverso un caso studio concreto che impiega un agente n8n, questo articolo dimostrerà come l'output strutturato, l'iniezione dinamica del tempo e l'ottimizzazione della cache RAG siano diventate le tre strategie fondamentali per potenziare l'efficienza dei Large Language Models (LLM).

Cos'è l'ingegneria del contesto?

Solo pochi anni fa, molti ricercatori di spicco nel campo dell'IA sostenevano che l'ingegneria dei prompt fosse destinata a scomparire. Questa previsione, tuttavia, si è rivelata profondamente errata. Al contrario, l'ingegneria dei prompt è oggi più cruciale che mai, tanto da meritare di essere re-incorniciata sotto il nuovo e più descrittivo termine di "ingegneria del contesto".

Sì, è un altro termine elegante per descrivere il processo chiave di adattamento delle istruzioni e del contesto associato per consentire ai Large Language Models (LLM) di eseguire compiti. Ci sono già molte discussioni sull'ingegneria del contesto da parte di figure influenti come Ankur Goyal, Walden Yan, Tobi Lutke e Andrej Karpathy. Tuttavia, l'obiettivo qui è condividere una prospettiva personale e illustrare l'applicazione pratica dell'ingegneria del contesto attraverso i passaggi concreti nello sviluppo di un flusso di lavoro di un agente IA.

Sebbene non sia chiaro chi abbia coniato per primo il termine "ingegneria del contesto", un diagramma di Dex Horthy (non mostrato in questo estratto, ma citato come riferimento) può aiutare a comprenderne il contenuto. Personalmente, il termine "ingegneria del contesto" è preferibile in quanto copre in modo più completo il cuore dell'ingegneria dei prompt e i compiti correlati. La professionalità dell'ingegneria dei prompt è stata spesso messa in discussione, poiché molte persone la confondono con "prompt ciechi", ovvero semplici descrizioni di compiti inserite in un modello come ChatGPT. Un prompt cieco è solo una domanda posta al sistema, mentre l'ingegneria dei prompt richiede un'attenta progettazione del contesto e della struttura del prompt; forse avrebbe dovuto essere chiamata ingegneria del contesto fin dall'inizio.

L'ingegneria del contesto è un passo più avanzato: richiede la progettazione di un'architettura di contesto completa, che spesso implica la raccolta, il potenziamento e l'ottimizzazione della conoscenza del sistema attraverso metodologie rigorose, non semplicemente raggiungibili con un prompt di base. Dal punto di vista di uno sviluppatore, l'ingegneria del contesto è il processo di ottimizzazione delle istruzioni e del contesto attraverso un processo iterativo per guidare l'LLM al raggiungimento dell'obiettivo desiderato. Ciò include la creazione di una procedura di valutazione per misurare l'efficacia della strategia.

Data la rapida evoluzione nel campo dell'IA, si propone di ampliare ulteriormente la definizione di ingegneria del contesto: il processo di progettazione e ottimizzazione di istruzioni e contesto associato per LLM e modelli IA avanzati, al fine di consentire loro di eseguire compiti in modo efficiente. Questa definizione non solo abbraccia gli LLM basati su testo, ma anche le ottimizzazioni di contesto sempre più diffuse per i modelli multimodali.

Processi chiave nell'ingegneria del contesto

L'ingegneria del contesto comprende l'ingegneria dei prompt e i seguenti processi correlati, evidenziando la sua natura olistica:

  • Progettazione e gestione delle catene di prompt (se applicabile): Creare sequenze logiche di prompt per guidare il modello attraverso compiti complessi.
  • Debugging delle istruzioni/prompt di sistema: Identificare e correggere errori o ambiguità nelle istruzioni fornite all'LLM.
  • Gestione degli elementi dinamici del prompt (ad esempio, input utente, data e ora): Integrare informazioni variabili in tempo reale per rendere i prompt più pertinenti.
  • Ricerca e preparazione della conoscenza rilevante (cioè RAG - Retrieval Augmented Generation): Recuperare informazioni esterne pertinenti e incorporarle nel contesto del prompt per migliorare la qualità delle risposte.
  • Potenziamento delle query: Affinare le query per renderle più precise e produttive quando interagiscono con sistemi di recupero delle informazioni.
  • Definizione e descrizione degli strumenti (nello scenario di un sistema di agenti): Specificare quali strumenti l'agente IA può utilizzare e come.
  • Preparazione e ottimizzazione delle dimostrazioni few-shot: Fornire al modello pochi esempi di input/output per guidarlo a svolgere compiti simili.
  • Input e output strutturati (ad esempio, delimitatori/formato JSON): Definire formati chiari per l'input e l'output del modello per garantire coerenza e facilitare l'elaborazione.
  • Memoria a breve termine (gestione dello stato/contesto storico) e memoria a lungo termine (recupero di conoscenza rilevante da un database vettoriale): Gestire la persistenza delle informazioni per conversazioni continue e per l'accesso a una vasta base di conoscenza.
  • E altre tecniche per ottimizzare i prompt di sistema per gli LLM.

In sintesi, l'obiettivo dell'ingegneria del contesto è ottimizzare le informazioni inserite nella finestra di contesto dell'LLM. Ciò implica anche la necessità di filtrare le informazioni "rumore" – una vera e propria arte che richiede una misurazione sistematica delle prestazioni dell'LLM.

Applicazione pratica dell'ingegneria del contesto

Per illustrare la pratica dell'ingegneria del contesto, esaminiamo un esempio concreto di come sia stata implementata per un'applicazione multi-agente auto-costruita per ricerche approfondite. Questo flusso di lavoro di agente è stato sviluppato utilizzando n8n (ma la scelta dello strumento è irrilevante ai fini concettuali), e l'architettura completa è rappresentata in un diagramma (non incluso qui, ma parte della fonte originale).

All'interno di questo flusso di lavoro, l'"Agente di pianificazione della ricerca" è responsabile della generazione di un piano di ricerca basato sulla query dell'utente. Ecco il prompt di sistema scritto per questo sotto-agente, che è un eccellente esempio di ingegneria del contesto in azione:

Lei è un pianificatore di ricerca professionale. Il Suo compito è suddividere query di ricerca complesse (racchiuse tra <user_query></user_query>) in sotto-compiti di ricerca concreti, dove ogni sotto-compito si concentra su diversi aspetti o tipi di fonte.

Data e ora attuali: {{ $now.toISO() }}

Ogni sotto-compito deve includere quanto segue:
1. ID univoco della stringa per il sotto-compito (ad esempio, 'subtask_1', 'news_update')
2. Istruzione di ricerca concreta che si concentra su un aspetto della query principale
3. Tipo di fonte di ricerca (Web/Notizie/Accademia/Biblioteca Specializzata)
4. Periodo di tempo (Oggi/Ultima Settimana/Recentemente/Ultimo Anno/Indipendente dal Tempo)
5. Ambito di applicazione (Tecnologia/Scienza/Salute ecc.)
6. Priorità (1 massima - 5 minima)

Ad eccezione di time_period e domain_focus, che possono essere opzionali, tutti gli altri campi (id/query/source_type/time_period/domain_focus/priority) sono obbligatori.

Crei 2 sotto-compiti che insieme coprano l'argomento in modo completo, concentrandosi su diverse dimensioni informative o fonti.

Dopo aver ottenuto le informazioni sul sotto-compito, deve aggiungere due campi: start_date e end_date. Per favore, derivi l'intervallo di date in base alla data attuale e al time_period selezionato. Un esempio del formato è il seguente:
"start_date": "2024-06-03T06:00:00.000Z",
"end_date": "2024-06-11T05:59:59.999Z",

In questo prompt, molti aspetti devono essere attentamente considerati: quale contesto concreto dovremmo effettivamente fornire affinché l'agente di pianificazione possa eseguire il compito in modo efficiente? Come si può notare, ciò richiede non solo la progettazione di un semplice prompt o di un'istruzione, ma anche uno spirito sperimentale e la fornitura del contesto chiave al modello per ottimizzare l'esecuzione del compito.

Analizziamo ora i componenti centrali di un'ingegneria del contesto efficace, basandoci sull'esempio fornito.

Istruzioni

Le istruzioni sono le direttive operative più importanti per il sistema. Nell'esempio, la prima parte del prompt stabilisce chiaramente il ruolo e il compito dell'agente:

"Lei è un pianificatore di ricerca professionale. Il Suo compito è suddividere query di ricerca complesse (racchiuse tra ) in sotto-compiti di ricerca concreti, dove ogni sotto-compito si concentra su diversi aspetti o tipi di fonte."

Molti principianti, e persino sviluppatori IA esperti, potrebbero fermarsi a questo punto, pensando che sia sufficiente. Tuttavia, leggendo il prompt completo, si comprende quanto contesto aggiuntivo sia necessario affinché il sistema funzioni come previsto. Questo è il cuore dell'ingegneria del contesto: il sistema deve comprendere chiaramente l'ambiente del problema e i requisiti specifici. Le istruzioni non sono solo una direttiva, ma una guida che modella il comportamento del modello, definendone la personalità (pianificatore professionale) e la funzione primaria (suddividere query complesse).

Input dell'utente

L'input dell'utente, sebbene non sia stato completamente dettagliato nell'estratto originale oltre al riferimento a ``, è una componente critica che l'ingegneria del contesto deve gestire. Nell'esempio, le query di ricerca complesse dell'utente devono essere racchiuse in un delimitatore specifico, ``. Questo non solo serve a isolare l'input dell'utente dal resto del prompt di sistema, ma indica anche al modello esattamente quale parte del suo contesto deve elaborare come richiesta primaria. Un'ingegneria del contesto efficace assicura che l'input dell'utente sia correttamente interpretato e integrato con le istruzioni di sistema, consentendo al modello di applicare il suo "ruolo" e le sue "competenze" alla specifica richiesta.

Per completare un'analisi approfondita, come indicato nell'introduzione editoriale, l'output strutturato, l'iniezione dinamica del tempo e l'ottimizzazione della cache RAG sono gli altri pilastri. Nel prompt dell'agente di ricerca, l'output strutturato è evidente nella richiesta di campi specifici (ID, istruzione, tipo di fonte, ecc.) e nel formato JSON per le date. L'iniezione dinamica del tempo è visibile in `{{ $now.toISO() }}`, che fornisce al modello la data e l'ora attuali, cruciali per derivare i campi `start_date` e `end_date` in base al `time_period` selezionato. L'ottimizzazione della cache RAG, sebbene non esplicitamente dettagliata in questo prompt specifico, sarebbe il passo successivo per garantire che l'agente di pianificazione acceda alle informazioni più pertinenti e aggiornate durante la formulazione delle sue sotto-attività, riducendo al minimo il recupero di dati ridondanti o obsoleti.

In conclusione, l'ingegneria del contesto trascende la semplice formulazione di domande; è un'architettura completa per interagire con i modelli IA. Richiede una comprensione profonda di come i modelli elaborano le informazioni, una mentalità sperimentale e un'attenzione meticolosa ai dettagli per garantire che ogni elemento del contesto contribuisca all'efficienza e alla precisione dell'output del modello.