← Nieuwste papers
💬 NLP

Function-Aware Fill-in-the-Middle as Mid-Training for Coding Agent Foundation Models

Dit artikel introduceert function-aware fill-in-the-middle (FIM) mid-training, een zelfgesuperviseerde aanpak die de structurele gelijkenis tussen coding agent loops en functieaanroepen benut om de prestaties van coding agents op benchmarks zoals SWE-Bench aanzienlijk te verbeteren, terwijl tegelijkertijd de algemene programme- en tool-gebruikscapaciteiten worden behouden die vaak worden aangetast door standaard post-training.

Oorspronkelijke auteurs: Yubo Wang, Jiarong Liang, Yuxuan Zhang, Xuye Liu, Cong Wei, Yuyu Zhang, Ping Nie, Wenhu Chen

Gepubliceerd 2026-07-15
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Yubo Wang, Jiarong Liang, Yuxuan Zhang, Xuye Liu, Cong Wei, Yuyu Zhang, Ping Nie, Wenhu Chen

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 robot leert om bugs te repareren in een enorme, rommelige bibliotheek vol code. Normaal gesproken leren we deze robots door ze boeken van begin tot eind te laten lezen, van links naar rechts. Maar er is een probleem: wanneer een robot daadwerkelijk een bug gaat repareren, leest hij niet alleen vooruit. Hij zet een stap, kijkt naar wat er is gebeurd (misschien gaf een tool een foutmelding), en besluit dan wat de volgende stap is. Het is een lus: Actie → Observatie → Volgende Stap.

De auteurs van dit artikel merkten iets cools op: deze robotlus lijkt exact op een functieaanroep in normale computercode:

  • De Actie van de Robot is als een functie die een andere functie aanroept.
  • De Observatie van de Robot is als de waarde die die functie teruggeeft.
  • De Volgende Stap van de Robot is als de rest van de code die die waarde gebruikt.

Het grote idee? In plaats van de code alleen maar van voren naar achteren te lezen, hebben de auteurs hun robotmodellen geleerd om een "invul-de-blanks"-spel te spelen met deze functieaanroepen. Ze noemen dit Function-Aware Fill-in-the-Middle (FIM) Mid-Training.

Het Spel: "Raad het ontbrekende stukje"

Stel je voor dat je een verhaal hebt waarin een personage (de "aanroeper") een vriend (de "aangeroepene") vraagt om een taak uit te voilen, maar het eigenlijke werk van de vriend is verborgen. De robot moet raden wat de vriend heeft gedaan en uitleggen waarom hij dat deed, gebaseerd op alleen de context vóór en na.

Om dit spel effectief te maken, kozen de auteurs niet zomaar willekeurige woorden om te verbergen. Ze gebruikten een speciale kaart van de code (een "Program Dependency Graph") om de perfecte puzzels te vinden. Ze zochten naar functies die:

  1. Complex genoeg waren om een goede uitdaging te vormen (niet te makkelijk, niet onmogelijk).
  2. Voorspelbaar genoeg waren zodat de robot ze daadwerkelijk kon begrijpen op basis van de omliggende aanwijzingen.

Ze lieten de robot ook een "redeneringsnotitie" (Chain-of-Thought) schrijven voordat hij de ontbrekende code schreef, waardoor de robot gedwongen wordt eerst na te denken voordat hij handelt, precies zoals een menselijke programmeur dat zou doen.

De Resultaten: Werkt het?

De auteurs testten dit op drie verschillende robotbreinen (modellen): twee uit de Qwen2.5-Coder familie (7 miljard en 14 miljard parameters) en één uit de nieuwere Qwen3 familie (8 miljard parameters). Ze trainden deze robots op een enorme dataset van 2,6 miljard tokens (woorden en symbolen) afkomstig uit 968 echte Python-code-repositories.

Dit is wat ze vonden:

  • Beter in het repareren van bugs: Wanneer ze werden getest op een beroemde benchmark genaamd SWE-Bench-Verified (die echte softwareproblemen simuleert), verbeterden de robots aanzienlijk.
    • Het 7B-model verbeterde met +2,8%.
    • Het 14B-model verbeterde met +3,0%.
    • Het 8B-model verbeterde met +3,2%.
  • Nog beter op eenvoudigere taken: Op een lichtere versie van de test (SWE-Bench-Lite) waren de winstcijfers zelfs hoger, waarbij het 8B-model met +5,4% sprong.
  • Het werkt overal: Deze verbeteringen vonden plaats, zelfs wanneer de robots later met andere methoden werden getraind. Dit suggereert dat de "fill-in-the-middle"-training hen een solide fundament gaf dat bleef staan, ongeacht hoe ze later werden bijgeschaafd.

De Verrassing: Het heeft andere vaardigheden niet geschaad

Normaal gesproken, wanneer je een robot traint om een super-specialist te zijn (zoals een bug-fixer agent), vergeet hij hoe hij andere dingen moet doen, zoals het schrijven van eenvoudige code of het gebruiken van tools. De auteurs waren bang dat dit ook zou gebeuren.

Maar de "mid-training" redde de andere vaardigheden van de robots!

  • Zonder deze extra training werden de robots slechter in het zelfstandig schrijven van code (ze daalden op benchmarks zoals LiveCodeBench).
  • Met de FIM-training bleven ze niet alleen gelijk, maar werden ze zelfs beter (+11,1% op LiveCodeBench).
  • Hoewel de trainingsdata alleen uit Python-code bestond, werden de robots ook beter in het gebruiken van tools in totaal andere contexten (zoals τ-bench en BFCL), wat suggereert dat ze een algemene "hoe denk ik over oorzaak en gevolg"-vaardigheid hebben geleerd die overdraagbaar is naar andere taken.

Wat ze expliciet uitsloten

De auteurs waren voorzichtig om te benoemen wat deze methode niet is:

  • Het is niet alleen het kopiëren van een slimme leraar: Ze testten of de robot simpelweg de antwoorden aan het memoriseren was van een krachtige AI (Gemini-3-Flash) die hielp bij het genereren van de trainingsdata. Ze ontdekten dat zelfs wanneer de robot zijn eigen redeneringsnotities genereerde, het nog steeds verbeterde. Dus de magie zit niet in het "kopiëren van de leraar", maar in de structuur van het spel zelf.
  • Het is geen wondermiddel voor alles: De methode werkt het best wanneer de code modulair is (opgedeeld in nette functies). Als de code een gigantisch, rommelig script is waar alles door elkaar loopt, werkt de methode minder goed omdat de robot dan geen duidelijke "functieaanroep"-puzzels kan vinden om op te lossen.
  • Het is nog niet bewezen voor alle talen: De trainingsdata was alleen Python. Hoewel de robots beter werden in andere taken, geven de auteurs toe dat ze nog niet hebben bewezen dat dit ook werkt voor Java, C++ of Rust.

Hoe zeker zijn ze?

De auteurs zijn vrij zeker van hun cijfers omdat ze de tests drie keer hebben uitgevoerd met verschillende willekeurige seeds om er zeker van te zijn dat de resultaten niet op toeval berustten. Ze maten de verbeteringen nauwkeurig (bijv. +2,8%, +3,0%) en toonden aan dat de robots consequent meer problemen oplosten en minder fouten maakten wanneer ze vastliepen.

Ze suggereren dat deze "mid-training" fase een cruciale ontbrekende schakel is. Het is alsoast het geven van een specifiek type fitnessprogramma aan de robot voordat hij de echte wereld in wordt gestuurd, om ervoor te zorgen dat hij de juiste spieren heeft om de complexe lus van "handelen, observeren en doorgaan" aan te kunnen zonder zijn andere vaardigheden te verliezen.

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.

Probeer Digest →