In Line with Context: Repository-Level Code Generation via Context Inlining
Dit artikel introduceert InlineCoder, een nieuw raamwerk dat repository-niveau codegeneratie verbetert door de aanroepgrafiek van een onvoltooide functie—bestaande uit een gegenereerde anker, upstream-aanroepers en downstream-aanroepbaren—in de prompt in te lijnen om complex repository-verstaan te transformeren in een meer hanteerbare taak op functieniveau.
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
Het Grote Idee: Code Schrijven met een "Call-Stack" Visie
Stel je voor dat je een nieuwe werknemer bent die is aangenomen om een specifieke functie te schrijven voor een enorm softwarebedrijf. In de oude dagen, als je om hulp vroeg, kreeg je misschien gewoon een lijst met vergelijkbaar ogende zinnen uit andere delen van het kantoor. Je zag woorden als "berekenen" of "gebruiker" en probeerde te raden wat je moest doen. Dit leidde vaak tot fouten omdat je niet wist wie je vroeg om het werk te doen of welke gereedschappen er in de kamer beschikbaar waren.
InlineCoder is een nieuw systeem dat verandert hoe AI code schrijft voor deze grote projecten. In plaats van de AI alleen een lijst met vergelijkbare zinnen te tonen, schrijft het het verhaal fysiek om om de AI precies te laten zien waar de nieuwe code in de echte wereld past.
Hier is hoe het werkt, opgesplitst in eenvoudige stappen:
1. Het Probleem: De "Geïsoleerde Kamer" Valstrik
Wanneer AI probeert een stuk code te schrijven voor een enorm softwareproject (een "repository"), blijft het meestal steken in een "geïsoleerde kamer".
- De Oude Manier: De AI krijgt de functieomschrijving (de functiesignatuur) en een paar willekeurige, vergelijkbaar ogende documenten uit het project. Het is als proberen een motorkap te repareren terwijl je blinddoek hebt, en je alleen een foto vasthoudt van een vergelijkbaar ogende motor uit een andere auto. Je zou de bouten misschien goed kunnen zetten, maar je weet niet welke kant de riem op gaat of wie de auto bestuurt.
- Het Resultaat: De AI schrijft code die op zichzelf er prima uitziet, maar het hele systeem kapot maakt omdat het niet weet hoe de nieuwe code verbinding maakt met de rest van het project.
2. De Oplossing: "Context Inlining"
De auteurs van dit artikel, InlineCoder, realiseerden zich dat je, om een baan te begrijpen, twee dingen moet zien:
- Wie roept je op? (De "Upstream" context: De baas die om het werk vraagt).
- Wie roep jij op? (De "Downstream" context: De gereedschappen of helpers die je nodig hebt om het werk te doen).
InlineCoder gebruikt een slimme truc genaamd Inlining. Stel je voor dat je een script schrijft voor een toneelstuk. In plaats van de acteur alleen hun tekst te geven, neem je het script en plak je de tekst van de acteur fysiek in de scènes waar de andere acteurs met hen praten. Plotseling ziet de acteur precies welke toon ze moeten gebruiken, welke rekwisieten hen worden aangereikt en hoe hun tekst past in de flow van het gesprek.
3. Hoe InlineCoder Werkt (De 3-Stappen Dans)
Stap 1: Het "Concept" (Het Anker)
Eerst maakt de AI een snelle, ruwe gok op de code. Het is niet perfect, maar het is een startpunt. Denk hierbij aan de AI die zegt: "Dit is mijn beste gok voor hoe deze functie eruit zou moeten zien."
Stap 2: De "Upstream" Inlining (De Baas Zien)
Het systeem neemt die ruwe gok en plakt deze direct in de code van de functies die deze aanroepen.
- Vergelijking: Stel je voor dat je een kok bent. In plaats van alleen te horen "Maak een soep", toont het systeem je het exacte moment waarop de ober je het bestelling aangeeft, welke ingrediënten de ober vasthoudt en hoe de soep zal worden geserveerd.
- Waarom dit helpt: De AI ziet nu precies welke data er binnenkomt en welk formaat het resultaat moet hebben. Het stopt met raden en begint te matchen met de specifieke behoeften van de "aanroeper".
Stap 3: De "Downstream" Retrieval (De Gereedschappen Vinden)
Het systeem kijkt naar de ruwe gok om te zien welke gereedschappen (andere functies) de AI probeerde te gebruiken. Het gaat vervolgens de bibliotheek van het project in en pakt de werkelijke code voor die gereedschappen, zodat de AI de juiste versie gebruikt.
- Vergelijking: Als het concept van de kok zegt "gebruik de blender", vindt het systeem de exacte blender in de keuken en laat het de kok zien hoe deze te gebruiken, in plaats van de kok te laten raden welk apparaat ze moeten pakken.
4. De "Zekerheidscontrole"
Het systeem is slim genoeg om te weten wanneer het onzeker is. Het berekent een "zekerheidsscore" gebaseerd op hoe makkelijk het concept was te schrijven.
- Hoge Zekerheid: "Dit ziet er goed uit, maak het gewoon af."
- Lage Zekerheid: "Dit ziet er riskant uit. Gooi het concept weg en begin opnieuw met de nieuwe context."
Dit voorkomt dat de AI koppig vasthoudt aan een slecht idee alleen maar omdat het het eerst heeft geschreven.
5. De Resultaten: Waarom Het Belangrijk Is
Het artikel testte dit op twee enorme benchmarks (DevEval en RepoExec) met verschillende AI-modellen.
- Het Resultaat: InlineCoder sloeg bijna elke andere methode met een grote marge.
- De Winst: Het verbeterde de nauwkeurigheid van de code met bijna 30% in sommige maten vergeleken met de beste eerdere methoden.
- De Les: Door de AI de "call graph" (wie praat met wie) te tonen in plaats van alleen een lijst met vergelijkbare woorden, schrijft de AI code die daadwerkelijk werkt binnen het complexe web van een echt softwareproject.
Samenvatting
Denk aan InlineCoder als een vertaler die niet alleen woorden vertaalt, maar relaties vertaalt. Het stopt met het behandelen van code als geïsoleerde zinnen en begint het te behandelen als een gesprek. Door de nieuwe code fysiek in te bedden in de gesprekken die eromheen plaatsvinden (de aanroepers) en de gereedschappen waarop het vertrouwen (de aangeroepenen), zorgt het ervoor dat de AI code schrijft die perfect past in het bestaande software-ecosysteem.
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.