Evaluating LLMs on Java Code Snippet Adaptation Using a Mutation-Injection Framework
Dit artikel stelt een mutatie-injectiekader voor om grote taalmodellen te evalueren op instructievrije adaptatie van Java-codefragmenten, waarbij wordt onderzocht hoe de prestaties variëren over verschillende typen adaptatie, complexiteitsniveaus en contextgranulariteiten met behulp van een dataset afgeleid van open-source repositories met een sterke testdekking.
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 chef bent die een heerlijk recept voor "Spaghetti Carbonara" vindt in een oud kookboek. Je wilt het maken voor je vrienden, maar er is een probleem: je vrienden zijn allergisch voor eieren en je hebt alleen een heel klein potje, niet een grote pan. Je kunt het recept niet zomaar exact kopiëren; je moet het aanpassen. Je moet de eieren vervangen door iets anders, de kooktijd veranderen en misschien een stap overslaan.
In de wereld van computerprogrammeren doen ontwikkelaars precies hetzelfde. Ze vinden een stukje code (een "snippet") dat voor iemand anders werkt, kopiëren het, en moeten het dan aanpassen om het in hun eigen project te laten passen.
Dit document is een plan om te testen hoe goed Artificiële Intelligentie (AI) dit werk van "receptaanpassing" zelfstandig kan uitvoeren, zonder dat er precies wordt verteld wat er veranderd moet worden.
Hier is een uitsplitsing van het plan van het onderzoek met behulp van eenvoudige analogieën:
1. Het Probleem: De "Stille Chef"-test
Momenteel, wanneer we AI vragen om code te repareren, geven we het meestal een zeer specifieke lijst met instructies, zoals: "Verander de variabelenaam van 'x' naar 'y' en vervang de bibliotheek."
Maar in de echte wereld schrijven ontwikkelaars geen lijsten. Ze zeggen gewoon: "Hier is de code die ik heb gekopieerd; zorg dat het werkt in mijn nieuwe project." De AI moet de code en de nieuwe omgeving bekijken en de wijzigingen zelf uitzoeken. De auteurs willen weten: Kan de AI de wijzigingen uitzoeken zonder een stapsgewijze handleiding?
2. De Oplossing: De "Mutatie-machine"
Om dit eerlijk te testen, kunnen de auteurs niet zomaar willekeurige code van het internet gebruiken, want dan zouden ze niet precies weten welke wijzigingen de AI had moeten maken.
In plaats daarvan bouwen ze een "Mutatie-machine" (een framework dat ze Mutation-Injection noemen). Zo werkt het:
- Stap 1: Ze beginnen met een perfect, werkend stuk code dat al getest is (zoals een perfect recept).
- Stap 2: Ze gebruiken een robot om de code op specifieke, gecontroleerde manieren opzettelijk te "breken" of te "verpesten". Bijvoorbeeld, ze kunnen een variabele hernoemen, een getal veranderen of een hulpmiddel vervangen door een ander.
- Stap 3: Ze geven deze "kapotte" code aan de AI en zeggen: "Fix dit zodat het weer werkt."
- Stap 4: Als de AI het repareert en de code alle tests doorstaat, krijgt de AI een punt.
Omdat zij de "fouten" zelf hebben gecreëerd, weten zij precies wat de AI had moeten doen. Het is als een leraar die een wiskundeprobleem met een bekende fout schrijft, dit aan een leerling geeft, en controleert of de leerling die specifieke fout heeft gevonden en hersteld.
3. De Drie Grote Vragen (Het "Menu")
De onderzoekers testen de AI op drie hoofdzaken:
- Vraag 1: Welke "ingrediënten" zijn het moeilijkst om te vervangen?
Sommige wijzigingen zijn makkelijk, zoals het hernoemen van een variabele (het veranderen van "bloem" naar "suiker"). Andere zijn moeilijk, zoals het veranderen van de volledige bereidingswijze (overstappen van bakken naar bakken in de pan). Ze willen zien welke soorten wijzigingen de AI het meest in de war brengen. - Vraag 2: Wordt het moeilijker als je meer dingen tegelijk breekt?
Als de AI één kapot onderdeel kan repareren, kan het dan ook drie kapotte onderdelen tegelijk repareren? Ze testen of de moeilijkheid lineair optelt of dat de AI volledig in de war raakt wanneer er meerdere dingen misgaan. - Vraag 3: Hoeveel "context" heeft de AI nodig?
Stel je voor dat je een recept aan het repareren bent.- Scenario A: Je ziet alleen de receptenkaart.
- Scenario B: Je ziet de receptenkaart en de lijst met ingrediënten in je voorraadkast.
- Scenario C: Je ziet de receptenkaart, de voorraadkast en de hele keukenindeling.
De onderzoekers willen weten: Heeft de AI de hele "keuken" (de omliggende code) nodig om een goede indruk te maken, of is de receptenkaart genoeg?
4. De Spelregels
- De Taal: Ze testen dit met behulp van Java, een zeer gebruikelijke programmeertaal.
- De "Geen Hulp"-regel: De AI mag niet verteld worden wat er veranderd moet worden. De AI krijgt alleen een algemene opdracht: "Pas deze snippet aan aan de context."
- Het Veiligheidsnet: Ze gebruiken echte, open-source projecten met sterke "test suites". Zie deze tests als een veiligheidsinspecteur. Als de AI de code verandert en de veiligheidsinspecteur zegt: "Dit werkt nog steeds perfect", dan slaagt de AI.
5. Waarom dit belangrijk is
Op dit moment weten we niet echt hoe goed AI is in deze specifieke "kopiëren-plakken-en-repareren"-vaardigheid. Bestaande tests zijn ofwel te makkelijk, te vaag, of kijken alleen naar volledige functies (zoals een hele maaltijd) in plaats van kleine fragmenten (zoals een enkel ingrediënt).
Deze studie heeft als doel een enorme, eerlijke speeltuin te bouwen waar ze precies kunnen meten waar AI slaagt en waar het faalt bij het aanpassen van code. Als ze ontdekken dat AI slecht is in het "vervangen van gereedschap" maar goed in het "hernoemen van ingrediënten", kunnen toekomstige tools worden gebouwd om ontwikkelaars specifiek te helpen met de moeilijke delen.
Kortom: De auteurs bouwen een gecontroleerde "hindernisbaan" voor AI om te zien hoe goed het kapotte code zelfstandig kan repareren, zonder dat er een spiekbriefje wordt gegeven.
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.