R-Programmierung mit KI: GitHub Copilot in RStudio

GitHub Copilot Logo; Quelle: github.com, Pankaj Bhowmik, pjbk

Seit 2021 gibt es GitHub Copilot: KI-gestützte Programmier-Hilfe für Entwickler. Hinter dem Dienst stehen GitHub selbst sowie OpenAI und Microsoft. Seit Herbst 2023 wird GitHub Copilot von der dominierenden Entwicklungsumgebung für R, RStudio, unterstützt. GitHub Copilot in RStudio ist einsatzbereit!

GitHub Copilot in RStudio: Voraussetzungen

Voraussetzungen dafür, GitHub Copilot in RStudio zu nutzen:

  • Der Nutzer muss über ein GitHub-Konto verfügen. Ein kostenloser Zugang genügt nicht: Auch ein Abo für GitHub Copilot ist erforderlich, sei es als individueller Nutzer oder als Firmenkunde (Copilot for Business).
  • Die RStudio-Version darf nicht älter als 2023.09.0 sein. Regelmäßige Updates sind ohnehin empfehlenswert, erfordern jedoch manchmal Abstimmungen mit der IT.
  • Um GitHub Copilot zu nutzen, benötigt RStudio Internetzugang, um Anfragen an GitHubs Copilot-Schnittstelle (API) zu schicken und von dort Code-Vorschläge abzurufen.

GitHub Copilot in RStudio: Einrichtung

Unter Tools – Global Options – Copilot das Häkchen setzen bei Enable GitHub Copilot.

RStudio: Enable GitHub Copilot unter Tools - Global Options - Copilot
RStudio: Enable GitHub Copilot unter Tools – Global Options – Copilot

Copilot-Komponenten herunterladen und installieren.

Anmelden (Sign In) und Code (Verification Code) kopieren.

RStudio: Verification code für GitHub Copilot

Auf GitHub den Bestätigungscode eintragen: https://github.com/login/device

GitHub die nötigen Berechtigungen für GitHub Copilot erteilen: Authorize GitHub Copilot Plugin.

RStudio sollte anschließend den aktuell eingeloggten Nutzer anzeigen.

Nun kann man das Menü Global Options schließen, ein Skript öffnen (z. B. .R, .qmd, .py) und sich von Copilot beim Programmieren unterstützen lassen!

GitHub Copilot deaktivieren

Sollte man den GitHub Copilot deaktivieren wollen, geht das so:

Einfach unter Tools – Global Options – Copilot das Häkchen bei Enable GitHub Copilot entfernen oder

mit Strg + Shift + P (Windows) bzw. Cmd + Shift + P (Mac) die Befehlsübersicht öffnen, nach Enable GitHub Copilot suchen und das Häkchen entfernen.

GitHub Copilot und Proxy Server, SSL-Zertifikate, Externe Services, Posit Cloud

Details zu Proxy Servern, eigenen SSL-Zertifikaten und externen Services sowie Copilot-Diagnostics siehe den ausführlicheren Beitrag bei Posit (Posit ist die Firma, die RStudio entwickelt und die früher selbst auch RStudio hieß).

GitHub Copilot in der Posit Cloud

GitHub Copilot ist auch in der Posit Cloud nutzbar. Die Posit Cloud ist eine sehr praktische Möglichkeit, R und RStudio kostenlos im Browser auszuführen, ohne jegliche lokale Installation. Ich habe sie mehrfach bei R-Schulungen eingesetzt und dadurch einige Herausforderungen gelöst: in den Räumen eines Schulungsanbieters waren zwar R und RStudio wunschgemäß installiert, allerdings verhinderte eine Sicherheitseinstellung den Internetzugriff von RStudio, sodass keine Erweiterungspakete installiert werden konnten. So wäre die Schulung weitestgehend wertlos gewesen, der wer nutzt schon das blanke R ohne ein einziges Zusatzpaket? Auf dplyr, ggplot2, Pakete wie kable, gt, gtsummary für Tabellen in Berichten hätte ich nicht verzichten wollen. Auch bei Teilnehmern, die auf Firmenrechnern teilnehmen, die IT-Richtlinien unterliegen, gibt es zuweilen Einschränkungen wie nicht aktuelle Versionen von R und RStudio und nicht installierbare Erweiterungspakete.

GitHub Copilot in RStudio anwenden

Es gibt mehrere Möglichkeiten, GitHub Copilot in RStudio „anzuzapfen“.

  • Einen Kommentar in den R-Code schreiben, zum Beispiel:
    „Write a function that calculates the volume of a pyramid.“
    GitHub Copilot reagiert darauf, indem es in grau einen Code-Vorschlag anzeigt. Diesen kann man mit der Tabulator-Taste annehmen und anschließend den Code wie gewohnt ausführen.

    Statt Funktionen anzufordern, kann man auch Wissen abfragen, zum Beispiel:
    # q: What is the definition of standard error

    Antwort von GitHub Copilot:
    # a: The standard error is the standard deviation of the sampling distribution of a statistic.
  • Auto-Vervollständigen (autocomplete), zum Beispiel:
    ggplot(
    Das genügt bereits, um Code-Vorschläge anzustoßen.
    Gefällt einem der Vorschlag nicht, kann man den vorgegebenen Codeschnipsel konkretisieren – dann wird auch der Vorschlag besser darauf abgestimmt.
  • Auch ein sprechender Funktionsname kann bereits genügen, einen Codevorschlag zu triggern, Beispiel:
    num_to_power <-
    wird vervollständigt zu
    num_to_power <- function(x, n) {
    x ^ n
    }

GitHub Copilot Workspace für die R-Programmierung: Erfahrungsberichte

Kürzlich stieß ich auf einen Erfahrungsbericht des epiverse-trace-Teams zum Einsatz von GitHub Copilot Workspace. Workspace bietet umfangreichere Unterstützung, die über Codevorschläge hinausgeht und es erlaubt, ganze Projekte KI-gestützt zu skizzieren und umzusetzen. Epiverse Trace gehört zur Epiverse-Initiative von data.org. Epiverse Trace wurde 2021 gegründet und ermöglicht die verteilte Datenanalyse als Grundlage für die Reaktion auf Pandemien.

Das Team stellte drei Aufgaben, um zu prüfen, wie nützlich GitHub Copilot Workspace sein würde. Dabei ging es um die Arbeit an R-Paketen, die einige besondere Herausforderungen birgt, wie wir im Folgenden sehen werden.

  1. Eine Funktion exportieren durch eine Aktualisierung der Dokumentation (roxygen2)
  2. Ein simples epidemisches Modell in ein bestehendes R-Paket integrieren, das bereits andere epidemische Modelle enthält
  3. Code Review zu einem R-Paket durchführen

Es zeigte sich, dass die KI noch weit davon entfernt ist, menschliche Entwickler zu ersetzen, auch wenn sie punktuell sehr nützlich sein kann.

Bei der ersten Aufgabe schnitt Copilot Workspace am besten ab: es verwies korrekt auf die NAMESPACE-Datei und schlug vor, die Dokumentation zu aktualisieren (Schlüsselwort internal entfernen) und den NAMESPACE anzupassen. Die Entwickler übernahmen die Lösung nicht 1:1, sondern fügten das {roxygen}-Schlüsselwort @export ein.

Die KI baute auch einen Fehler in die Dokumentation ein: und zwar wurde vor dem letzten Element einer Parameter-Aufzählung ein Komma eingefügt! Grammatikalisch sinnvoll, aber in der Programmier-Syntax schlicht falsch. Die Formatierung wurde (unerwünscht) geändert, etwa durch eingefügte Zeilenumbrüche.

Einschätzung: Teilweise erfolgreich. Für jemanden, der von einer anderen Programmiersprache kommt, können die Vorschläge bereits eine große Hilfe sein. Die KI versteht jedoch nicht alle Besonderheiten der R-Paket-Entwicklung und es bleibt nötig, die Vorschläge fachgerecht zu prüfen und ggf. anzupassen.

Bei der zweiten Aufgabe erledigte GitHub Copilot Workspace ebenfalls einige Anforderungen gut, offenbarte aber hier deutlicher ins Gewicht fallende Schwächen: So wurden R-spezifische Richtlinien zur Paket-Entwicklung missachtet, indem etwa im vorgeschlagenen R-Code ein Paket mit require(package) geladen wurde. In R-Paketen ist das schlechte Praxis; Pakete sollten über den Namespace angesprochen werden, etwa so: package::function(). Zudem enthielt die von GitHub Copilot geschriebene Funktion nicht die beschriebenen Parameter, sie war nicht flexibel genug und entsprach nicht der Spezifikation.

Als am wenigsten brauchbar erwies sich GitHub Copilot Workspace bei der dritten Aufgabe, dem Code Review eines R-Pakets. Das ist eine zeitaufwändige Herausforderung für Entwickler, die zur guten, bewährten Praxis der Software-Entwicklung zählt. Die tatsächliche umfassende Code-Analyse konnte die KI nicht leisten. Was herauskam, war im Grunde ein Wiederkäuen der Beschreibung im Review Pull Request, gemischt mit einigen Bemerkungen aus dem Änderungsprotokoll (changelog). Ein echter, brauchbarer Code Review geht weit darüber hinaus.

Fazit: GitHub Copilot in RStudio

Es kann eine große Erleichterung sein, GitHub Copilot in RStudio zu nutzen. Kursteilnehmer haben mir von sehr guten Erfahrungen berichtet. Zum Teil kann man Shiny Apps oder Bausteine dazu von der KI schreiben lassen. Oft kann man erhebliche Zeitersparnis erreichen. Allerdings stößt die KI bei anspruchsvolleren Aufgaben deutlich an Grenzen und menschliche Expertise bleibt weiterhin unerlässlich, um Projekte erfolgreich zu gestalten. Gerade wenn der Code veröffentlicht und von vielen Anwendern genutzt werden soll, z. B. bei R-Paketen oder Apps, ist dringend zu raten, sich nicht allein auf die KI zu verlassen.

Es wird allerdings spannend sein zu beobachten, welche Fortschritte die Tools in nächster Zeit erzielen.

Wie sind Eure Erfahrungen? Freue mich insbesondere über spannende Anekdoten!

Freue mich über Kommentare!

Wir benutzen Cookies um die Nutzerfreundlichkeit der Webseite zu verbessen. Durch Deinen Besuch stimmst Du dem zu.