Zurück

Github Copilot - Ein Erfahrungsbericht

von Felix Rolshausen

Seit einiger Zeit gibt es KI-basierte Assistenten wie Github Copilot, die uns Arbeit abnehmen und beim Programmieren helfen sollen. Doch wie gut funktionieren solche Tools bereits und wo liegen ihre Grenzen? Genau dieser Frage sind wir kürzlich in einem unserer Coding Dojos bei andrena in München nachgegangen. In diesem Blogbeitrag möchte ich von meinen Erfahrungen berichten.

Kommentare werden zu Code!?

Grundsätzlich kann Github Copilot auf drei verschiedene Arten genutzt werden:
Bei Nummer eins schreibt man einen Kommentar in den Code und gibt Copilot damit eine Anweisung, wie “Schreibe eine Funktion, die alle Umlaute durch die entsprechenden konvertierten Umlaute ersetzt”. Dann liefert Github Copilot beim Sprung in die nächste Zeile einen Code Vorschlag, der die Aufgabe erfüllt. So lautet zumindest die Theorie.

Häufig schlägt Github Copilot beim Sprung in die nächste Zeile jedoch vor, den bestehenden Kommentar mit einem weiteren zu ergänzen und mit zusätzlichen Anforderungen zu versehen. Dieses Verhalten tritt häufig auf, wenn man mit einem Kommentar in einer völlig leeren Datei beginnt. Hier kann es helfen, die ersten Zeichen des gewünschten Codes zu schreiben und Copilot so in die richtige Richtung zu lenken.

Je mehr Kontext Github Copilot zur Verfügung steht - in Form von bereits vorhandenem Code in der Datei oder geöffneten Tabs in der IDE- desto besser sind die Vorschläge. Github Copilot verwendet diesen Kontext, um den Prompt zu erstellen, der an das Sprachmodell gesendet wird.

Vielleicht ist man mit einem Code Vorschlag nicht zufrieden. Oder man hat den Wunsch, das penetrante Caching zu umgehen, das Copilot auch nach mehrmaligem Ändern des ursprünglichen Kommentars anwendet. Dann kann man die zweite Interaktionsmöglichkeit des Tools nutzen.

Vorschläge ohne Unterbrechung?

Dazu klickt man in der IDE auf das Copilot-Symbol in der Seitenleiste und öffnet damit das Github Copilot Panel. Hier sieht man verschiedene Code Vorschläge und kann denjenigen auswählen, der am besten passt.

Vorausgesetzt natürlich, dass es etwas zum Auswählen gibt. Denn leider kommt es bei der Nutzung des Panels noch sehr häufig vor, dass gar keine Vorschläge geladen werden. Das kann daran liegen, dass die Voraussetzungen noch nicht erfüllt sind, um einen sinnvollen Prompt zu senden. Genau wie bei der Verwendung von Kommentaren sendet Copilot nur dann einen Prompt an das Language Model, wenn ein interner Schwellwert überschritten wird. Die Berechnung des Schwellwertes hängt von mehreren Faktoren ab, z.B. der Position des Cursors, der Programmiersprache und dem Kontext. Vor allem das neu-Positionieren des Cursors hilft häufig, falls keine Vorschläge im Panel angezeigt werden.

Die dritte Möglichkeit, mit Copilot zu arbeiten, funktioniert meiner Meinung nach am besten. Dabei macht Github Copilot während des Programmierens selbst Vorschläge, was an der aktuellen Stelle passen könnte. Das ist einer Autovervollständigung sehr ähnlich, wie sie schon früher von einigen IDEs zur Verfügung gestellt wurde. Diese Art der Interaktion funktioniert wahrscheinlich am besten, da oft schon Code vorhanden ist, der als Kontext verwendet werden kann.

In der Regel dauert es einige Zeit, die Vorschläge zu laden. Da sie nicht per se erwartet werden, kann ihr plötzliches Erscheinen störend wirken. Das ist dann der Fall, wenn sich der/die Entwickler*in bereits auf die nächsten Code-Zeilen konzentriert und dann durch die aufpoppenden Vorschläge aus den Gedanken gerissen wird. Manche Anwender*innen empfinden diese Art der Unterbrechung eher als lästig denn als hilfreich.

Kleine Einschränkungen

Im Moment weist das Tool noch einige Ungenauigkeiten auf und die Bedienung erfordert manchmal etwas Geduld - es wird jedoch kontinuierlich verbessert. Copilot überprüft in regelmäßigen Abständen, welcher Code von den Benutzern akzeptiert wurde und sendet einen “Snapshot” des Codes zusammen mit dem umgebenden Code, um das Modell weiter zu trainieren.

Außerdem ist es mit Copilot bisher nur möglich, Code zu generieren, aber nicht zu refaktorieren. In der Konsequenz ist es unvermeidlich, den bestehenden Code zu löschen, wenn er die Anforderungen nicht erfüllt. Es ist nicht möglich, die Struktur nachträglich zu ändern, da hilft nur, neuen Code zu generieren.

Ich persönlich verwende Github Copilot sehr gerne. Es hilft mir, mich leichter an die korrekte Syntax des Codes zu halten und liefert oft schon sinnvolle Code Ergänzungen, die mich insgesamt produktiver und effizienter machen. Allerdings sollte man sich bei der Nutzung immer der Grenzen bewusst sein und das Tool für den vorgesehenen Einsatzzweck verwenden.

Grundsätzlich sollte, wer Copilot verwendet, darauf achten, möglichst klare Anweisungen zu geben und möglichst kurze Vorschläge anzustreben. Je ungenauer die Anweisungen sind und je mehr Code auf einmal generiert werden soll, desto eher stößt Github Copilot an seine Grenzen.

 

Auch zum Thema KI bei uns ...

Wie eine eigene gründliche Einarbeitung. Nur schneller.

Ein Tag , ein umfassender Einblick in die KI in der professionellen Softwareentwicklung, eigene Erfahrung mit Prompt Hacking, RAG und Co. – das ist das KI Basics Training für professionelle Software Engineers!

Training KI Basics für SW Engineers

Mehr über die Technologien

Künstliche Intelligenz und Agile Software Engineering - wie wird KI die Art verändern, wie Software entwickelt wird? Und wie wird sie die Software selbst verändern?
Mehr dazu auf unseren Technologie-Seiten ...

KI, Agile Software Engineering, Python Zurück