(#428) Welke agents heb je draaien?

https://computerclub.online/afleveringen/428-agents-schrijven

Deze week gaat het over iLands- en Muse-agents.

Welke agents heb jij draaien?

Wat doen die allemaal? Met welke technologie?

Als met “agents” bijvoorbeeld Claude Code bedoeld wordt, dan Claude Code :winking_face_with_tongue:

1 like

Ik heb er twee lopen in Claude Cowork/Code, allebei voor de concertorganisatie.

  1. checkt elke week of er nieuwe releases aangekondigd zijn bij labels op een watchlist.
  2. eentje die me helpt met todos te managen voor papierwerk, die ik ook nog wil uitbreiden naar eentje die helpt voor communicatie (nieuwsbrief uitsturen reminder, basis klaarzetten, weekly release posts doen,…)
2 likes

Ik heb ondertussen Claude Code zo getuned in één “folder” met instructies en gekoppeld met MCP op al onze systemen dat voor mijn verschillende opdrachten (ik ben soort van freelancer) ik alles ongeveer kan zien, controleren en aanpassen via Claude Code. Ik kan dat ook opvragen in de context van teamleaden. Zit ook obsidian achter voor todo lijsten en documenten.

Nu, op het eerste zicht spaart dat enkel maar wat tijd omdat ik niet zelf altijd al die tools moet gaan doorlopen om te weten wat waar speelt voor wie, maar, het wordt zeer interessant omdat Claude nu echt al heel veel instructies en context heeft in memory, en dus ook al die dingen begint te linken aan elkaar. Hij “kent” bvb alle teamleden, waar ze op werken, wat de uitzonderingen zijn voor die mensen, hij kent de projecten waar we aan werken, weet waar de code is, de support tickets, de project items, … Hij leest ook mijn inboxen en kan dus zeggen "er is een mail binnen gekomen van X en die is gelinkt aan support ticket Y en issue Z in github, en toont alle relevante URLs naar de detail pagina’s zodat je rap kan doorklikken indien nodig. En omdat ik ondertussen al weet hoe hij denkt, heb ik nu ook toegelaten dat hij ook kan schrijven en aanpassingen doen in al die systemen, wat het zeker nog krachtiger maakt.

Simpel maar zeer concreet voorbeeld. Als er ergens een taak open staat voor medewerker X, maar medewerker X verlaat het bedrijf op datum Y omdat ik dat ooit gezegd heb, dan wordt er bij issues waar die persoon bij betrokken altijd gemeld dat ik moet zorgen dat die taak of af is, of overgedragen wordt want dat de datum naderbij komt.

Nog simpel voorbeeld maar o zo handig: Als ik een opmerking, bug of wat dan ook wil rapporteren aan onze developers weet hij ondertussen ook waar en hoe, maar, hij weet ook dat onze developers niet allemaal Nederlandstalig zijn (en sowieso hebben we de guideline dat alles ivm code en docu in 't Engels moet zijn). Dus als ik ergens een mail binnen krijg met een opmerking, kan ik vrij makkelijk zeggen: zet die mail om in een issue voor project X en ken toe aan Y. Ongeacht de taal van mijn vraag, mail content of weet ik veel, weet hij dat dat issue in het Engels moet zijn gerapporteerd, dus vertaalt hij alles altijd als het naar github moet, maar, antwoord hij de mail wel in de taal van de verzender… en ik hoef dat nooit meer te vragen.

Maar het kan ook veel krachtiger. Want wij verzamelen voor onze code alle guidelines, instructies en context in de git zelf nu (geen externe Confluence of Notion of whatever) als MD files (ook al omdat niemand ooit die KBs update, en MDs bij het project wel), en dus ook ter beschikking staan van Claude Code. Dus als ik na drie dagen vijf PRs moet reviewen, komen die in mijn overzicht dat Claude 's morgens maakt, kan ik zeggen om op die vijf PRs een basic check te doen (zoals in die repos zelf gedefinieerd staat, wat mensen zelf zouden doen, maar ja, je kent mensen) met een achtergrond agent. Dan schiet dat ding in actie, lanceert vijf of meer subagents, scant heel het boeltje, en komt een half uur later met de rapporten. Ondertussen kan ik al andere taken doen. Na de basisscan en de “flagrante” fouten die hij er al uit haalt kan ik verder testen voor UX bvb.

Ik heb dus ook in die context drie of vier mailboxen voor werk, kan Claude ook lezen en linken aan al die taken, en, als die taken veranderen, kan hij ook draft antwoorden klaarzetten, enz … Claude werkt wel niet zo handig met meerdere mailboxen van dezelfde soort, daarom heb ik https://www.posternmail.ai gevibecode :slight_smile:

Kortom, voor mij is dat ondertussen een soort persoonllijke assistent waar ik uren werk aan uitbesteed… de kostprijs van die dingen is dus verwaarloosbaar als ik kijk naar wat het mij spaart. Ik “praat” ettelijke uren met dat ding… Let op, ik ben niet zo gek om te denken dat het sentient is, het is gewoon goed om opdrachten uit te voeren en junior Wimmekes te maken, waar de wereld mss nie op zit te wachten.

BELANGRIJKE BEDENKING 1: Dit zet je niet op op een half uur. Dat is in de beginne even wel wat aansturen en tunen, maar dat mindert snel. Nu soms nog eens wat verbeteren of meer uitleg geven… maar de tijdswinst is enorm.

BELANGRIJKE BEDENKING 2: Ik gebruik het zo goed als nooit in privé speer om dingen te gaan “bestellen”, hij kent dus geen privé accounts of paswoorden, kent geen bankkaartnummers, en diens meer… dus alles wat hij weet is business related. Dat is ook mijn grootste probleem met de nieuwe dingen zoals Muse en Dot, waar je volop “privé” dingen moet delen om iets van resultaat te halen (met bedrijven met een bedenkelijke reputatie op dat vlak).

6 likes

Ik ben eigenlijk nog altijd niet goed mee wat een “agent” nu precies is en “meerdere agents tegelijk”
Is dat gewoon een andere manier om te zeggen een scheduled task in Claude en meerder chats tegelijk open hebben staan?
Of is er echt een verschil and if so, send me down this rabbit hole.

Ps.
@wimpi wederom bedankt voor uw uitvoerige uitleg :heart:

1 like

!Vic, !Vic, !Vic, breek me de bek niet open… maar goed, je vraagt er om :laughing: . In mijn gekende bondigheid (en schrijffouten, zinconstructies die van den hond zijn dingen zijn, enz…) zal ik dat even uitleggen: Wat zijn agenten?

Eerste belangrijke opmerking in die context is: aan wie stel je de vraag. Vraag je dat aan iemand van marketing/sales, of, aan iemand die er echt iets van kent? Het antwoord zal ruim verschillend zijn.

Verder ook:

  • Software agenten is een concept dat al langer bestaat dan waar het nu om te doen is. Alle software engineers die hun diploma nog gehaald hebben toen je meer moest kunnen dan python scripts schrijven en een webpagina ineen boksen, hebben wel ergens software agenten tegengekomen in hun carrière (Software agent - Wikipedia).
  • En ook: AI is iets dat al langer bestaat dan de LLMs (Artificial intelligence - Wikipedia) waar nu over sprake… maar voor LLMs was die AI niet echt voor 't “gewone volk” maar voor slimme sjarels (slimmer dan ik iig). De ComputerClub podcast luisteraar zou dat toch moeten weten.

In dit geval hier nu hebben we (en dan vooral ik blijkbaar) het over “agenten” in de context van de tegenwoordige LLMs, en laat ik al de rest buiten beschouwing. We gaan ook niet in op te technische zaken. Heel bondig samengevat kan je de korte geschiedenis van LLMs als volgt bekijken:

  • Eerste ChatGpt spullen die echt “hype” werden omdat je er mee kon praten en op verliefd worden, waren vrij eenvoudig. Het waren AI systemen die op basis van hun “corpus” (trainingsdata, uiteindelijk nu alles van het internet) een bepaalde zin, of meerdere zinnen of vragen, konden beantwoorden met één of meerdere zinnen. Dat was de eenvoudigste manier (trouwens, het originele idee kwam niet van OpenAI met ChatGPT maar het “basiswerk” in deze context is van Google en een team van heel slimme mensen: Attention Is All You Need - Wikipedia. Ik heb dat ooit gelezen. De eerste pagina. Voor de rest was ik niet slim genoeg en kon ik nie volgen. De hype was vooral rond het feit dat dat ding precies ne mens was en kon praten. Er waren wel wat nadelen (die met elke release kleiner werden):
    • Het hallucineerde nog gelijk zot in den beginne, want wie begrijpt hoe het werkt weet dat er wat statistiek en probabiliteiten en zo bij komen kijken en dan zit ge er vaak op, maar soms ook los der neffe. Los der neffe == hallucinatie.
    • Men trainde zo’n corpus op een dataset die “alles” bevatte tot een bepaalde datum. Dus die kon praten over vanalles, maar, vroeg je iets dat na de datum van zijn trainingsdata kwam, dan kon hij dat niet weten
  • Wat verder in de ontwikkelen had men RAG toegevoegd (Retrieval-augmented generation - Wikipedia). Reden is vrij simpel: je kan de corpus niet zomaar uitbreiden, want datasets zijn zeker niet altijd publiek, en meer, om zo’n spellement te trainen heb je meer nodig dan een paar Mac Minis in de kelder (lees: datacenters vol CPUs/GPUs). Dus met RAG kun je uw LLM eigenlijk een functie laten oproepen die “recente” data geeft aan de LLM, maar, belangrijker nog, ook bvb bedrijfsdata kon teruggeven. Je kon hem dus een lijst van knowledge base artikelen geven en dan gingen die mee in de LLM en kon hij die gebruiken om antwoorden te formuleren. Nu, eenieder die daar mee werkte (ikke en heel wat anderen) en iets van software engineering kende, wist dat als je een functie kon oproepen om data ergens op te halen, je ook die functie kon gebruiken om iets uit te voeren… maar blijkbaar ziet de geschiedenis dat als iets apart. Daar kan ik ook niet aan doen.
  • Daarna (een jaar of iets meer geleden) kwamen de eerste “agentic AI” dingen op de proppen. Kortom, iedereen had in 't snuitje dat ga als ge functies kunt oproepen om data op te halen, ge ook iets kon uitvoeren. En de consensus was toen dat we van agentic/agents spreken omdat vanaf dat moment het zo was dat LLMs niet enkel maar dingen waren om tegen te praten en die ook wat eigen data kon terug geven, maar, die kon ook beginnen dingen voor u uitvoeren: een hamburger bestellen, een reis boeken, … vanalle dingen die je zelf sneller doet dan een LLM. Die werden dan in een soort “loop” gestoken waar men start met een opdracht, ding voert wat functies uit, genereert output, output werd terug geĂ«valueerd door LLM die nog verder deed, terug een rondeke, tot de LLM “zei” dat het gedaan was. Die “loop” is wat men soms ook het “harnas” noemt, en, dat is eigenlijk wat de Claude Code applicatie is, of de ChatGPT codex en soortgelijken. Maar goed, daar komt de term “agents” vandaan, en dat klopt ook nog wel min of meer met de originele van een “agent” zoals die hierboven staat. Waarom heeft dat zowat langer geduurd: wel, ge krijgt dat enkel maar echt goed en betrouwbaar als je goeie modellen hebt die snel zijn, héél veel kennen, heel goed kunnen redeneren (is die loop op punt krijgen) en héél weinig hallucineren… want anders gaat het van hot nar heir en is het een volledige ramp.

Nu, om via deze lange omweg op uw vraag terug te komen: een AI agent in deze context is dus een stuk software dat gebruik maakt van LLMs en op basis van een bepaalde input een heel aantal dingen kan doen en uitvoeren, en, dat is waar we vandaag de dag nu meer en meer naartoe gaan.

Die input hoeft niet altijd een vraag te zijn waarop hij reageert, wat trouwens nog altijd de meest gebruikte manier nu is om met die dingen te werken → je stelt een vraag, hij doet iets. Let op, als je die goede vragen stelt kan die lang bezig zijn. Het is niet ongebruikelijk dat we vragen stellen waar die rustig een kwartiertje mee bezig is of langer.

Die input kan ook zijn, zoals jij zegt, een bepaald soort scheduler die om de X minuten, seconden, uren draait, en die LLM gaat triggeren (een prompt sturen, want, dat is uiteindelijk in essentie wat het altijd is, niet meer of niet minder) en dan een hele hoop acties gaat veroorzaken.

Die input kan ook bvb een trigger zijn zoals een schakelaar die aangaat, een waarde die verandert in een database, een document dat op een fileshare komt, een API call… noem maar op. Zolang je maar niet denkt dat het leeft en van zijn eigen dingen gaat doen. Dat is niet zo. Nooit. Software doet niets van zijn eigen. Door slim te spelen met dynamische scheduling, triggers van buitenaf, agenten die dingen zelf kunnen herconfigureren en diens meer, kan je wel heel hard doen lijken dat het van zijn eigen vanalles voor jou doet.

Voor Claude users trouwens: Die scheduling is wat ze Routines noemen, en da’s letterlijk een scheduler die je op gezette tijden instructies kan laten uitvoeren op je PC of in de cloud.

Eens je dat hebt kan je verder uitbreiden op allerlei manieren en ga je altijd maar verder.

Zo bijvoorbeeld als ik spreek over subagents of “andere agenten die hij opstart”, gebeurd er het volgende: ik zeg dat hij vijf PRs moet reviewen. Uit wat Claude Code geleerd heeft en hoe hij geprogrammeerd is door Anthropic, kan hij beslissen “tja, zo’n review duur tien minuten, ik moet er hier vijf doen, dan ben ik een klein uur bezig. Misschien is het dus beter dat ik vijf andere agenten (lees processen) opstart die ik de nodige instructies geef op basis van de instructies die ik gekregen heb, zodat die alle vijf bezig kunnen zijn tegelijker tijd, en mijn baasje dan ondertussen gewoon verder kan praten met mij. Ik geef die vijf processen ook de instructie dat als ze klaar zijn, ze een de resultaten moeten rapporteren aan mij zodat ik ze aan mijn baasje kan vertellen.” Dat lijkt enorm magisch, maar, als je weet dat ze functies kunnen oproepen, kan je ze dus ook functies geven die andere agenten kan opstarten met bepaalde instructies, en kan je die agenten weer functie geven die het resultaat kan teruggeven aan de eerste… en als je dat héél slim combineert (en daar zijn die codig agents echt wel heel goed in aan 't worden) dan heb je dus coding agents. En vijf in parallel wil zeggen dat na tien minuten de resultaten binnen zijn en niet na een uur (effe technisch zou je kunnen argumenteren dat dat alleen maar waar is als je CPU door dat parallel werk niet verzadigd geraakt, maar, dat is in deze niet waar want het werkelijke CPU gebruik zit bij Anthropic op de server en niet op uw PC, tenzij ge de modellen natuurlijk lokaal draait, maar, dan moet ge al een ferm uit de kluiten gewassen machine hebben of lichte modellen draaien) . TLDR: ik geef instructie, LLM beslist dat het lange opdracht is, of ik vraag het expliceit, en hij start nieuwe LLM processen op met instructies die terug rapporteren. Op dat moment heb ik dus zes gelijktijdige agenten lopen die voor mij werken.

Wat is Muse en Dot: exact hetzelfde maar dan zo clever uitgewerkt dat het geen developer tool is maar een consumer tool, waar je dus die LLMs en voor “consumers”, dus een personal AI agent zoals men zegt. Wederom, het slim combineren van LLMs, met functies, inputs en outputs, vragen van jou en data, en op die manier verder kennis opbouwen, schedules definieren zodat je op tijd een nieuwe trigger hebt… allemaal zodat het lijkt alsof je iets hebt dat naast je “leeft”.

Hoop dat het dat een beetje verduidelijkt, maar eigenlijk is een agent niet meer dan een LLM die je continu prompt, of die triggers krijgt van ergens en heel vernuftig is opgezet. Het verschil met wat ik doe en wat Muze en Dot zijn:

  • Ik heb een groot deel van het vernuft zelf moeten tunen, schrijven, en maken (MCP connectors, context geven, instructies, skills, etc,..) terwijl bij Muze en Dot die dingen eigenlijk voor consumer users door Meta en Muze “geprefabriceerd zijn”. Ze zullen wel zo gemaakt zijn dat ze rekening houden met wat je doet, en hun context bijschaven en leren, maar toch, veel zit klaar en daar heb je niets voor moeten doen.
  • Ik heb iets meer zicht op wat er van data in en uit gaat en wat hij gebruikt en waar hij op connecteert. Ik weet dus ook dat hij geen VISA kaartnummers heeft, dat hij maar aan bepaalde folders op mijn PC kan, dat hij alleen maar connecteert via tools op mijn PC waar hij geen paswoorden mee heeft, enz… dat weet je minder bij die andere. Want als je wilt dat hij een brood besteld, ga je hem op één of andere manier toch moeten vertrouwen met een betaalmiddel en een account, en als hij die heeft, kan hij mss ook wel graag een carrĂ© confitureke bestellen als je begrijpt wat ik bedoel. De mijne kan wel geen patĂ©kes kopen, maar, dat zie ik vooralsnog als een voordeel. Ik vertrouw die bedrijven niet zo heel hard met dat soort data en heb ook geen nood aan een persoonlijke agent… ik ben blij met mijn hond.

Nu, je kan dat dus zien als: is het maar dat? ja, dat is het in essentie maar.

Maar de manier waarop ze het combineren is technisch gezien echt wel knap, en daar zet ik mijn pet je wel voor af. Als ik zie wat je bereikt door die Claude Code, dan valt mijn gat daar vaak van open (~ Jos Bosmans, de meer mature lezer kent die, of niet, maar dat is dan je eigen fout).

Finale opmerking: teveel mensen beseffen nog altijd niet wat die dingen allemaal kunnen doen als je er echt mee leert werken, en teveel mensen gebruiken het nog altijd als een veredelde Google.

8 likes

Merci Wim!
Ik heb dus niet ergens nen trein gemist en ben nog redelijk mee met wat die dingen allemaal kunnen. Wel bijgeleerd dat je in uw prompt expliciet kan vragen om sub LLM’s op te starten.

Is er al een “Prompting Techniques” post? :wink:

1 like

“carré confiturekes voor iedereen!”

2 likes

dus ne soort batchserver waarvan de code telkens on-the-fly wordt gegenereerd?

Dat is wat kort door de bocht denk ik en batch server is nog wel geheel iets anders. De code wordt niet on the fly gegenereerd… het zijn altijd dezelfde instructies, maar heel vernuftig in elkaar gestoken, de context (geschiedenis, bepaalde waarden,…) verandert, en daardoor gaat de LLM mogelijks andere dingen uitvoeren, acties ondernemen en diens meer.

dat kort door de bocht weet ik niet, de instructies zijn dezelfde maar wat uit LLM komt is toch niet elke keer hetzelfde? ook al is de input identiek. het resultaat zal misschien wel elke keer ongeveer hetzelfde zijn maar hoe het ertoe komt niet.

kan zijn dat ik niet 100% mee ben maar de agent laat de LLM toch elke keer opnieuw code genereren om bv een map uit te lezen of in de mailbox te zoeken naar “offertes” als het getriggerd wordt?

kan je dan niet beter de code 1 keer genereren en tunen/debuggen en dat dan triggeren?

dan verwarm je de oceaan maar 1 keer ipv elke x ms en is het resultaat veel betrouwbaarder.

en ivm het niet vertrouwen van betaalgegevens, daar heb je gelijk in maar je weet toch dat die niet nodig zijn om iets te kopen hé?

Het gaat te ver gaan en dit is niet de juiste plaats hier om deze discussie te hebben, maar “agent laat de LLM toch elke keer opnieuw code genereren om bv een map uit te lezen of in de de mailbox te zoeken naar “offertes” als het getriggerd wordt?” is niet hoe het werkt.

Technisch gezien zou je dat kunnen doen maar dat zou niet werken zoals het wil en gebruikt de kracht van LLMs niet, dan ben je code aan het genereren om de “oude manier van werken” na te bootsen, en dat iss idd niet zinvol, maar dat is verre van wat we doen.

Noemde een van jullie in de podcast nou dat je iA Writer gebruikt en dat daar AI Warning inzit? (gebruikte iA Writer vroeger en was er altijd erg van gecharmeerd, dit zou mooi moment zijn om weer in te stappen)

Geen AI warning per se. (Al zit er wel style checker in.)

Het laat je toen om AI als auteur aan te duiden, en zo te markeren om nog te herschrijven.