Are LLMs Reliable Code Reviewers? Systematic Overcorrection in Requirement Conformance Judgement
Dit onderzoek onthult dat grote taalmodellen systematisch fouten maken bij het beoordelen van codeconformiteit met eisen, waarbij gedetailleerdere prompts de fouten verergeren, en stelt een 'Fix-guided Verification Filter' voor om deze onbetrouwbaarheid te mitigeren.
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 zeer slimme, maar soms wat nerveuze rechercheur hebt die werkt voor een softwarebedrijf. Deze rechercheur is een kunstmatige intelligentie (een "LLM") die is opgeleid om code te controleren. Zijn taak is simpel: hij moet kijken of een stukje computercode precies doet wat er in de opdracht staat beschreven.
De onderzoekers van dit paper hebben deze rechercheur getest en een verrassend, en een beetje zorgwekkend, patroon ontdekt.
Hier is wat ze hebben gevonden, vertaald naar alledaagse taal:
1. De "Overdreven Kritische" Rechercheur
Stel je voor dat je een perfecte taart hebt gebakken. Je hebt de recepten precies gevolgd, de ingrediënten waren goed, en de taart ziet er perfect uit. Je geeft deze taart aan je rechercheur om te keuren.
Wat doet hij? Hij kijkt er niet alleen naar, maar begint te fantaseren.
- "Hm, de tekst zegt niet dat je de taart moet bakken bij 180 graden, maar misschien had je het bij 175 moeten doen? Dat is een fout!"
- "De tekst zegt niets over suiker, maar een echte taart zou misschien ook een snufje zout nodig hebben. Dit is dus onvolledig!"
- "De vorm is perfect, maar ik kan me voorstellen dat hij in de oven zou kunnen vallen als de wind waait. Dit is gevaarlijk!"
Het probleem: De rechercheur zegt: "Nee, deze taart is niet goed." Terwijl hij het eigenlijk perfect had moeten keuren.
In de wereld van software noemen we dit overcorrectie. De AI zegt dat goede code "fout" is, omdat hij te veel zoekt naar fouten die er niet zijn. Hij is zo bang om iets over het hoofd te zien, dat hij alles afkeurt.
2. Hoe meer vragen je stelt, hoe erger het wordt
De onderzoekers dachten eerst: "Als we de rechercheur vragen om zijn redenering uit te leggen en zelfs een oplossing voor te stellen, wordt hij dan niet slimmer?"
Het tegendeel bleek waar.
- Vraag 1: "Is dit goed?" -> Hij zegt soms "Nee" (maar niet vaak).
- Vraag 2: "Is dit goed? Leg uit waarom, en geef een oplossing." -> Hij zegt veel vaker "Nee"!
Het is alsof je de rechercheur vraagt: "Schrijf een gedicht over waarom deze taart mislukt is, en teken daarna een nieuwe taart." Door hem te dwingen om zo diep te graven en zo creatief te zijn, begint hij dingen te verzinnen die er niet zijn. Hij wordt zo kritisch dat hij zelfs perfecte code afkeurt.
3. De "Waarom"-verklaringen zijn vaak nep
Wanneer de AI zegt "Nee", geeft hij vaak een heel overtuigende uitleg.
- AI: "Deze code is fout omdat hij niet werkt bij extreme temperaturen."
- Werkelijkheid: De opdracht zei niets over temperaturen, en de code werkt prima.
De onderzoekers ontdekten dat deze uitleg vaak inconsistent is. Soms zegt de AI "Nee", maar schrijft hij in zijn uitleg eigenlijk dat de code wel goed is. Het is alsof de rechercheur zegt: "Ik arresteer deze verdachte," terwijl hij in zijn verslag schrijft: "Hij heeft een onberispelijk alibi." Je kunt de uitleg dus niet zomaar vertrouwen.
4. De Oplossing: De "Proefbakker"
Hoe los je dit op? De onderzoekers bedachten een slimme truc. Ze noemen het de "Fix-guided Verification Filter".
Stel je voor dat de rechercheur zegt: "Deze taart is slecht, hier is een nieuwe versie die ik heb gebakken."
In plaats van hem te geloven, doen we het volgende:
- We nemen de originele taart (de code die de AI afkeurde).
- We nemen de nieuwe taart (de oplossing van de AI).
- We proeven ze allebei echt (we draaien de tests).
Als de originele taart perfect smaakt (de tests slagen) en de nieuwe taart precies hetzelfde smaakt, dan weten we: De AI had ongelijk! Hij was te kritisch. We negeren zijn "Nee" en zeggen: "Oké, de originele taart is prima."
Dit werkt als een realitycheck. Het dwingt de AI om zijn kritiek te bewijzen met feiten (tests), in plaats van met fantasie.
Conclusie
De boodschap van dit onderzoek is helder:
- AI's zijn niet perfect als "rechercheurs". Ze zijn vaak te bang om fouten te missen en keuren daarom goede code onterecht af.
- Meer vragen stellen helpt niet altijd. Als je de AI vraagt om meer te verklaren, wordt hij juist onbetrouwbaarder en kritischer.
- Gebruik feiten, niet alleen woorden. Vertrouw niet blind op wat de AI schrijft. Laat de code echt "draaien" (testen) om te zien of het werkt. Als de AI een oplossing voorstelt, test die dan eerst voordat je de originele code afkeurt.
Kortom: Gebruik AI als een slimme assistent, maar laat hem nooit de enige rechter zijn zonder dat je zijn oordeel eerst hebt gecontroleerd met een echte proef.
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.