Spätestens mit ChatGPT ist die generative KI in aller Munde. Aber wie funktioniert das Ganze und was hat Microsofts GitHub Copilot damit zu tun? In diesem Blogbeitrag zeige ich den Einsatz von GitHub Copilot in einem C#-Projekt mit meinen persönlichen Erfahrungswerten dazu.
Was ist der GitHub Copilot?
Bevor wir uns den GitHub Copilot anschauen, möchte ich noch einen kurzen Einschub zu ChatGPT von OpenAI machen. ChatGPT verwendet einfach gesagt ein KI-Modell, welches auf einer Vielzahl von unterschiedlichen Texten und Konversationen, welche von echten Menschen stammen, trainiert wurde. Wenn man nun eine Frage stellt, kann ChatGPT auf Basis von Wahrscheinlichkeiten den entsprechenden Output formulieren. Wie das Ganze genau funktioniert, kann man aber auch auf der Hilfeseite von OpenAI nachlesen
.
Im Entwickleralltag ist es nicht unüblich, dass durch Pair-Programming Code gemeinsam geschrieben wird. Dabei befindet sich ein Kollege an der Tastatur und programmiert, während der andere zuschaut und mitdenkt. Das Ganze läuft dann im Wechsel. Dadurch wird effizient Code erstellt, da man gemeinsam programmiert.
GitHub beschreibt seinen Copilot als KI-Pair-Programmer. Also einer KI-gestützten Funktionseinheit, welche einem beim Entwickeln Hinweise und Vorschläge liefert - nur eben direkt in der gewohnten Entwicklungsumgebung.
Getting Started: GitHub-Copilot-Preis
Um den GitHub Copilot nutzen zu können, muss man in seinem GitHub-Account die Funktionalität aktivieren. Das kostet 10$/Monat pro User. Es existiert aber auch eine Enterprise-Variante, welche mit einem Lizenzmanagement daherkommt. Der erste Monat kann als kostenloser Probemonat verwendet werden.
GitHub Copilot unterstützt eine Reihe von Entwicklungsumgebungen, hierzu gehören u.a. JetBrains, Visual Studio und VS Code. Um es mit Visual Studio nutzen zu können, benötigt man die Version 2022 (mindestens Version 17.4.4). Die Nutzung erfolgt jeweils über eine Visual-Studio-Erweiterung (Extension) und der Authentifizierung darüber. Über die GitHub Docs
erhält man eine Step-by-Step-Anleitung.
Github Copilot Supported Languages
Folgende Sprachen werden unterstützt (Stand 29.06.2023):
- Python
- JavaScript
- TypeScript
- Ruby
- Go
- C#
- C++
Wie arbeitet der GitHub Copilot?
Der Copilot kann durch unterschiedliche Möglichkeiten verwendet bzw. angestoßen werden. Dazu gehört u.a. die Implementierung durch den Methodenkopf. Durch STRG
+ ALT
+ ^
kann der Inline-Vorschlag getriggert werden. Mithilfe von ALT
+ ,
(vorheriger Vorschlag) oder ALT
+ -
(nächster Vorschlag) kann durch die Implementierungsvorschläge navigiert werden.
Implementierung durch Methodenkopf
Wenn man lediglich einen Methodenkopf notiert, liefert der Copilot eine Möglichkeit der Implementierung. Den Vorschlag kann man mittels TAB
annehmen oder (falls vorhanden) durch die Implementierungsvorschläge navigieren.
Der Copilot liefert aber auch Vorschläge für Implementierungen für komplette Methoden.
Implementierung durch Kommentare
Mithilfe von Kommentaren können auch komplette Methoden generiert werden. Auch hier bedient sich der Copilot aus dem Kontext der Klasse bzw. dem Projekt.
Sicherlich kann man hier über die Art der Implementierung diskutieren, doch erhält man einen guten Vorschlag für eine mögliche Lösung.
Wenn man im Kommentar einige Hinweise bzgl. der Implementierung mitgibt, wird auch der Vorschlag angepasst.
Ein guter Anwendungsfall stellt auch die Erstellung von regulären Ausdrücken dar. Auch diese kann man sich generieren lassen.
Fragen stellen via Kommentare
Eine interessante Funktion bietet Copilot durch das Fragen stellen via Kommentar. Der Kommentar muss lediglich mit einem “Q” für Question beginnen. Der Copilot antwortet dann auch wiederum mit einem Kommentar (mit einem vorgestellten “A” für Answer). Hierzu habe ich mich auf die oben genannten Beispiele bezogen und Copilot gefragt, was der Unterschied der beiden Methoden-Implementierungen ist.
Man kann hierdurch auch (technische) Fragen zu Funktionalitäten stellen.
Wenn man diese Frage noch weiter spezifiziert, erhält man einen Link zu StackOverflow, wo das ganze beschrieben wird.
Aber auch ganz allgemeine technische Fragen kann man hier stellen.
Autocomplete in GitHub Copilot
Eine sehr große Arbeitserleichterung ergibt sich in der Autocompletion durch den Copilot. Im folgenden Beispiel habe ich eine weitere Query-Klasse in meiner To-do-App erstellt (bekannt aus meiner Blog-Serie zu WebAPIs mit Azure Functions
). Und hier erhalte ich direkt Vorschläge für die Attributierung der Parameter. Hierdurch hilft der Copilot auch beim Refactoring und beschleunigt diesen.
GitHub-Copilot-Test - ein Fazit
Die Verwendung von GitHub Copilot ist sehr natürlich und erinnert mich tatsächlich an eine Art Pair-Programming. Durch die vielseitige Möglichkeit des Austauschs erhält man rasch Implementierungsvorschläge. Sicherlich ist der generierte Code nicht immer der Beste, doch beschleunigt der Copilot die Produktivität. Durch den Einsatz von Copilot kann man die Komplexität der Aufgaben reduzieren und erhält direkt Vorschläge, wie diese umgesetzt werden können. Der Medienbruch und der Einsatz von Suchmaschinen wird hierdurch auf das Minimum reduziert.
In meinem Test konnte ich allerdings nicht ganz auf ChatGPT verzichten, so konnte ich mit GitHub Copilot keine größeren bzw. komplexeren Implementierungen umsetzen bzw. vorgeschlagen bekommen (wie z.B. dem Verbinden mit einer Datenbank und dem Abruf von Daten). Nichtsdestotrotz beschleunigt es den Entwicklungsprozess enorm und als Entwickler behält man dennoch die Kontrolle. In Kombination mit Visual Studio 2022 und den auch mittlerweile KI-gestützten IntelliCode erhält man ein sehr starkes Tool, welches für eine große Produktivitätssteigerung beim Entwickler führt.
Der GitHub Copilot reiht sich damit in die Familie weiterer Kopiloten von Microsoft ein. Und somit bringt der Name für mich den Zweck des Ganzen direkt auf den Punkt. Als Verwender erhält man einen umfangreichen und leistungsstarken Assistenten oder eben einen Kopiloten, welcher mich bei der täglichen Arbeit unterstützt und die Produktivität steigert.
Es ist auch spannend zu sehen, dass die Entwicklung an dieser Stelle weitergeht und GitHub mit dem Copilot X
bereits die nächste Ausbaustufe in den Startlöchern hat. Unter anderem soll dieses auf GPT 4 basieren und damit noch umfangreichere Vorschläge liefern. Gleichzeitig kann GitHub Copilot X für Code-Optimierungen und Bugfixes verwendet werden. Es bleibt also spannend zu sehen, wie sich das Ganze weiterentwickelt.
Auf der anderen Seite existieren vermehrt Klagen, die GitHub Copilot eine Verletzung von Copyright und dem Intellectual Property (IP)
vorwerfen. Dabei soll der GitHub Copilot und das darunter liegende Modell, welches auf Basis auch von öffentlich zugänglichem Code trainiert wurde, ähnlichen (fast identischen) Code als Vorschlag liefern, ohne entsprechende Verweise auf den ursprünglichen Ersteller zu liefern. Allerdings konnte in keinem bisherigen Fall nachgewiesen werden, dass diese Codegenerierung auf eine bestimmte Quelle zurückzuführen sei. Es bleibt also auch hier spannend zu beobachten, wie sich diese Thematik weiterentwickelt. Dabei bietet GitHub Copilot auch die Möglichkeit vorschläge für Code, welcher öffentlich existiert, zu blockieren (also nicht als Vorschlag für die Codegenerierung verwendet werden soll) und das Training von GitHub Copilot mithilfe des eigenen entwickelten Codes zu unterbinden.
Und falls man nach diesem Beitrag direkt selbst mit GitHub Copilot starten möchte, kann direkt mit einem kostenlosen Probemonat beginnen und sich selbst einen Eindruck davon machen. Happy Coding!