Evaluating LLM-Generated Code: A Benchmark and Developer Study
Dit artikel introduceert een uitgebreide drieledige evaluatiemethodologie die benchmarks voor juistheid, verificatie van codekwaliteit en ontwikkelaarsenquêtes combineert om door LLM-gegenereerde code te beoordelen, waarbij via een vergelijkende studie van drie modellen wordt aangetoond dat menselijke inzichten essentieel zijn voor het identificeren van productieklare kwaliteit die verder gaat dan standaard juistheidsmetrieken.
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 team van drie verschillende AI-assistenten inhuurt om een complexe, op maat gemaakte boomhut voor je buurt te bouwen. Je wilt niet alleen dat de boomhut blijft staan (functionaliteit), maar je wilt ook dat hij veilig is, makkelijk te beklimmen en dat je buren later gemakkelijk begrijpen hoe ze hem moeten gebruiken (kwaliteit).
Dit artikel gaat over hoe de auteurs hebben besloten deze AI-assistenten te testen. Ze realiseerden zich dat de meeste bestaande tests lijken op de vraag: "Kun je een enkele, perfecte houten plank maken?" Hoewel dat nuttig is, vertelt het je niet of de AI een hele boomhut kan bouwen, of hij de rommelige realiteit van de bouw aankan, of hij instructies kan schrijven die een mens daadwerkelijk kan volgen.
Hier is een overzicht van hun aanpak met behulp van alledaagse analogieën:
1. Het Probleen: De "Plank" versus de "Boomhut"
De meeste huidige tests voor AI-codegeneratoren zijn als een rijexamen op een lege parkeerplaats. Ze vragen de AI om kleine, geïsoleerde problemen op te lossen (zoals "schrijf een functie om een lijst te sorteren"). De AI slaagt, krijgt een gouden ster en iedereen is tevreden.
Maar in de echte wereld is programmeren meer als het bouwen van een heel huis. Je moet de fundering leggen, de muren plaatsen, de loodgieterswerken installeren en zorgen dat het dak niet lekt. Het is een lang gesprek waarbij je om het een en ander vraagt, en de AI moet onthouden wat hij drie prompts geleden heeft gedaan. De auteurs wilden zien of de AI dit "hele huis"-scenario kon aan, en niet alleen een enkele baksteen.
2. De Uitdaging: "Bouwen van de Boom des Levens"
Om dit te testen, gaven de auteurs de AI-assistenten een specifieke, moeilijke opdracht: "Bouwen van de Boom des Levens vanaf nul."
- De Analogie: Stel je voor dat je iemand vraat om een stamboom te tekenen voor elke soort op aarde, maar ze mogen alleen ruwe DNA-sequenties als aanwijzingen gebruiken. Ze moeten uitzoeken wie aan wie verwant is, de afstanden tussen hen berekenen en ze in families indelen.
- De Catch: De AI moest dit vanaf nul doen. Geen startcode, geen sjablonen. Alleen een reeks van 14 vragen (prompts) die één voor één werden gestuurd, precies zoals een menselijke ontwikkelaar met een AI zou chatten.
3. De Drievoudige Test (De "Tree-Fold" Methode)
De auteurs controleerden niet alleen of de boomhut bleef staan. Ze gebruikten een driestaps inspectieproces:
Stap A: De "Pass/Fail" Test (Correctheid)
Eerst controleerden ze of de code daadwerkelijk werkte.
- De Analogie: Ze maakten een checklist. Heeft de AI de juiste gegevens opgeslagen? Heeft de AI de boom correct getekend? Heeft de AI de dieren in de juiste families ingedeeld?
- De Twist: Omdat AI vaak kleine typefouten maakt (zoals het vergeten van een puntkomma), traden de auteurs op als "fixer". Ze herstelden handmatig kleine fouten, net genoeg om te zien of de code kon draaien. Dit simuleert een echte ontwikkelaar die een kleine bug oplost om verder te kunnen werken.
- Het Resultaat: Ze ontdekten dat hoewel sommige AI's de logica goed hadden, velen faalden omdat ze de complexiteit van het hele project niet aankonden. Eén AI (DeepSeek) deed het het beste wat betreft het correct uitvoeren van de logica.
Stap B: De "Robotinspecteur" (Geautomatiseerde Kwaliteit)
Vervolgens lieten ze de code controleren door een robotinspecteur (een tool genaamd SonarQube).
- De Analogie: Deze robot controleert op "codegeuren" (code smells). Het kijkt naar zaken als slordige opmaak, ontbrekende veiligheidsmaatregelen of verwarrende variabelenamen. Het geeft de code een cijfer van A tot E.
- Het Resultaat: Verrassend genoeg haalden bijna alle AI's een "A" voor beveiliging en betrouwbaarheid. De robot vond weinig grote gebreken. Het merkte echter wel op dat de code van sommige AI's "slordig" was en dat een mens er langer over zou doen om het op te schonen.
Stap C: De "Menselijke Buurman" (Ontwikkelaarsenquête)
Ten slotte vroegen ze echte menselijke ontwikkelaars om de code te beoordelen.
- De Analogie: Stel je voor dat je de blauwdrukken aan drie verschillende buren geeft en vraagt: "Als je in deze boomhut zou moeten wonen, welke zou je dan kiezen? Welke is het makkelijkst te begrijpen? Welke heeft de beste instructies?"
- De Methode: De ontwikkelaars schreven niet zomaar willekeurige aantekeningen. Ze vulden een gestructureerde enquête in, waarbij ze de code beoordeelden op zaken als "Is het makkelijk te lezen?" en "Zijn de commentaren nuttig?".
- De Verrassing: De menselijke beoordelaars waren niet altijd het eens met de robot of de wiskunde.
- De Robot zei dat de DeepSeek-code de beste was (minste fouten).
- De Mensen zeiden dat de Claude-code degene was waarmee ze daadwerkelijk zouden willen werken. Ondanks dat het enkele meer bugs had, vonden de mensen dat de code beter georganiseerd was, makkelijker te lezen en betere instructies had.
4. Wat hebben ze geleerd?
Het paper concludeert met een paar belangrijke lessen:
- Correctheid is niet alles: Een AI kan code schrijven die perfect werkt (slaagt voor de wiskundetest), maar zo slordig en verwarrend is dat een menselijke ontwikkelaar er een hekel aan zou hebben om het te onderhouden.
- Mensen zien wat robots missen: De geautomatiseerde tests misten zaken als "Is de naamgeving van variabelen logisch?" of "Is de documentatie duidelijk?". Alleen een mens kon dat opmerken.
- De "beste" AI hangt af van het doel: Als je wilt dat de wiskunde perfect is, won DeepSeek. Als je code wilt die een menselijk team gemakkelijk kan oppakken en verder kan werken, gaven de mensen de voorkeur aan Claude.
- We hebben een nieuwe manier van testen nodig: We kunnen niet meer alleen vertrouwen op de oude "pass/fail" tests. Om echt te weten of een AI goed is in programmeren, moeten we testen op grote projecten en echte mensen vragen of ze het prettig vinden om met de output te werken.
Kortom, de auteurs hebben een nieuw "rapportcijfer" voor AI-programmeurs gemaakt dat niet alleen controleert of het antwoord juist is, maar ook vraagt: "Is dit een antwoord waar een mens daadwerkelijk iets aan heeft?"
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.