- De middleware van Genkit stelt je in staat om de AI-generatiecyclus te onderscheppen en aan te passen met behulp van modelhooks, tools en de algemene workflow.
- Het bevat ingebouwde functies voor automatische herhaalpogingen, terugval tussen modellen, bestandscontrole en goedkeuring door mensen.
- Het is compatibel met TypeScript, Go en Dart, waardoor het eenvoudig is om beveiligings- en observatielagen te creëren zonder de bedrijfslogica te wijzigen.
Als je AI-applicaties ontwikkelt, weet je dat het niet alleen draait om het schrijven van de perfecte prompt. Wanneer je van een prototype naar een werkende implementatie gaat, loop je tegen obstakels aan zoals API-time-outs, quotabeperkingen of de noodzaak van menselijke validatie van cruciale acties. Hier komt Genkit Middleware van pas , een oplossing van Google waarmee ontwikkelaars extra controlelagen kunnen toevoegen zonder hun hele agentcode te hoeven herschrijven.
Kort gezegd hebben we het over een systeem van interceptors dat rond de generatieaanroepen wordt geplaatst, in plaats van elke functie afzonderlijk te omwikkelen. generate() In een handmatig besturingsblok kunt u een reeks stappen definiëren die het verzoek moet doorlopen. Dit maakt de architectuur van uw agents mogelijk... veel schoner en modulairderwaarbij de applicatielogica wordt gescheiden van overkoepelende aspecten zoals systeembeveiliging, observeerbaarheid en veerkracht.
Hoe werkt het interceptiesysteem precies?

Om dit beter te begrijpen, denk eens aan de levenscyclus van een verzoek in Genkit. Normaal gesproken genereert het model een reactie, bepaalt het of het een tool moet gebruiken, voert het die tool uit en verwerkt het resultaat opnieuw. De middleware van Genkit is niet zomaar een knelpunt; het biedt drie verschillende aangrijpingspunten om in dit proces in te grijpen:
- Hook genereren: Het apparaat draait slechts één keer per generatiecyclus. Het is de ideale locatie voor instructies in het systeem injecteren Of pas de berichten aan voordat ze worden verzonden.
- Haak per model: Het omhult de directe aanroep naar de API van het model. Het is essentieel voor het beheer. automatische herhalingenImplementeer caches of registreer hoe lang het duurt voordat de LLM reageert.
- Haakgereedschap: Het werkt precies op het moment dat een tool op het punt staat te worden uitgevoerd. Het is perfect voor het creëren van... goedkeuringssystemen waarbij een mens toestemming moet geven voordat de agent een bestand verwijdert of een betaling uitvoert.
Deze structuur gedraagt zich vergelijkbaar met de middleware in frameworks zoals Express of Koa, en functioneert als een ui: het verzoek komt binnen via de buitenste laag, bereikt het midden (het model) en verlaat het systeem vervolgens weer, waarbij de lagen in omgekeerde volgorde worden doorlopen. Het beste is dat je meerdere middlewares in een array kunt stapelen, waardoor je de exacte uitvoeringsvolgorde kunt bepalen.
Catalogus van vooraf geïnstalleerde middleware

Zodat we het wiel niet opnieuw hoeven uit te vinden, het pakket @genkit-ai/middleware Het wordt al geleverd met diverse gebruiksklare tools. Een van de handigste is... nieuwe pogingendie gebruikmaakt van een exponentieel terugloopalgoritme met jitter. Dit voorkomt dat we de API overbelasten bij tijdelijke fouten zoals... RESOURCE_EXHAUSTED o UNAVAILABLEhet indienen van de aanvraag veel robuuster in geval van tijdelijke storingen.
Als het quotum van uw primaire model opraakt, biedt fallback- middleware uitkomst. Hiermee kunt u een lijst met alternatieve modellen configureren, zodat, als het eerste model uitvalt, de aanvraag automatisch wordt doorgestuurd naar een kleiner of goedkoper model. Dit voorkomt dat de eindgebruiker een foutmelding krijgt. Dit is een essentiële strategie voor het waarborgen van de continuïteit van de dienstverlening in omgevingen met een hoge vraag.
Wat betreft beveiliging hebben we de middleware van gereedschapsgoedkeuringDit systeem maakt een lijst aan van veilige tools; elke actie die niet op die lijst staat, zal een foutmelding veroorzaken. ToolInterruptErrorwaardoor het systeem gepauzeerd wordt totdat iemand de actie bevestigt. Dit wordt nog verergerd door de middleware van bestandssysteemwaardoor het model toegang krijgt tot lokale bestanden, maar strikt beperkt naar een hoofdmap om te voorkomen dat AI rondsnuffelt waar het niet hoort.

Tot slot hebben we de functionaliteit van capaciteitenDeze middleware scant mappen op bestanden. SKILL.md en voegt ze toe aan de systeemprompt. Het is een zeer elegante manier om agentkennis te beheren, waardoor het mogelijk is om upload specifieke vaardigheden op aanvraag, zonder de hoofdprompt te vullen met onnodige tekst.
Aangepaste middleware-creatie

Als de standaardopties ontoereikend zijn, stelt Genkit ons in staat om onze eigen interceptors te bouwen met behulp van de functie. generateMiddlewareMet deze tool kunnen we configuratieschema's definiëren met behulp van Zod, zodat de parameters die we doorgeven correct zijn. correct en getyptWe kunnen alles creëren, van eenvoudige loggers die elke in- en uitgang registreren, tot complexe systemen voor het schrijven van gevoelige gegevens (PII).
Een zeer krachtige toepassing zou het implementeren van een contentfilter zijn . Je zou een modelhook kunnen maken die het antwoord analyseert en, als er verboden woorden of interne prijsinformatie wordt gedetecteerd, het antwoord blokkeert of opschoont voordat het de gebruiker bereikt. Het is ook mogelijk om quota per gebruiker te beheren door in de generatiehook een database te raadplegen voordat de oproep wordt toegestaan.
Verschillen tussen implementaties en ecosysteem

Hoewel het concept universeel is, zijn er nuances afhankelijk van de taal. In TypeScript is het systeem zeer dynamisch en maakt het mogelijk om middleware in bestanden te definiëren. .prompt door het veld useIn Go is de implementatie rigider omdat het een gecompileerde taal is, wat de creatie van een middleware-registratie Om tekstnamen tijdens de uitvoering om te kunnen zetten in functionele objecten.
Het is belangrijk om Genkit niet te verwarren met Google's Agent Development Kit (ADK). Hoewel de ADK is ontworpen voor complexe en resource-intensieve multi-agentsystemen die zijn gebouwd op GCP-infrastructuur, is Genkit de ideale optie om agentfunctionaliteit toe te voegen aan bestaande applicaties (web, mobiel, enz.). Bovendien kan de volledige middleware-flow worden gemonitord vanuit de Genkit Developer UI , waardoor u precies kunt traceren welke hook het verzoek heeft aangepast en welk pad het heeft afgelegd om het uiteindelijke resultaat te bereiken.
De komst van dit systeem transformeert de generatiefunctie in een volledig componeerbare pipeline . Door foutafhandeling, bestandsbeveiliging en menselijke validatie in een aparte laag te integreren, wordt agentontwikkeling een veel professioneler proces en minder gevoelig voor catastrofale fouten in productie.