Padroneggiare Genkit Middleware per le applicazioni Agent

Ultimo aggiornamento: 22 giugno 2026
  • Il middleware di Genkit consente di intercettare e modificare il ciclo di generazione dell'IA utilizzando hook di modello, strumenti e flussi generali.
  • Include funzionalità native per i tentativi automatici, il passaggio automatico tra modelli, il controllo dei file e l'approvazione umana degli strumenti.
  • È compatibile con TypeScript, Go e Dart, il che semplifica la creazione di livelli di sicurezza e osservabilità senza alterare la logica di business.

Middleware Genkit

Se sviluppate applicazioni di intelligenza artificiale, sapete bene che non si tratta solo di scrivere il prompt perfetto. Quando si passa da un prototipo a qualcosa che funziona effettivamente in produzione, ci si imbatte in ostacoli come timeout delle API, limiti di quota o la necessità di una convalida umana per le azioni critiche. È qui che entra in gioco Genkit Middleware , una soluzione di Google progettata per consentire agli sviluppatori di aggiungere livelli di controllo senza dover riscrivere tutto il codice dell'agente.

In sostanza, stiamo parlando di un sistema di intercettori che viene posizionato attorno alle chiamate di generazione, invece di incapsulare ogni singola funzione. generate() In un blocco di controllo manuale, è possibile definire una serie di passaggi che la richiesta deve attraversare. Ciò consente di... molto più pulito e modulareseparando la logica applicativa da problematiche trasversali quali la sicurezza del sistema, l'osservabilità e la resilienza.

Come funziona esattamente il sistema di intercettazione?

Architettura middleware Genkit

Per comprendere meglio questo concetto, consideriamo il ciclo di vita di una richiesta in Genkit. In genere, il modello genera una risposta, decide se è necessario utilizzare uno strumento, esegue tale strumento e rielabora il risultato. Il middleware di Genkit non rappresenta semplicemente un collo di bottiglia; offre tre punti di ancoraggio distinti per intervenire in questo processo:

  • Genera Hook: Esegue una sola volta per ciclo di generazione. È il sito ideale per iniettare istruzioni nel sistema oppure modificare i messaggi prima che vengano inviati.
  • Gancio per modello: Avvolge la chiamata diretta all'API del modello. È essenziale per la gestione tentativi automatici, implementare cache o registrare il tempo impiegato da LLM per rispondere.
  • Strumento a uncino: Si comporta proprio come uno strumento che sta per essere eseguito. È perfetto per creare sistemi di approvazione dove un essere umano deve dare l'approvazione prima che l'agente elimini un file o effettui un pagamento.
  Django in Python: cos'è, a cosa serve e come sfruttarlo al meglio

Questa struttura si comporta in modo simile ai middleware presenti in framework come Express o Koa, funzionando come una cipolla: la richiesta entra attraverso lo strato esterno, raggiunge il centro (il modello) e poi esce di nuovo, attraversando gli strati in ordine inverso. Il vantaggio principale è che è possibile concatenare più middleware in un array, definendo così l'ordine di esecuzione preciso.

Catalogo dei middleware preinstallati

Funzioni del middleware Genkit

Così non dobbiamo reinventare la ruota, il pacchetto @genkit-ai/middleware È già dotato di diversi strumenti pronti all'uso. Uno dei più utili è... tentativiche utilizza un algoritmo di backpedaling esponenziale con jitter. Ciò ci impedisce di sovraccaricare l'API in caso di errori transitori come RESOURCE_EXHAUSTED o UNAVAILABLEeffettuare la domanda molto più robusto in caso di guasti momentanei.

Se la quota del modello principale si esaurisce, il middleware di fallback viene in soccorso. Consente di configurare un elenco di modelli alternativi in ​​modo che, se il primo non funziona, la richiesta venga automaticamente instradata a un modello più piccolo o più economico, evitando che l'utente finale visualizzi un errore. Questa è una strategia fondamentale per garantire la continuità del servizio in ambienti ad alta domanda.

Per quanto riguarda la sicurezza, disponiamo del middleware di approvazione dello strumentoQuesto sistema crea una lista bianca di strumenti sicuri; qualsiasi azione non presente in tale lista genererà un errore. ToolInterruptErrorcostringendo il sistema a fermarsi finché qualcuno non conferma l'azione. Questo è aggravato dal middleware di filesystemche concede al modello l'accesso ai file locali ma strettamente limitato in una directory principale per impedire all'IA di curiosare dove non dovrebbe.

  Microsoft Copilot: come usarlo e tutto ciò che puoi fare con esso

Gestione degli strumenti Genkit

Infine, abbiamo la funzionalità di abilitàQuesto middleware analizza le cartelle alla ricerca di file SKILL.md e li inietta nel prompt di sistema. È un modo molto elegante per gestire la conoscenza dell'agente, consentendogli di caricare competenze specifiche su richiesta, senza riempire il prompt principale con testo superfluo.

Creazione di middleware personalizzato

Sviluppo di middleware personalizzato

Quando le opzioni native sono insufficienti, Genkit ci consente di costruire i nostri intercettori utilizzando la funzione generateMiddlewareQuesto strumento ci consente di definire schemi di configurazione utilizzando Zod, garantendo che i parametri che passiamo siano corretto e digitatoPossiamo creare qualsiasi cosa, da semplici registratori che annotano ogni entrata e uscita, a sistemi complessi per la scrittura di dati sensibili (PII).

Un caso d'uso molto efficace sarebbe l'implementazione di un filtro dei contenuti . Si potrebbe creare un hook del modello che analizzi la risposta e, se rileva parole proibite o dati interni sui prezzi, blocchi o pulisca la risposta prima che raggiunga l'utente. È anche possibile gestire le quote per utente interrogando un database nell'hook di generazione prima di consentire la prosecuzione della chiamata.

Differenze tra implementazioni ed ecosistema

Supporto multipiattaforma per Genkit

Sebbene il concetto sia universale, esistono delle sfumature a seconda del linguaggio. In TypeScript, il sistema è molto dinamico e permette di definire middleware nei file. .prompt attraverso il campo useIn Go, l'implementazione è più rigida perché è un linguaggio compilato, il che ha richiesto la creazione di un registrazione middleware per poter convertire i nomi di testo in oggetti funzionali durante l'esecuzione.

È importante non confondere Genkit con il Google Agent Development Kit (ADK). Mentre l'ADK è progettato per sistemi multi-agente complessi e ad alta intensità di risorse basati sull'infrastruttura GCP, Genkit è la soluzione ideale per aggiungere funzionalità di agente ad applicazioni esistenti (web, mobile, ecc.). Inoltre, l'intero flusso del middleware può essere monitorato dall'interfaccia utente per sviluppatori di Genkit , consentendo di tracciare con precisione quale hook ha modificato la richiesta e il percorso seguito per raggiungere il risultato finale.

  Come usare Switch in Python: una guida definitiva con esempi e alternative

L'arrivo di questo sistema trasforma la funzione di generazione in una pipeline realmente componibile . Integrando la gestione degli errori, la sicurezza dei file e la validazione umana in un livello separato, lo sviluppo degli agenti diventa un processo molto più professionale e meno soggetto a errori catastrofici in produzione.