Taakgraaf: hoe computers en AI-agents ingewikkelde klussen opsplitsen en plannen
Stel je bereidt een groot kerstdiner voor met vijf gangen. Sommige klussen kunnen pas beginnen als andere klaar zijn: je kunt de saus pas maken als de jus getrokken is, en de taart moet afgekoeld zijn voordat je hem versiert. Andere klussen kunnen prima tegelijk: terwijl de oven voorverwarmt, kun je alvast groenten snijden. Als je dit allemaal op een groot vel papier tekent - met bolletjes voor elke klus en pijltjes die aangeven wat eerst moet gebeuren - dan heb je in feite een taakgraaf getekend.
In de informatica is een taakgraaf precies dat: een schema van taken (de bolletjes, ook wel knooppunten genoemd) en de afhankelijkheden daartussen (de pijltjes). Computers gebruiken zulke schema's al decennia om werk efficiënt te verdelen. Het nieuwe is dat steeds vaker AI-systemen, met name zogeheten AI-agents die zelfstandig meerstaps-opdrachten uitvoeren, zelf zo'n taakgraaf opstellen en volgen om een ingewikkelde opdracht van een gebruiker stap voor stap af te handelen.
Wat is het precies?
In vaktaal heet een taakgraaf een gerichte acyclische graaf, in het Engels een Directed Acyclic Graph of DAG. Dat klinkt ingewikkelder dan het is. "Gericht" betekent dat de pijltjes een richting hebben: taak A moet klaar zijn vóórdat taak B kan beginnen, niet andersom. "Acyclisch" betekent dat er geen rondjes in het schema mogen zitten - je kunt niet een keten van afhankelijkheden hebben die uiteindelijk weer bij zichzelf uitkomt, want dan zou geen enkele taak ooit kunnen beginnen.
Het opstellen en gebruiken van een taakgraaf verloopt in grote lijnen in een aantal stappen. Eerst wordt een grote, complexe taak opgesplitst in kleinere subtaken. Vroeger deed een mens dat, bijvoorbeeld een programmeur of planner; bij moderne AI-agents analyseert een taalmodel de opdracht en bedenkt zelf welke stappen nodig zijn.
Daarna worden de afhankelijkheden tussen die subtaken vastgesteld: welke stap heeft de uitkomst van een andere stap nodig om te kunnen beginnen? Op basis daarvan wordt de eigenlijke graaf gebouwd, met knooppunten voor de taken en pijlen voor de volgorde-eisen.
Vervolgens neemt een zogeheten scheduler - een planningsprogramma - de graaf door en bepaalt de daadwerkelijke uitvoervolgorde. Taken die geen onderlinge afhankelijkheid hebben, kunnen tegelijk (parallel) worden uitgevoerd, wat tijd bespaart. Tot slot wordt de graaf uitgevoerd: bij AI-agents kan elk knooppunt bijvoorbeeld een aanroep zijn naar een taalmodel, naar een extern hulpmiddel zoals een rekenmachine of zoekmachine, of naar een andere gespecialiseerde subagent. Sommige moderne systemen passen de graaf tijdens de uitvoering zelf nog aan, bijvoorbeeld wanneer een tussentijds resultaat tegenvalt en er een andere aanpak nodig blijkt.
Wat wil men ermee bereiken?
Het belangrijkste doel is efficiëntie. Door taken die niet van elkaar afhangen tegelijk te laten verlopen, hoeft een systeem niet onnodig te wachten en wordt beschikbare rekenkracht beter benut. Bij grote hoeveelheden data of bij complexe AI-opdrachten kan dit het verschil maken tussen minuten en uren wachttijd.
Een tweede doel is betrouwbaarheid en navolgbaarheid. Omdat de afhankelijkheden expliciet in een schema staan, is achteraf beter te zien waar iets misging en waarom - een taak die faalde, blokkeert precies de taken die ervan afhankelijk waren, en de rest kan gewoon doorgaan of apart bekeken worden. Voor AI-systemen is dit extra belangrijk: het maakt hun handelen minder een "zwarte doos" en beter controleerbaar door mensen.
Een derde doel is herbruikbaarheid: eenmaal opgestelde taakgraven kunnen als sjabloon dienen voor vergelijkbare klussen in de toekomst, zonder dat het wiel iedere keer opnieuw hoeft te worden uitgevonden.
Voor AI-agents specifiek is er nog een reden: een taalmodel dat in één keer antwoord geeft, loopt vast bij opdrachten die uit veel stappen bestaan, zoals "boek een reis, vergelijk drie hotels en stuur een samenvatting naar mijn collega's". Door zo'n opdracht op te splitsen in een taakgraaf ontstaat ruimte voor tussentijdse controle en foutherstel: als één stap mislukt, hoeft niet de hele opdracht opnieuw, maar kan alleen die ene stap worden overgedaan. Het uiteindelijke, verdergaande doel van sommige onderzoekers - AI-systemen die volledig zelfstandig plannen maken, uitvoeren en bijstellen zonder menselijke tussenkomst - is nog altijd ambitieus en op dit moment maar beperkt gerealiseerd.
Voorbeelden uit de praktijk
Apache Spark, ontstaan rond 2009 aan de Universiteit van Californië in Berkeley en later uitgebracht als opensourcesoftware, gebruikt intern een "DAG Scheduler" die rekenstappen voor big-data-verwerking als taakgraaf over een cluster van computers verdeelt. Dit is een van de vroegste grootschalige praktijktoepassingen van het principe.
Apache Airflow ontstond intern bij het verhuurplatform Airbnb rond 2014 en werd kort daarna als opensourceproject uitgebracht. Datateams over de hele wereld beschrijven er workflows mee - bijvoorbeeld het elke nacht automatisch opstellen van rapportages - als een taakgraaf in Python-code. Het is inmiddels een van de bekendste voorbeelden van de klassieke, niet-AI-gedreven toepassing.
Argo Workflows, een opensource workflow-engine die rond 2017 werd uitgebracht en draait bovenop het containerplatform Kubernetes, orkestreert eveneens taken als graaf en wordt veel gebruikt voor machine-learning-pipelines. Het project valt tegenwoordig onder de Cloud Native Computing Foundation.
LangGraph, begin 2024 uitgebracht door het bedrijf LangChain, is een van de eerste bibliotheken die specifiek bedoeld is om AI-agent-workflows als graaf te bouwen. Knooppunten zijn hier stappen die een taalmodel of extern hulpmiddel aanroepen, met vertakkingen en zelfs herhaal-lussen waarmee een agent zichzelf kan corrigeren.
Ook buiten de computerindustrie bestaat het principe al langer: het Jet Propulsion Laboratory van NASA gebruikte planningssystemen als ASPEN en CASPER, ontwikkeld vanaf eind jaren negentig en begin jaren tweeduizend, om taken van ruimtevaartuigen - zoals waarnemingen doen en data naar de aarde versturen - te plannen als netwerk van onderling afhankelijke taken binnen strikte beperkingen als beschikbare energie en tijd.
Hoe ver is de techniek?
De klassieke toepassing van taakgraven - in systemen als Airflow, Spark en Argo - is volwassen technologie. Dit zijn geen experimentele projecten meer, maar gereedschap dat dagelijks door duizenden bedrijven wordt gebruikt om data te verwerken en workflows te automatiseren.
De nieuwe toepassing, waarbij een AI-agent zelf een taakgraaf opstelt en uitvoert om een opdracht van een gebruiker af te handelen, is aanzienlijk jonger: deze aanpak wint sinds ongeveer 2023 en 2024 snel terrein, maar is voor complexe of kritieke taken nog experimenteel. Er zitten reële obstakels in de weg. Een AI moet zelf correct inschatten welke subtaken nodig zijn en in welke volgorde ze moeten gebeuren; fouten in die opsplitsing kunnen zich als een kettingreactie voortplanten door de rest van de graaf. Het is bovendien lastig te garanderen dat een agent voor een nieuwe, nog nooit eerder geziene opdracht wel de juiste graaf bedenkt - iets wat bij een vaste, door mensen ontworpen workflow als Airflow geen probleem is, omdat de graaf daar vooraf door een mens is vastgelegd.
Veiligheid is een ander punt van zorg: een AI-agent die zelfstandig een verkeerde taakgraaf uitvoert, kan onbedoeld schade aanrichten, bijvoorbeeld door verkeerde bestanden te verwijderen of een e-mail naar de verkeerde persoon te sturen. Eerlijkheidshalve moet ook gezegd worden dat er nog geen dominante standaardaanpak bestaat voor AI-agent-taakgraven: naast LangGraph bestaan er concurrerende raamwerken zoals AutoGen van Microsoft en CrewAI, elk met een eigen manier van werken, en het is op dit moment onzeker welke aanpak - of misschien een geheel andere - uiteindelijk de standaard zal worden.
Wie werken eraan?
Aan de klassieke, niet-AI-gedreven kant beheert de Apache Software Foundation zowel Airflow als Spark als opensourceprojecten, met bijdragen van talloze bedrijven en individuele ontwikkelaars wereldwijd. De Cloud Native Computing Foundation (CNCF) is verantwoordelijk voor Argo. Commerciële partijen als Databricks, opgericht door de oorspronkelijke makers van Spark, en Airbnb, waar Airflow ontstond, blijven nauw betrokken bij de doorontwikkeling.
Aan de AI-agent-kant is LangChain Inc. de partij achter LangGraph, terwijl Microsoft Research het concurrerende raamwerk AutoGen ontwikkelt. Ook Google werkt aan eigen gereedschap voor het bouwen van AI-pijplijnen en -agents. Academisch gezien liggen de wortels van veel van deze technologie bij onderzoek naar parallel computergebruik, onder meer aan de Universiteit van Californië in Berkeley (waar Spark ontstond), en bij decennialang onderzoek binnen de klassieke AI-planningsgemeenschap aan universiteiten wereldwijd naar hoe je grote taken automatisch in behapbare stappen opsplitst. Voor de ruimtevaarttoepassing is het Jet Propulsion Laboratory (JPL) van NASA de belangrijkste ontwikkelaar en gebruiker.