Evaluating and Achieving Controllable Code Completion in Code LLM
Dieses Paper führt den Controllable Code Completion Benchmark (C3-Bench) ein, um das Fehlen der Evaluierung der Befolgung von Anweisungen bei Code-LLMs zu adressieren, deckt signifikante Leistungsunterschiede zwischen Open-Source- und proprietären Modellen auf und schlägt eine Datensynthese-Pipeline vor, die es einem feinabgestimmten Modell ermöglicht, State-of-the-Art-Ergebnisse auf dem neuen Benchmark zu erzielen.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich vor, ich bin ein Chefkoch (die KI), der in einer geschäftigen Küche arbeitet. Lange Zeit war die Art und Weise, wie wir diese Köche testeten, simpel: Wir gaben ihnen ein halb fertiges Gericht (den Code vor dem fehlenden Teil) und ein halb fertiges Gericht danach (den Code nach dem fehlenden Teil) und baten sie, die Mitte zu füllen. Wenn das fertige Gericht gut schmeckte (die Unit-Tests bestand), bekam der Koch einen goldenen Stern.
Das Problem: Das „Rezept“ fehlte
Die Autoren dieser Arbeit argumentieren, dass diese alte Art des Testens fehlerhaft ist. In der realen Welt sagt ein Küchenchef nicht einfach: „Füll die Mitte aus.“ Er sagt: „Füll die Mitte aus, aber verwende nur vegetarische Zutaten“, oder „Füll die Mitte aus, aber mache es genau drei Zeilen lang“, oder „Füll die Mitte aus, aber verwende eine bestimmte Art von Messer.“
Aktuelle KI-Modelle sind gut darin, dafür zu sorgen, dass das Gericht gut schmeckt, aber sie ignorieren oft die spezifischen Anweisungen dazu, wie es zubereitet werden soll. Sie verwenden vielleicht Fleisch, obwohl Sie Gemüse verlangt haben, oder schreiben einen ganzen Absatz, obwohl Sie nach einer einzigen Zeile gefragt haben. Die alten Tests haben dies nicht erfasst, weil sie nur prüften, ob das Essen genießbar war, und nicht, ob der Koch die Bestellung befolgt hat.
Die Lösung: C3-Bench (Der „Anweisungs-Folge“-Test)
Um dies zu beheben, entwickelte das Team einen neuen Test namens C3-Bench (Controllable Code Completion Benchmark). Betrachten Sie dies als einen neuen, viel strengeren Kochwettbewerb.
Anstatt nur nach einem fehlenden Stück Code zu fragen, kommt bei jedem Test in C3-Bench eine spezifische, feingliedrige Anweisung mit. Sie unterteilen diese Anweisungen in zwei Hauptkategorien:
- Die „Wie-man-es-macht“-Anweisungen (Implementation-Control):
- Analogie: „Baue eine Brücke, aber du musst ein Hängebrücken-Design verwenden, kein Balken-Design.“
- Die KI muss Code schreiben, der funktioniert und einem spezifischen Stil, Algorithmus oder einer Struktur folgt. Zum Beispiel: „Sortiere diese Liste unter Verwendung einer spezifischen Sortierungsmethode“ oder „Behandle Fehler auf diese spezifische Weise.“
- Die „Größen“-Anweisungen (Scale-Control):
- Analogie: „Schreibe einen Satz, der exakt 10 Wörter lang ist,“ oder „Schreibe einen Absatz, der exakt 3 Sätze umfasst.“
- Die KI muss Code generieren, der eine strikte Größenbeschränkung einhält, wie zum Beispiel exakt 5 Codezeilen oder einen bestimmten Logikblock, nicht mehr und nicht weniger.
Was sie herausfanden
Das Team testete über 40 verschiedene KI-Modelle (sowohl kostenlose Open-Source-Modelle als auch teure, geschlossene Modelle) auf diesem neuen Test. Hier ist, was sie entdeckten:
- Die „übermütigen“ Open-Source-Modelle: In den alten Tests schnitten viele kostenlose Open-Source-KI-Modelle genauso gut ab wie die teuren Top-Modelle. Auf diesem neuen C3-Bench jedoch hatten sie erhebliche Schwierigkeiten. Es stellte sich heraus, dass sie die alten Tests einfach „auswendig gelernt“ hatten, aber nicht wirklich wussten, wie man komplexe Anweisungen befolgt. Sie waren wie Schüler, die den Lösungsschlüssel auswendig gelernt hatten, aber kein neues Problem mit einer kleinen Wendung lösen konnten.
- Die Lücke: Es gibt eine riesige Kluft zwischen Modellen, die einfach nur „Code zum Laufen bringen“ können, und Modellen, die „Code exakt so zum Laufen bringen, wie man es verlangt hat“. Selbst einige der klügstensten, teuersten Modelle hatten Probleme mit den „Größen“-Anweisungen (wie z. B. exakt die richtige Anzahl an Zeilen zu schreiben).
- Die Lösung: Die Autoren haben nicht nur das Problem aufgezeigt; sie haben eine Lösung gebaut. Sie entwickelten eine Pipeline, um automatisch tausende neue Trainingsbeispiele zu generieren, bei denen eine KI Code schreibt und eine spezifische Anweisung befolgt. Sie nutzten diese Daten, um eine neue Version ihres Modells zu trainieren, genannt Qwen2.5-Coder-C3.
- Das Ergebnis: Dieses neue Modell wurde am besten darin, Anweisungen bei der Code-Vervollständigung zu befolgen, und schlug fast alle anderen im neuen Test, während es gleichzeitig gut in den alten Tests blieb.
Das Fazit
Diese Arbeit führt eine neue Art und Weise ein, um KI-Programmierfähigkeiten zu messen, die für den realen Einsatz tatsächlich relevant ist: Kann die KI zuhören?
Sie fanden heraus, dass viele aktuelle KI-Modelle wie talentierte Musiker sind, die zwar die richtigen Noten spielen, aber die Tempowechsel des Dirigenten ignorieren. Durch die Schaffung dieses neuen Benchmarks und einer Methode, um Modelle zu trainieren, besser zuzuhören, helfen die Autoren Entwicklern dabei, KI-Tools zu bauen, die nicht nur Code schreiben, sondern den richtigen Code gemäß den spezifischen, detaillierten Bedürfnissen des Nutzers. Sie haben all ihre Daten und Modelle zur Verfügung gestellt, damit andere diese nutzen und verbessern können.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.