- Middleware-ul Genkit vă permite să interceptați și să modificați ciclul de generare a inteligenței artificiale folosind hook-uri de model, instrumente și fluxul general.
- Include funcții native pentru reîncercări automate, comutare între modele, controlul fișierelor și aprobarea de către instrumente umane.
- Este compatibil cu TypeScript, Go și Dart, facilitând crearea de straturi de securitate și observabilitate fără a altera logica de business.
Dacă construiești aplicații AI, știi că nu se rezumă doar la scrierea promptului perfect. Când treci de la un prototip la ceva care funcționează efectiv în producție, te confrunți cu obstacole precum expirarea API-ului, limitele de cotă sau necesitatea validării umane a acțiunilor critice. Aici intervine Genkit Middleware , o soluție Google concepută pentru a permite dezvoltatorilor să adauge niveluri de control fără a fi nevoiți să rescrie tot codul agentului lor.
Practic, vorbim despre un sistem de interceptori plasați în jurul apelurilor de generare, în loc să încapsuleze fiecare funcție. generate() Într-un bloc de control manual, puteți defini o serie de pași pe care trebuie să îi parcurgă solicitarea. Acest lucru permite ca arhitectura agenților dvs. să fie... mult mai curat și mai modular, separând logica aplicației de preocupările transversale, cum ar fi securitatea sistemului, observabilitatea și reziliența.
Cum funcționează exact sistemul de interceptare?

Pentru a înțelege mai bine acest lucru, gândiți-vă la ciclul de viață al unei cereri în Genkit. De obicei, modelul generează un răspuns, decide dacă trebuie să utilizeze un instrument, execută acel instrument și reprocesează rezultatul. Middleware-ul Genkit nu este pur și simplu un blocaj; oferă trei puncte de ancorare distincte pentru intervenția în acest proces:
- Generați cârlig: Rulează o singură dată pe ciclu de generație. Este locul ideal pentru injectează instrucțiuni în sistem sau modificați mesajele înainte ca acestea să înceapă să zboare.
- Cârlig după model: Încapsulează apelul direct către API-ul modelului. Este esențial pentru gestionarea reîncercări automate, implementați memorii cache sau înregistrați timpul necesar pentru ca LLM să răspundă.
- Instrument cu cârlig: Acționează exact ca și cum un instrument este pe cale să ruleze. Este perfect pentru crearea sisteme de aprobare unde o persoană trebuie să își dea aprobarea înainte ca agentul să șteargă un fișier sau să efectueze o plată.
Această structură se comportă similar cu middleware-ul găsit în framework-uri precum Express sau Koa, funcționând ca o ceapă: cererea intră prin stratul exterior, ajunge la centru (modelul) și apoi iese din nou, traversând straturile în ordine inversă. Cel mai bun aspect este că poți stivui mai multe middleware-uri într-o matrice, definind astfel ordinea exactă de execuție.
Catalog de middleware-uri preinstalate

Ca să nu fie nevoie să reinventăm roata, pachetul @genkit-ai/middleware Vine deja cu mai multe instrumente gata de utilizare. Unul dintre cele mai utile este... reîncercăricare folosește un algoritm de backpedaling exponențial cu jitter. Acest lucru ne împiedică să supraîncărcăm API-ul atunci când există erori tranzitorii, cum ar fi RESOURCE_EXHAUSTED o UNAVAILABLEdepunerea cererii mult mai robust în cazul unor defecțiuni momentane.
Dacă cota modelului principal se epuizează, middleware-ul de rezervă vine în ajutor. Acesta vă permite să configurați o listă de modele alternative, astfel încât, dacă primul eșuează, solicitarea să fie direcționată automat către unul mai mic sau mai ieftin, împiedicând utilizatorul final să vadă o eroare. Aceasta este o strategie vitală pentru menținerea continuității serviciilor în mediile cu cerere mare.
În ceea ce privește securitatea, avem middleware-ul aprobare instrumentAcest sistem creează o listă albă de instrumente sigure; orice acțiune care nu se află pe acea listă va declanșa o eroare. ToolInterruptErrorforțând sistemul să întrerupă până când cineva confirmă acțiunea. Acest lucru este agravat de middleware-ul Sistemul de fișierecare acordă modelului acces la fișierele locale, dar strict limitat într-un director rădăcină pentru a împiedica AI-ul să spioneze unde nu ar trebui.

În final, avem funcționalitatea de aptitudiniAcest middleware scanează folderele pentru fișiere SKILL.md și le injectează în promptul sistemului. Este o modalitate foarte elegantă de a gestiona cunoștințele despre agenți, permițându-le acestora să încărcați abilități specifice la cerere, fără a umple solicitarea principală cu text inutil.
Creare Middleware Personalizat

Când opțiunile native sunt insuficiente, Genkit ne permite să ne construim propriii interceptori folosind funcția generateMiddlewareAcest instrument ne permite să definim scheme de configurare folosind Zod, asigurându-ne că parametrii pe care îi transmitem sunt corect și dactilografiatPutem crea orice, de la simple înregistratoare care înregistrează fiecare intrare și ieșire, până la sisteme complexe pentru scrierea datelor sensibile (PII).
Un caz de utilizare foarte puternic ar fi implementarea unui filtru de conținut . Ați putea crea un hook de model care analizează răspunsul și, dacă detectează cuvinte interzise sau date interne despre prețuri, blochează sau curăță răspunsul înainte ca acesta să ajungă la utilizator. De asemenea, este posibil să gestionați cotele per utilizator prin interogarea unei baze de date în hook-ul de generare înainte de a permite apelului să continue.
Diferențe între implementări și ecosistem

Deși conceptul este universal, există nuanțe în funcție de limbaj. În TypeScript, sistemul este foarte dinamic și permite definirea middleware-ului în fișiere. .prompt prin câmp useÎn Go, implementarea este mai rigidă deoarece este un limbaj compilat, ceea ce a necesitat crearea unui înregistrarea middleware-ului pentru a putea converti numele de text în obiecte funcționale în timpul execuției.
Este important să nu confundați Genkit cu Agent Development Kit (ADK) de la Google. Deși ADK-ul este conceput pentru sisteme multi-agent complexe și care necesită multe resurse, construite pe infrastructura GCP, Genkit este opțiunea ideală pentru adăugarea de capabilități ale agenților la aplicațiile existente (web, mobile etc.). În plus, întregul flux middleware poate fi monitorizat din interfața cu utilizatorul Genkit Developer , permițându-vă să urmăriți exact ce hook a modificat cererea și calea pe care a parcurs-o pentru a ajunge la rezultatul final.
Apariția acestui sistem transformă funcția de generare într-o conductă cu adevărat compozabilă . Prin integrarea gestionării erorilor, a securității fișierelor și a validării umane într-un strat separat, dezvoltarea agenților devine un proces mult mai profesional și mai puțin predispus la erori catastrofale în producție.