Co-Located Tests, Better AI Code: How Test Syntax Structure Affects Foundation Model Code Generation
Dit onderzoek toont aan dat het co-loceren van tests met implementatiecode de kwaliteit van door foundation modellen gegenereerde code significant verbetert, aangezien inline tests leiden tot betere behouds- en correctheidsscores dan gescheiden teststructuren.
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 verwarde assistent hebt die voor je code schrijft. Deze assistent is een "Foundation Model" (een soort super-AI). Je geeft hem een opdracht: "Bouw een berg met prioriteiten" (een datastructuur genaamd een heap).
De vraag die deze paper onderzoekt, is heel simpel: Hoe geef je de instructies voor de tests aan deze AI?
De auteurs ontdekten dat de plek waar je de testinstructies zet, net zo belangrijk is als de instructies zelf. Het is alsof je een kok vertelt hoe hij moet koken:
- Optie A (Inline): Je schrijft de recepten en proefsmaken direct in de rand van het recept zelf.
- Optie B (Gescheiden): Je schrijft het recept op de ene pagina en de proefsmaken op een los vel papier dat je ergens anders in de la legt.
Hier is wat ze ontdekten, vertaald naar alledaagse taal:
1. De "Bij elkaar" Regel (Co-Location) werkt het beste
Wanneer de AI de testinstructies direct naast de code ziet waar ze over gaan (zoals in Python, waar tests in de documentatie van de functie staan), is de AI als een topkok.
- Het resultaat: De AI bouwt de code perfect én onthoudt de testinstructies. Het is alsof de AI zegt: "Ah, ik zie hier direct wat ik moet testen, dus ik doe het precies zo."
- De metafoor: Het is alsof je een bouwvakker direct naast de muur zet waar hij moet metselen, met de blauwdruk in zijn hand. Hij ziet precies wat er moet gebeuren.
2. De "Losse Papiertjes" Valstrik
Wanneer de testinstructies los van de code staan (zoals in Rust, waar tests vaak in een apart blokje onderaan het bestand staan), wordt de AI soms verward.
- Het resultaat: Bij de slimste modellen (de "top-tier" AI's) ging het goed. Maar bij de iets minder krachtige modellen (of bepaalde versies van de slimste modellen) gebeurde er iets raars: de AI bouwde de code perfect, maar vergat de tests volledig.
- De metafoor: Het is alsof je de bouwvakker de blauwdruk geeft, maar de instructies voor de kwaliteitscontrole op een los vel papier in een andere kamer legt. De AI denkt: "Ik bouw de muur perfect, maar die losse brief met 'test dit'? Die is voor een ander." De code werkt, maar er is geen bewijs dat het werkt.
3. De "Slaap" en "Wakker" Modellen (Model Evolutie)
De paper laat zien dat AI-modellen niet statisch zijn; ze veranderen met elke update.
- Er was een periode waarin een bepaald model (Opus 4, 4.1, 4.5) de losse tests in Rust volledig negeerde. Het was alsof ze in een slaapstand waren over die specifieke instructies.
- Maar in de volgende update (Opus 4.6) werden ze plotseling weer wakker en onthielden ze alles weer.
- Les: Je kunt niet blind vertrouwen op een AI-versie. Wat vandaag werkt, kan morgen veranderen. Je moet je AI-assistent blijven testen.
4. Waarom gebeurt dit? (De "Magische Kijker")
De auteurs keken niet alleen naar het resultaat, maar ook naar hoe de AI in zijn hoofd werkt (met een techniek genaamd "Mechanistic Interpretability").
- Ze ontdekten dat de AI's hun "blik" (attention) veel sterker richten op tests die direct naast de code staan.
- De analogie: Stel je voor dat de AI een zoeklicht heeft. Als de testinstructies direct naast de code staan, schijnt het zoeklicht fel en helder op die instructies. Als de tests ver weg staan, is het zoeklicht vaag en mist het de instructies.
- Interessant: Dit geldt zelfs voor verschillende soorten AI-architecturen (niet alleen de populaire "Transformer" modellen, maar ook andere types). De "bij elkaar" regel is dus een fundamentele eigenschap van hoe deze systemen leren.
Wat betekent dit voor jou?
Als je AI gebruikt om code te schrijven (of als je een team leidt dat dit doet), is dit de belangrijkste boodschap:
- Zet je tests bij de code: Als je een AI vraagt om code te schrijven, zorg dan dat de testinstructies fysiek dichtbij de code staan in de prompt. Gebruik bijvoorbeeld Python's
doctests(tests in de documentatie) of zorg dat je AI de tests direct naast de functie ziet. - Vertrouw niet op "het werkt wel": Als de AI code terugstuurt zonder de tests die je gaf, is het misschien wel goede code, maar je hebt geen bewijs. De AI heeft de instructie "test dit" genegeerd.
- Pas op met je taalkeuze: In sommige programmeertalen (zoals Rust in dit onderzoek) is het risico groter dat de AI tests vergeet als ze niet direct bij de code staan. In andere talen (zoals Python) is de AI wat vergevingsgezinder, maar het blijft beter om ze bij elkaar te houden.
Kort samengevat:
In de wereld van AI-programmeren is de structuur van je instructies net zo belangrijk als de inhoud. Als je je tests en je code bij elkaar zet, krijg je betere, betrouwbaardere resultaten. Het is de nieuwe "beste praktijk" voor werken met AI.
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.