Control Models for In-IDE Code Completion
Dieses Paper führt Kontrollmodelle, spezifisch ML-Klassifikatoren, ein und evaluiert diese zur Optimierung der LLM-gestützten Code-Vervollständigung in JetBrains-IDEs durch das Auslösen von Inferenz und das Filtern von Vorschlägen, wobei eine verbesserte Effizienz und Qualität durch Offline-Analysen und eine produktive A/B-Studie nachgewiesen wird.
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, Sie sind ein Chefkoch (der Entwickler), der in einer geschäftigen Küche (der IDE) arbeitet. Sie haben einen superintelligenten Sous-Chef (die KI), der ständig Rezeptideen und Zutatenvorschläge ruft, während Sie Gemüse schneiden.
Manchmal ist der Sous-Chef brillant und spart Ihnen Zeit. Aber oft ist der Sous-Chef etwas zu eifrig:
- Er schlägt ein Dessert vor, während Sie eine Suppe zubereiten (schlechtes Timing).
- Er schlägt eine Zutat vor, die Sie bereits haben (redundant).
- Er schlägt etwas vor, das schrecklich schmeckt (schlechter Code).
Dieses ständige Rufen ist ablenkend. Es unterbricht Ihren „Flow“, verschwendet die Energie der Küche (Rechenleistung) und führt dazu, dass Sie sich eher genervt als unterstützt fühlen.
Das Problem:
Das Team von JetBrains (die Autoren dieser Arbeit) stellte fest, dass ihre KI Vorschläge generierte, die Entwickler etwa 70 % der Zeit ignorierten oder ablehnten. Sie verschwendeten viel Geld und Energie für Vorschläge, die niemand wollte.
Die Lösung: „Control Models“ (Der smarte Türsteher)
Anstatt nur die KI besser darin zu machen, Rezepte zu erraten, baute das Team eine neue Intelligenzebene namens Control Models. Denken Sie an diese als einen smarten Türsteher, der an der Tür zwischen der KI und dem Koch steht.
Dieser Türsteher hat zwei Aufgaben:
- Der Trigger (Das „Warte“-Signal): Bevor die KI überhaupt anfängt, einen Vorschlag zu kochen, prüft der Türsteher die Stimmung des Kochs. Tippt der Koch schnell? Ist er mitten in einem Satz? Wenn das Timing nicht passt, sagt der Türsteher: „Nein, stör die KI noch nicht.“
- Der Filter (Der „Müll“-Eimer): Wenn die KI tatsächlich einen Vorschlag zubereitet, probiert der Türsteher ihn zuerst. Wenn er seltsam aussieht oder nicht zum aktuellen Gericht passt, wirft der Türsteher ihn in den Müll, bevor der Koch ihn überhaupt sieht.
Wie sie es getestet haben
Das Team führte Experimente mit echten Daten von tausenden Entwicklern durch, die JetBrains-Software (wie IntelliJ IDEA) nutzen. Sie testeten zwei Arten von Türstehern:
- Der „Boosting“-Türsteher: Ein schneller, leichtgewichtiger Modellsatz, der einfache Statistiken betrachtet (wie Tippgeschwindigkeit und Cursorposition). Es ist wie ein Türsteher, der nur kurz Ihren Ausweis prüft und schnell entscheidet.
- Der „Transformer“-Türsteher: Ein schwerer, komplexer Modellsatz, der den eigentlichen Code liest und tiefen Kontext versteht. Es ist wie ein Türsteher, der das gesamte Rezeptbuch liest, bevor er Sie hereinlässt.
Die Ergebnisse
- Geld sparen: Durch den Einsatz des „Boosting“-Türstehers verhinderten sie etwa 20 % der unnötigen KI-Anfragen. Dies spart viel Rechenleistung (Inferenzkosten).
- Bessere Qualität: Da die schlechten Vorschläge herausgefiltert wurden, waren die Vorschläge, die tatsächlich die Entwickler erreichten, viel besser. Entwickler akzeptierten sie häufiger und lehnten sie seltener ab.
- Der Kompromiss: Interessanterweise sank die Gesamtzahl der Wörter, die die Entwickler tippten, nicht wesentlich. Das liegt daran, dass Entwickler, wenn sie nicht durch schlechte Vorschläge abgelenkt werden, stattdessen mehr Code selbst tippen, was neue Möglichkeiten für die KI schafft, zu helfen.
Der Haken (Warum nicht den schicken Türsteher verwenden?)
Der „Transformer“-Türsteher (der den Code liest) war zwar sehr gut darin zu filtern, aber er war zu langsam und erforderte zu viel Rechenleistung, um auf allen Laptops der Nutzer zu laufen. Zudem gab es Datenschutzbedenken, da er den eigentlichen Code lesen musste, um Entscheidungen zu treffen. Daher entschied sich das Team vorerst für den schnelleren, leichteren „Boosting“-Türsteher.
Das große Ganze
Das Papier kommt zu dem Schluss, dass wir, um KI beim Programmieren hilfreich zu machen, nicht nur die KI besser darin machen können, Code zu schreiben. Wir müssen auch smarte Gatekeeper bauen, die entscheiden, wann und wie dieser Code angezeigt wird. Dies stellt sicher, dass die KI den Flow des Entwicklers unterstützt, anstatt ihn zu unterbrechen.
Kurz gesagt: Sie haben einen smarten Filter gebaut, der verhindert, dass die KI die Entwickler mit schlechten Ideen belästigt, was Geld spart und das Programmiererlebnis reibungsloser macht.
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.