AI-agentpatronen die ik leerde tijdens het bouwen van AIdaemon
Wanneer mensen het hebben over AI-agentpatronen, beschrijven ze deze meestal abstract. Hier leest u hoe zeven bekende patronen daadwerkelijk werken binnen AIdaemon, een zelf-gehoste AI-agentdaemon die ik in Rust aan het bouwen ben.
De ReAct-lus (Redeneren + Handelen)
ReAct vormt de basis van de meeste moderne agenten. In plaats van een volledig plan uit te denken en dit in één keer uit te voeren, wisselt de agent af tussen redeneren over wat hij vervolgens moet doen en het daadwerkelijk uitvoeren ervan.
In AIdaemon manifesteert zich dit als een op fasen gebaseerde uitvoeringscyclus. Elke beurt doorloopt het opbouwen van berichten, een LLM-oproep, tooluitvoering en een stopcontrole. De agent redeneert over zijn volgende stap, onderneemt een actie, observeert het resultaat en redeneert dan opnieuw. Deze lus gaat door totdat de agent besluit dat hij klaar is of een iteratielimiet bereikt.
De schoonheid van ReAct is aanpassingsvermogen. Als een opdracht mislukt of onverwachte uitvoer oplevert, gaat de agent niet blindelings verder met de oorspronkelijke aanpak. Hij evalueert opnieuw en past zich aan.
Plannen
Plannen betekent het opdelen van een complexe taak in stappen voordat u eraan begint. In plaats van onmiddellijk de eerste tool te pakken en te beginnen met werken, analyseert een planningsagent het verzoek, identificeert afhankelijkheden en sequentieert operaties in een logische volgorde.
In AIdaemon kan de agent, voordat hij een tool aanraakt, een gestructureerd plan met concrete stappen genereren. Dit voorkomt de veelvoorkomende faalmodus waarbij een agent begint met uitvoeren, halverwege beseft dat hij informatie uit stap 5 nodig had om stap 2 te voltooien, en uiteindelijk in cirkels ronddraait.
Plannen helpt ook bij transparantie. Wanneer u het plan van de agent kunt zien voordat deze het uitvoert, vangt u verkeerde aannames vroegtijdig op in plaats van ze te ontdekken nadat de agent al wijzigingen heeft aangebracht.
Reflectie
Reflectie is het vermogen van de agent om zijn eigen werk te evalueren. Na het voltooien van een actie schakelt een reflectieve agent over naar de criticusmodus. Hij controleert op fouten, verifieert dat aan beperkingen is voldaan en identificeert hiaten.
In AIdaemon wordt de reflectie-feedbacklus geactiveerd wanneer er iets misgaat. Als een tooloproep mislukt of onverwachte resultaten oplevert, analyseert de agent wat er is gebeurd, waarom het is mislukt, en stelt een oplossing voor voordat hij het opnieuw probeert. In combinatie met het volgen van de bewijsstatus, behoudt de agent concrete observaties over wat hij heeft gezien en gedaan. Zijn reflecties zijn gebaseerd op feitelijke resultaten in plaats van aannames.
Geheugen
Geheugen is hoe een agent informatie over gesprekken heen onthoudt. Zonder dit begint elke interactie opnieuw.
AIdaemon gebruikt SQLite-gebaseerde vector-embeddings voor semantisch ophalen. Feiten worden automatisch uit gesprekken geëxtraheerd en opgeslagen met embeddings, zodat ze kunnen worden opgehaald op basis van betekenis, niet alleen op trefwoorden. Als u drie weken geleden een projectdetail hebt genoemd, kan de agent zich dit herinneren wanneer het weer relevant wordt.
Het geheugensysteem maakt ook samenvattingen van afleveringen voor langlopende sessies en consolideert dagelijks feiten, waarbij oude informatie die niet langer nuttig is, wordt gededupliceerd en vervaagd. Het is het verschil tussen een agent met geheugenverlies en een agent die uw context in de loop van de tijd daadwerkelijk leert kennen.
Randvoorwaarden (Guardrails)
Randvoorwaarden definiëren de harde grenzen van wat een agent wel en niet kan doen. Ze zijn het vangnet dat randgevallen opvangt die goede prompting alleen niet kan voorkomen.
AIdaemon implementeert randvoorwaarden op meerdere niveaus. Lijsten met toegestane opdrachten beperken welke terminalopdrachten de agent kan uitvoeren. Toolfiltering op basis van risiconiveau betekent dat destructieve bewerkingen extra verificatie vereisen. Output-sanering verwijdert gevoelige gegevens zoals API-sleutels en tokens uit antwoorden voordat ze de gebruiker bereiken. En iteratielimieten voorkomen doorlopende lussen waarbij de agent tokens verbruikt zonder vooruitgang te boeken.
De industrie is samengekomen op deze gelaagde aanpak. De meeste productiegerichte agentframeworks beschouwen randvoorwaarden als 'defense-in-depth' in plaats van een enkel controlepunt.
Human-in-the-loop
Human-in-the-loop is het patroon van pauzeren voor menselijke bevestiging voordat risicovolle acties worden ondernomen. Het is de erkenning dat sommige beslissingen niet volledig geautomatiseerd mogen worden.
AIdaemon gebruikt een goedkeuringsstroom met drie opties voor risicovolle acties: Eenmalig Toestaan (deze keer doorgaan), Altijd Toestaan (deze actie voortaan vertrouwen) en Weigeren (stoppen en iets anders proberen). De agent classificeert acties automatisch op risiconiveau. Een bestand lezen? Geen poort nodig. Bestanden verwijderen of onbekende shell-opdrachten uitvoeren? De agent pauzeert en vraagt om goedkeuring.
De sleutel is risicogebaseerde gating in plaats van alles te beperken. Te veel onderbrekingen en de agent wordt onbruikbaar. Te weinig en u vertrouwt hem toe met acties die echte schade kunnen veroorzaken.
Vaardigheidsleren
Vaardigheidsleren is wanneer de agent succesvolle patronen omzet in herbruikbare instructies. De meeste agenten behandelen elke taak als een eenmalige gebeurtenis. Vaardigheidsleren stelt de agent in staat om te herkennen wanneer hij een type probleem meerdere keren heeft opgelost en die oplossing voor toekomstig gebruik te bundelen.
In AIdaemon genereert het systeem een conceptvaardigheid als een procedure 5 keer of vaker is gebruikt met een succespercentage van ten minste 80%. Dat concept moet nog steeds door een mens worden beoordeeld voordat het actief wordt, wat voorkomt dat de agent de verkeerde lessen leert. Eenmaal goedgekeurd, kan de agent de volgende keer dat een vergelijkbare taak zich voordoet, naar die vaardigheid verwijzen in plaats van deze vanaf nul te moeten uitzoeken. Vaardigheden kunnen ook worden geladen vanuit bestanden, URL's of externe registers, zodat u ze kunt delen tussen verschillende installaties.
Dit is een van die patronen die zich in de loop van de tijd opstapelen. Hoe langer de agent draait, hoe meer vaardigheden hij verzamelt en hoe sneller hij terugkerend werk afhandelt.