Code2UML: Agentic LLMs with context engineering for scalable software visualization
Dit artikel introduceert Code2UML, een agentisch LLM-systeem met een deterministische context-engineeringslaag die schaalbare, hoogwaardige geautomatiseerde UML-diagramgeneratie uit broncode-repositories op grote schaal mogelijk maakt, terwijl stabiele prestaties worden gehandhaafd over uiteenlopende projectgroottes en programmeertalen heen.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je voor dat je een enorme bibliotheek met boeken hebt (een software-codebase) en je wilt een eenvoudige kaart maken (een UML-diagram) die laat zien hoe de kamers met elkaar verbonden zijn, waar de uitgangen zich bevinden en hoe mensen zich tussen hen verplaatsen.
Het probleem is dat de bibliotheek zo groot is dat, als je probeert het hele ding aan één expert (een AI) tegelijk te beschrijven, die overweldigd raakt, begint dingen te verzinnen of simpelweg halverwege stopt. Dit is het "contextlimiet"-probleem dat het artikel aanpakt.
De auteurs, Code2U, hebben een slim team van AI-assistenten gebouwd om dit op te lossen. In plaats van één gigantische AI te vragen alles te doen, hebben ze een hiërarchie van vijf gespecialiseerde agenten gecreëerd (denk aan hen als een bouwteam met specifieke taken) en een slim datacompressiesysteem.
Hier is hoe hun systeem werkt, opgesplitst in eenvoudige concepten:
1. De "Context Engineering"-filter (De bibliothecaris)
Voordat het AI-team zelfs naar de code kijkt, fungeert een speciaal hulpmiddel als een supersnelle bibliothecaris.
- Het probleem: De volledige bibliotheek met code is te groot om in het "werkgeheugen" van de AI te passen (het contextvenster).
- De oplossing: Dit hulpmiddel gebruikt geen AI om te beslissen wat bewaard moet worden. In plaats daarvan gebruikt het strikte, vooraf geschreven regels (deterministische logica) om snel door de code te scannen en een aangepaste "snapshot" te maken voor de specifieke kaart die je wilt tekenen.
- De analogie: Stel je voor dat je een kaart nodig hebt van het metrostelsel van een stad. De bibliothecaris vraagt de AI niet: "Wat is belangrijk?" In plaats daarvan gooit de bibliothecaris direct alle straatnamen, gebouwadressen en parkdetails weg, en houdt alleen de metrostations en sporen over. Deze snapshot is klein, past perfect in het geheugen van de AI en gebeurt in milliseconden zonder enige AI-intelligentie nodig te hebben.
2. Het vijf-agenten team
Zodra de bibliothecaris de juiste snapshot heeft gemaakt, neemt een team van vijf gespecialiseerde AI-agenten het over. Ze werken samen als een goed geoliede machine:
- De Planner (De Architect): Kijkt naar de snapshot en besluit: "Oké, we moeten dit grote project opsplitsen in kleinere stukken. Laten we drie aparte kaarten maken voor de verschillende afdelingen."
- De Analyzer (De Detective): Voor elk stuk leest deze agent de specifieke bestanden en vat de belangrijkste interacties samen (wie spreekt met wie). Het negeert het ruis en focust op het signaal.
- De Diagram-agent (De Kunstenaar): Deze agent neemt de samenvatting en tekent daadwerkelijk de kaart (door de code voor het diagram te schrijven).
- De Corrector (De Redacteur): De kunstenaar kan kleine fouten maken (zoals een typefout in de legenda van de kaart). Deze agent leest de voltooide kaart, controleert deze tegen de regels en repareert direct eventuele fouten.
- De Dependency Analyzer (De Supply Chain-manager): Deze agent kijkt buiten de hoofdcode om te zien welke externe tools of bibliotheken het project gebruikt, zodat de kaart ook die verbindingen bevat.
3. De resultaten: Wat hebben ze gevonden?
Het team heeft dit systeem getest op 12 verschillende open-source softwareprojecten (variërend van kleine apps tot enorme systemen) geschreven in vier verschillende talen (Java, Python, JavaScript, PHP). Ze probeerden 7 verschillende soorten kaarten te genereren (zoals klassediagrammen, stroomdiagrammen en implementatiekaarten).
Dit is wat er gebeurde:
- Hoge nauwkeurigheid: De kaarten waren bijna altijd syntactisch correct (ongeveer 91,5% was direct perfect; voor sommige soorten zoals "Component"- en "Deployment"-kaarten was het 100%).
- Slimme samenvattingen: Het systeem probeerde niet elk enkel stukje code op te sommen (wat de kaart onleesbaar zou maken). In plaats daarvan richtte het zich op de belangrijkste onderdelen. Het nam ongeveer 31% van de code-entiteiten over, maar dat waren de juiste ones.
- Consistentie: Het werkte even goed op een klein project met 30 regels code als op een enorm project met meer dan 4.500 regels. De kwaliteit daalde niet naarmate het project groter werd.
- Geen hallucinaties: De kaarten verzonnen zelden valse verbindingen tussen code-onderdelen. Als de kaart zei dat twee dingen verbonden waren, waren ze dat ook echt.
4. Waarom dit belangrijk is
Het artikel betoogt dat eerdere pogingen om AI hiervoor te gebruiken faalden omdat ze probeerden de hele codebase in één keer aan de AI te voeden.
- Oude manier: "Hier is de hele bibliotheek, teken alsjeblieft een kaart." (Resultaat: De AI raakt in de war en maakt fouten).
- Code2U-methode: "Hier is een tiny, perfect gefilterde snapshot van precies wat je nodig hebt voor deze specifieke kaart. Teken het nu, alsjeblieft." (Resultaat: Een schone, accurate en geldige kaart).
Samenvatting
Het artikel introduceert een systeem dat het maken van softwareblauwdrukken automatiseert. Het slaagt door niet te proberen een "alles-in-één"-genie te zijn, maar door te fungeren als een gespecialiseerd team dat eerst de data intelligent comprimeert en vervolgens samenwerkt om accurate, geldige diagrammen te tekenen. Het bewijst dat je hoogwaardige softwarekaarten kunt genereren voor enorme codebases zonder dat de AI overweldigd raakt.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.