Under the hood of AI agents: A technical guide to the next frontier of gen AI


Agenten zijn tegenwoordig het meest trendy onderwerp in AI, en met goede reden. AI-agenten handelen namens hun gebruikers en voeren autonoom taken uit zoals het doen van online aankopen, het bouwen van software, het onderzoeken van zakelijke trends of het boeken van reizen. Door generatieve AI uit de sandbox van de chatinterface te halen en deze rechtstreeks op de wereld te laten inwerken, vertegenwoordigt agentic AI een sprong voorwaarts in de kracht en bruikbaarheid van AI. Door generatieve AI uit de beschermde sandbox van de chatinterface te halen en deze rechtstreeks op de wereld te laten inwerken, betekent dit een sprong voorwaarts in de kracht en bruikbaarheid van AI.
Agentic AI ontwikkelt zich heel snel: een van de belangrijkste bouwstenen van de hedendaagse agenten, het Model Context Protocol (MCP), is bijvoorbeeld nog maar een jaar oud! Zoals op elk snel evoluerend vakgebied zijn er veel concurrerende definities, populaire ideeën en misleidende meningen.
Om de ruis te doorbreken, wil ik de kerncomponenten van een agentisch AI-systeem beschrijven en hoe ze in elkaar passen: het is echt niet zo ingewikkeld als het lijkt. Hopelijk zullen agenten, als je klaar bent met het lezen van dit bericht, niet zo mysterieus overkomen.
Agentisch ecosysteem
Definities van het woord ‘agent’ zijn er in overvloed, maar ik hou van een kleine variatie op de minimalistische interpretatie van de Britse programmeur Simon Willison:
Een LLM-agent voert tools in een lus uit om een doel te bereiken.
De gebruiker vraagt een groot taalmodel (LLM) aan met een doel: bijvoorbeeld het reserveren van een tafel in een restaurant in de buurt van een specifiek theater. Samen met het doel ontvangt het model een lijst met de hulpmiddelen die het tot zijn beschikking heeft, zoals een database met restaurantlocaties of een registratie van de voedselvoorkeuren van de gebruiker. Het model plant vervolgens hoe het doel kan worden bereikt en roept een van de tools aan, die een antwoord bieden; het model roept vervolgens een nieuw hulpmiddel aan. Door herhalingen beweegt de agent zich in de richting van het bereiken van het doel. In sommige gevallen worden de orkestratie- en planningskeuzes van het model aangevuld of verbeterd door imperatieve code.
Maar wat voor infrastructuur is er nodig om deze aanpak te realiseren? Een agentisch systeem heeft een aantal kerncomponenten nodig:
-
Een manier om bouw de agent. Wanneer u een agent implementeert, wilt u deze niet helemaal opnieuw hoeven te coderen. Er zijn verschillende raamwerken voor agentontwikkeling.
-
Ergens naartoe voer het AI-model uit. Een doorgewinterde AI-ontwikkelaar kan een open-weight LLM downloaden, maar er is expertise voor nodig om dat goed te doen. Er is ook dure hardware voor nodig die door de gemiddelde gebruiker slecht zal worden gebruikt.
-
Ergens naartoe voer de agentcode uit. Met gevestigde raamwerken creëert de gebruiker code voor een agentobject met een gedefinieerde reeks functies. De meeste van deze functies omvatten het verzenden van aanwijzingen naar een AI-model, maar de code moet ergens worden uitgevoerd. In de praktijk zullen de meeste agenten in de cloud draaien, omdat we willen dat ze blijven draaien als onze laptops gesloten zijn, en we willen dat ze opschalen en uitbreiden om hun werk te doen.
-
Een mechanisme voor het vertalen tussen de op tekst gebaseerde LLM en gereedschap oproepen.
-
A korte termijn geheugen voor het volgen van de inhoud van agentische interacties.
-
A langetermijngeheugen voor het volgen van de voorkeuren en affiniteiten van de gebruiker tijdens sessies.
-
Een manier om spoor de uitvoering van het systeem, om de prestaties van de agent te evalueren.
Laten we dieper ingaan op elk van deze componenten.
Een agent bouwen
Als u een LLM vraagt om uit te leggen hoe hij een bepaalde taak wil aanpakken, verbetert hij zijn prestaties op die taak. Deze “keten-van-gedachte-redenering” is nu alomtegenwoordig in AI.
De analogie in agentische systemen is het ReAct-model (redeneren + actie), waarin de agent een gedachte heeft (“Ik gebruik de kaartfunctie om restaurants in de buurt te lokaliseren”), een actie uitvoert (een API-oproep naar de kaartfunctie geeft) en vervolgens een observatie doet (“Er zijn twee pizzarestaurants en één Indiaas restaurant binnen twee blokken van de bioscoop”).
ReAct is niet de enige manier om agenten te bouwen, maar vormt de kern van de meeste succesvolle agentsystemen. Tegenwoordig zijn agenten vaak loops over de gedachte-actie-observatie reeks.
De tools die voor de agent beschikbaar zijn, kunnen lokale tools en tools op afstand omvatten, zoals databases, microservices en software-as-a-service. De specificatie van een tool omvat een uitleg in natuurlijke taal over hoe en wanneer het wordt gebruikt en de syntaxis van de API-aanroepen.
De ontwikkelaar kan de agent ook vertellen dat hij in wezen zijn eigen tools ter plekke moet bouwen. Stel dat een tool een tabel ophaalt die is opgeslagen als door komma’s gescheiden tekst, en om zijn doel te bereiken moet de agent de tabel sorteren.
Het sorteren van een tabel door deze herhaaldelijk door een LLM te sturen en de resultaten te evalueren zou een enorme verspilling van middelen zijn – en het is niet eens gegarandeerd dat dit het juiste resultaat oplevert. In plaats daarvan kan de ontwikkelaar de agent eenvoudigweg instrueren om zijn eigen Python-code te genereren wanneer deze een eenvoudige maar repetitieve taak tegenkomt. Deze codefragmenten kunnen lokaal naast de agent worden uitgevoerd of in een speciale tool voor het interpreteren van veilige code.
Beschikbare tools kunnen de verantwoordelijkheid verdelen tussen de LLM en de ontwikkelaar. Zodra de tools die voor de agent beschikbaar zijn, zijn gespecificeerd, kan de ontwikkelaar de agent eenvoudigweg instrueren welke tools hij indien nodig moet gebruiken. Of de ontwikkelaar kan specificeren welke tool hij moet gebruiken voor welke soorten gegevens, en zelfs welke gegevensitems hij als argumenten moet gebruiken tijdens functieaanroepen.
Op dezelfde manier kan de ontwikkelaar de agent eenvoudigweg vertellen Python-code te genereren wanneer dat nodig is om repetitieve taken te automatiseren, of hem vertellen welke algoritmen hij voor welke gegevenstypen moet gebruiken en zelfs pseudocode moet leveren. De aanpak kan variëren van agent tot agent.
Looptijd
Historisch gezien waren er twee belangrijke manieren om code die op gedeelde servers draaide te isoleren: containerisatie, wat efficiënt was maar minder beveiliging bood; en virtuele machines, die veilig waren maar veel rekenkundige overhead met zich meebrachten.
In 2018 werd de serverloze computerservice Lambda van Amazon Web Services (AWS) geïmplementeerd Voetzoekereen nieuw paradigma in serverisolatie. Firecracker creëert “microVM’s”, compleet met hardware-isolatie en hun eigen Linux-kernels, maar met verminderde overhead (zo laag als een paar megabytes) en opstarttijden (zo laag als een paar milliseconden). De lage overhead betekent dat elke functie die op een Lambda-server wordt uitgevoerd, zijn eigen microVM kan hebben.
Omdat het instantiëren van een agent echter de inzet van een LLM vereist, samen met de geheugenbronnen om de invoer en uitvoer van de LLM te volgen, is het isolatiemodel per functie onpraktisch. In plaats daarvan krijgt elke sessie bij sessiegebaseerde isolatie een eigen microVM toegewezen. Wanneer de sessie is afgelopen, wordt de statusinformatie van de LLM naar het langetermijngeheugen gekopieerd en wordt de microVM vernietigd. Dit zorgt voor een veilige en efficiënte inzet van hosts van agenten.
Gereedschapsoproepen
Net zoals er verschillende bestaande ontwikkelingsframeworks zijn voor het maken van agenten, zijn er verschillende bestaande standaarden voor communicatie tussen agenten en tools, waarvan momenteel het modelcontextprotocol (MCP) de meest populaire is.
MCP brengt een één-op-één verbinding tot stand tussen de LLM van de agent en een speciale MCP-server die tooloproepen uitvoert, en brengt ook een standaardformaat tot stand voor het heen en weer doorgeven van verschillende soorten gegevens tussen de LLM en zijn server.
Veel platforms gebruiken standaard MCP, maar zijn ook configureerbaar, zodat ze in de loop van de tijd een groeiend aantal protocollen zullen ondersteunen.
Soms is de benodigde tool echter niet een tool met een beschikbare API. In dergelijke gevallen is de enige manier om gegevens op te halen of een actie uit te voeren, het gebruik van cursorbewegingen en klikken op een website. Er zijn een aantal diensten beschikbaar om dit uit te voeren computergebruik. Dit maakt elke website tot een potentieel hulpmiddel voor agenten, waardoor tientallen jaren aan inhoud en waardevolle diensten worden ontsloten die nog niet rechtstreeks via API’s beschikbaar zijn.
Autorisaties
Bij agenten werkt autorisatie in twee richtingen. Ten eerste hebben gebruikers uiteraard autorisatie nodig om de agents uit te voeren die ze hebben gemaakt. Maar omdat de agent namens de gebruiker handelt, heeft hij doorgaans zijn eigen autorisatie nodig om toegang te krijgen tot netwerkbronnen.
Er zijn verschillende manieren om het autorisatieprobleem aan te pakken. De ene is met een algoritme voor toegangsdelegatie, zoals OAuth, dat in wezen het autorisatieproces door het agentsysteem loodst. De gebruiker voert inloggegevens in OAuth in en het agentsysteem gebruikt OAuth om in te loggen op beveiligde bronnen, maar het agentsysteem heeft nooit directe toegang tot de wachtwoorden van de gebruiker.
Bij de andere benadering logt de gebruiker in op een beveiligde sessie op een server en heeft de server zijn eigen inloggegevens voor beveiligde bronnen. Met machtigingen kan de gebruiker kiezen uit een verscheidenheid aan autorisatiestrategieën en algoritmen voor het implementeren van die strategieën.
Herinnering en sporen
Kortetermijngeheugen
LLM’s zijn voorspellingsmachines voor het volgende woord. Wat ze zo verbazingwekkend veelzijdig maakt, is dat hun voorspellingen gebaseerd zijn op lange reeksen woorden die ze al hebben gezien, bekend als context. Context is op zichzelf een soort geheugen. Maar het is niet het enige soort dat een agentisch systeem nodig heeft.
Veronderstel nogmaals dat een agent een restaurant in de buurt van een bioscoop probeert te boeken, en via een kaarttool een paar dozijn restaurants binnen een straal van anderhalve kilometer ophaalt. Het wil geen informatie over al die restaurants in de context van de LLM dumpen: al die externe informatie zou grote schade kunnen aanrichten aan de waarschijnlijkheden van het volgende woord.
In plaats daarvan kan het de volledige lijst in het kortetermijngeheugen opslaan en één of twee records tegelijk ophalen, gebaseerd op bijvoorbeeld de prijs- en keukenvoorkeuren van de gebruiker en de nabijheid van het theater. Als geen van deze restaurants lukt, kan de agent teruggaan naar het kortetermijngeheugen, in plaats van opnieuw een tool call te moeten uitvoeren.
Langetermijngeheugen
Agenten moeten ook hun eerdere interacties met hun klanten onthouden. Als ik vorige week aan de restaurantboekingsagent heb verteld wat voor soort eten ik lekker vind, wil ik het deze week niet nog een keer vertellen. Hetzelfde geldt voor mijn prijstolerantie, het soort sfeer dat ik zoek, enzovoort.
Dankzij het langetermijngeheugen kan de agent opzoeken wat hij moet weten over eerdere gesprekken met de gebruiker. Agenten creëren echter doorgaans zelf geen langetermijnherinneringen. In plaats daarvan gaat het hele gesprek, nadat een sessie is voltooid, over naar een afzonderlijk AI-model, dat nieuwe langetermijnherinneringen creëert of bestaande bijwerkt.
Bij het maken van geheugen kan sprake zijn van LLM-samenvatting en ‘chunking’, waarbij documenten worden opgesplitst in secties, gegroepeerd op onderwerp, zodat ze tijdens volgende sessies gemakkelijk kunnen worden teruggevonden. Met de beschikbare systemen kan de gebruiker strategieën en algoritmen selecteren voor samenvatting, chunking en andere technieken voor het extraheren van informatie.
Waarneembaarheid
Agents zijn een nieuw soort softwaresysteem en vereisen nieuwe manieren om na te denken over het observeren, monitoren en controleren van hun gedrag. Sommige van de vragen die we stellen zullen u bekend voorkomen: of de agenten snel genoeg werken, hoeveel ze kosten, hoeveel tool calls ze maken en of gebruikers tevreden zijn. Maar er zullen ook nieuwe vragen rijzen, en we kunnen niet noodzakelijkerwijs voorspellen welke gegevens we nodig hebben om deze te beantwoorden.
Waarnemings- en traceringstools kunnen een end-to-end beeld geven van de uitvoering van een sessie met een agent, waarbij stap voor stap wordt opgedeeld welke acties zijn ondernomen en waarom. Voor de agentbouwer zijn deze sporen essentieel om te begrijpen hoe goed agenten werken en om de gegevens te leveren om ze beter te laten werken.
Ik hoop dat deze uitleg de AI van agenten voldoende heeft gedemystificeerd, zodat je bereid bent te proberen je eigen agenten te bouwen!




