Ein KI-basierter Programmier-Assistent liefert simultan Vorschläge zur Vervollständigung von Codes.
Copilot ist ein Assistent für die Codeentwicklung. Er ist als Erweiterung direkt in gängige Codeeditoren wie Visual Studio, Neovim, VS Code und Tools aus der JetBrains-Suite integrierbar. Copilot ist somit ein Tool, das sich vor allem an professionelle Programmierer richtet und diese bei der Softwareentwicklung unterstützt.
Die zentrale Funktion von Copilot ist die automatische Vervollständigung von Codes: Sobald der Entwickler etwas in den Texteditor eingibt, schlägt Copilot die nächste Codezeile vor. Durch das Drücken der TAB-Taste kann die Codezeile bestätigt werden. Copilot kann aber auch genutzt werden, um vollständige Codedateien zu generieren: Ausgehend von einem Kommentar oder dem Methodenkopf kann Copilot die gesamte Implementierung der Funktion ableiten und vervollständigen.
Wir bei Reply betrachten Copilot als wirksame Unterstützung für Entwickler. Assistenten wie dieser werden in naher Zukunft zum zentralen Element für Entwicklungstools in Unternehmen werden.
Aus diesem Grund haben wir begonnen, Copilot bei unserer täglichen Entwicklungstätigkeit einzusetzen. So können wir seine Anwendungsfälle und Verwendungsmöglichkeiten analysieren. Wir haben Copilot beispielsweise verwendet, um das Schreiben sich wiederholender Codemodelle zu automatisieren. Der Vorteil: Wir können uns dadurch ausschließlich auf den Code konzentrieren, der für eine Lösung tatsächlich Wert liefert. Auf diese Weise können ausgehend von der Struktur einer Datenbank Zugangsklassen erstellt, über REST-API-Dienste bereitgestellt oder automatisch Testeinheiten für den geschriebenen Code generiert werden.
Dank der dabei gesammelten Erfahrung, können wir Kunden bei der Installation und Konfiguration des Tools unterstützen. Zudem können wir ihnen zeigen, wie sie dieses wirksam für ihre Anwendungsfälle einsetzen. Derzeit läuft ein Pilotprojekt mit einem Kunden des Fertigungssektors, der zahlreiche Entwicklungsteams in verschiedenen Projekten einsetzt: Wir haben für die Mitglieder der verschiedenen Teams einen Zugang zu Copilot bereitgestellt und sie in dessen Nutzung eingeführt. Außerdem haben wir die Auswirkungen bewertet, die die Verwendung von Codex während der normalen Entwicklungstätigkeiten in einem Umfeld hat, in dem die Qualität des Codes und die Effizienz der Entwicklungsprozesse strikt überwacht werden.
Von Copilot generierter Code entspricht dem Stil und den Konventionen des Projekts, in dem er verwendet wird. Außerdem behält der Entwickler stets die volle Kontrolle über den generierten Code: So ist es jederzeit möglich, die angebotenen Vorschläge anzuzeigen und aus mehreren Optionen die passendste zu wählen. Dabei bleibt der generierte Code in jedem Fall Eigentum des Entwicklers.
Die Funktion von Copilot basiert auf Codex. Dabei handelt es sich um ein Modell zur Codegenerierung, das von OpenAI, einem Unternehmen zur Erforschung von Künstlicher Intelligenz, herausgegebene wurde. Codex wurde ausgehend von GPT-3, einem der bedeutendsten auf Deep Learning basierenden Sprachverarbeitungsmodelle, entwickelt. Während GPT-3 ein Allzweck-Sprachmodell ist, wurde Codex gezielt für den Einsatz mit Code trainiert und abgestimmt.
In letzter Zeit haben alle großen Akteure im Bereich der Künstlichen Intelligenz Modelle zur Codegenerierung veröffentlicht oder dies angekündigt. Daher ist es aus unserer Sicht entscheidend, über die notwendigen Instrumente zu verfügen, um die Leistungsfähigkeit eines Modells bewerten zu können. Nach Auswertung der in der Fachliteratur beschriebenen Ansätze haben wir ein Framework entwickelt, das eine formale Bewertung der Exaktheit dieser Modelle bei Anwendung auf verschiedene Programmiersprachen und Fällen erlaubt.
Bei diesen Analysen haben wir festgestellt, dass Codex hervorragende Resultate liefert – auch im Vergleich mit umfangreicheren Modellen. Dies zeigt seine gute Optimierung in Hinblick auf die meistverwendeten Programmiersprachen. Wir haben außerdem einen Ansatz entwickelt, der es ermöglicht, die Codegenerierung mit Bewertungskriterien zu kombinieren, die den generierten Code auf seine Korrektheit prüfen. So kann die Qualität der erzielten Ergebnisse sichergestellt werden.