Helping LLMs Improve Code Generation Using Feedback from Testing and Static Analysis

Dit paper presenteert een framework dat testen en statische analyse gebruikt om open-source LLM's te helpen bij het zelf verbeteren van gegenereerde code, waarbij wordt vastgesteld dat hoewel deze modellen vaak fouten en kwetsbaarheden introduceren en slecht zijn in het detecteren daarvan, ze aanzienlijk beter presteren bij het oplossen van deze problemen wanneer ze feedback krijgen over de fouten.

Greta Dolcetti, Vincenzo Arceri, Eleonora Iotti, Sergio Maffeis, Agostino Cortesi, Enea Zaffanella

Gepubliceerd 2026-03-16
📖 4 min leestijd☕ Koffiepauze-leesvoer

Each language version is independently generated for its own context, not a direct translation.

Stel je voor dat je een zeer slimme, maar soms wat slordige assistent hebt die je helpt met het bouwen van een auto. Je geeft hem een opdracht: "Bouw een motor die rijdt." Hij bouwt snel een motor, maar soms draait hij de bouten niet goed aan, of hij gebruikt de verkeerde olie.

Dit is precies wat Grote Taalmodellen (LLMs) doen als we ze vragen om computercode te schrijven. Ze zijn razendsnel en kunnen veel, maar de code die ze maken is niet altijd veilig of foutloos.

Deze paper onderzoekt hoe we deze slimme assistenten kunnen helpen om hun werk beter te doen, door hen te laten "leren van hun fouten" met behulp van twee speciale tools: tests en een veiligheidscontrole.

Hier is de uitleg in drie simpele stappen, met een paar creatieve vergelijkingen:

1. De Proef: De "Motorbouwers" (Code Generatie)

De onderzoekers gaven vier verschillende AI-modellen (denk aan Llama, Gemma en Mixtral) een lijst met 100 simpele bouwpakketten (taken) en vroegen hen om C-code te schrijven (een programmeertaal die veel gebruikt wordt voor systemen die veilig moeten werken, zoals in auto's of vliegtuigen).

  • Het resultaat: Het was een gemengd pakket. Sommige AI's maakten prachtige motoren, maar veel anderen bouwden rommel.
    • Slechts 46% tot 65% van de code werkte echt zoals bedoeld.
    • De rest had fouten: de motor startte niet, of hij liep vast.
    • Veiligheid: Gelukkig was de code niet gevaarlijk slecht. De meeste motoren lekten niet (geen veiligheidslekken), maar ze waren wel vaak functioneel onzin.

2. De Check: De "Inspecteur" en de "Testbaan"

Nu komt het slimme deel. De onderzoekers lieten de AI's niet alleen werken. Ze gebruikten twee methoden om te kijken wat er mis was:

  • De Testbaan (Correctheid): Ze draaiden de code door een reeks van strikte tests. Het is alsof je de motor op een testbaan zet. Als hij niet start of trilt, is hij fout.
  • De Inspecteur (Veiligheid): Ze gebruikten een geavanceerde software-tool genaamd Infer. Dit is als een robot-inspecteur die met een vergrootglas door de motor loopt om te kijken of er bouten loszitten of of er brandgevaar is (zoals geheugenlekken).

De verrassende ontdekking:
Toen ze de AI's vroegen om zelf te zeggen of hun eigen werk goed was, faalden ze volledig.

  • Het was alsof je de motorbouwer vraagt: "Is je motor goed?" en hij zegt: "Ja, zeker!" terwijl hij eigenlijk een bout heeft vergeten.
  • De AI's konden hun eigen fouten bijna niet zien. Ze waren blind voor hun eigen slordigheden.

3. De Oplossing: De "Reparatiewerkplaats" (Self-Repair)

Dit is het belangrijkste deel van het onderzoek. Wat gebeurt er als we de AI niet alleen laten, maar haar de resultaten van de inspectie geven?

De onderzoekers zeiden tegen de AI: "Kijk hier, je motor start niet (foutmelding van de testbaan) en hier zit een losse bout (waarschuwing van de inspecteur). Maak het goed."

  • Het resultaat: Het werkte verrassend goed!
    • Toen de AI de foutmeldingen kreeg, kon ze de code vaak repareren.
    • Voor veiligheidsfouten (zoals losse bouten) lukte het in 89% van de gevallen om het probleem op te lossen.
    • Voor functionele fouten (de motor die niet start) lukte het in 62% van de gevallen.

De Grote Les (De Analogie)

Stel je voor dat je een kind leert fietsen.

  1. Zonder feedback: Je laat het kind alleen fietsen. Het valt vaak, maar het beseft niet waarom.
  2. Met feedback: Je zegt: "Je viel omdat je te hard stuurde naar links."
  3. Het resultaat: Het kind leert snel om niet meer naar links te sturen.

Deze paper laat zien dat AI's (zoals LLMs) op zichzelf nog niet perfect zijn in het schrijven van veilige code. Ze zijn vaak zelfverzekerd over hun fouten. Maar, als we hen een duidelijke "reparatie-instructie" geven (de resultaten van tests en veiligheidscontroles), kunnen ze hun eigen werk uitstekend verbeteren.

Conclusie voor de Toekomst

Dit betekent dat we in de toekomst AI-tools kunnen bouwen die niet alleen code schrijven, maar die ook automatisch testen, fouten vinden en zichzelf repareren voordat de code bij een mens terechtkomt. Het is alsof we een onmisbare "kwaliteitscontrole-robot" toevoegen aan het bouwteam, zodat de AI's steeds slimmer en veiliger worden.

Kortom: AI's zijn nog geen perfecte programmeurs, maar met de juiste feedback kunnen ze het wel worden.

Ontvang papers zoals deze in je inbox

Gepersonaliseerde dagelijkse of wekelijkse digests op basis van jouw interesses. Gists of technische samenvattingen, in jouw taal.

Probeer Digest →