Mit Generative AI programmieren

8 ChatGPT-Tools für R

25.05.2023 von Sharon Machlis
Auch Developer, die mit R arbeiten, können auf Unterstützung durch ChatGPT zählen.
ChatGPT und R gehen inzwischen ganz gut zusammen, wie unser Blick auf acht Generative-AI-Tools in diesem Bereich zeigt.
Foto: arip teguh santoso - shutterstock.com

chatgpt kann Fragen zu einer breiten Palette von Technologiethemen beantworten - einschließlich die, wie man (R-)Code schreibt. Das bedeutet auch, dass OpenAIs Large Language Model (LLM) jedem Developer zur Seite steht, der oder die mit R arbeitet - auch ohne Vorkenntnisse im Bereich der KI-Modelle.

Inzwischen hat sich rund um ChatGPT und die Programmiersprache R ein Ökosystem gebildet. Das erleichtert es Ihnen maßgeblich, die KI-Technologie in Ihren R-Workflow zu integrieren. Bevor wir auf die einzelnen Tools im Detail eingehen - hier noch einige wichtige Aspekte, die Sie beachten sollten:

Im Folgenden werfen wir einen Blick auf acht beeindruckende, R-spezifische ChatGPT-Ressourcen.

RTutor

Diese App bietet eine elegante und einfache Möglichkeit, die Kombination von ChatGPT und R auszutesten. Laden Sie dazu einen Datensatz hoch, stellen Sie eine Frage - und beobachten Sie anschließend, wie R-Code und Ihre Ergebnisse, einschließlich Grafiken, generiert werden. Übrigens kann diese App trotz ihres Namens auch Python-Code erzeugen.

Der Screenshot zeigt das Ergebnis für die Frage nach einem Balkendiagramm, wobei dessen Elemente blau (für Werte größer 0) oder rot (für Werte kleiner 0) ausgegeben werden.
Foto: Sharon Machlis / IDG

RTutor ist derzeit das einzige hier gelistete Tool, das keinen ChatGPT-API-Key erfordert. Sie sind allerdings aufgefordert, bei intensiver Nutzung Ihren eigenen Account anzugeben, um das Konto der Entwickler nicht über Gebühr zu belasten. Wie die Macher der App auf ihrer Webseite erklären, besteht das wesentliche Ziel von RTutor darin, Menschen mit bislang überschaubarer Erfahrung in R dabei zu unterstützen, die Sprache zu lernen oder produktiver damit zu arbeiten.

RTutor ist Open Source und auf GitHub verfügbar, so dass Sie auch Ihre eigene lokale Version installieren können. Die Lizenzierung erlaubt jedoch nur eine Verwendung für nicht-kommerzielle Zwecke oder für kommerzielle Tests. Bei RTutor handelt es sich um ein persönliches Projekt von Dr. Steven Ge, Professor für Bioinformatik an der South Dakota State University.

CodeLingo

Diese mehrsprachige Anwendung "übersetzt" Code von einer Programmiersprache in eine andere. Zu den kompatiblen Sprachen gehören unter anderem:

CodeLingo ist eine reine Webanwendung und erfordert einen OpenAI-API-Key (den Sie möglicherweise nach dem Testen neu generieren wollen).

ggplot2-Code wird mit Pandas und matplotlib-Bibliotheken in Python "übersetzt"
Foto: Sharon Machlis / IDG

In unserem Versuch, das Tool Code für ein ggplot2-R-Diagramm in JavaScript übersetzen zu lassen, folgte ein Output, der die schwer zu erlernende D3-Javascript-Bibliothek verwendete - statt die für einen JS-Einsteiger besser verträglichen Observable Plot oder Vega-Lite.

Der Python-Request im obenstehenden Screenshot war hingegen zielführender und unkomplizierter - und verwendete erwartbare Bibliotheken. Allerdings "verstand" ChatGPT dabei nicht, dass es sich bei "Set1" um eine ColorBrewer-Farbpalette handelt, die nicht direkt in Python verwendet werden kann. Das verdeutlicht (wie bei vielen anderen Anwendungen von ChatGPT): Die Arbeit mit dem Tool kann eine gute Basis liefern, aber man sollte dabei in der Lage sein, Fehler zu erkennen und zu korrigieren.

CodeLingo wurde von Analytica Data Science Studios entwickelt.

askgpt

Auch dieses Package, das auf GitHub zum Download zur Verfügung steht, ist ein möglicher guter Startpunkt für Nutzer, die sich mit ChatGPT vertraut machen wollen. Das liegt auch daran, dass askgpt beim ersten Startvorgang einige nützliche Anweisungen mitliefert. Sobald Sie das Package mit library(askgpt) geladen haben, antwortet es mit:

Hi, this is askgpt :).

• To start error logging, run `log_init()` now.

• To see what you can do use `?askgpt()`.

• Or just run `askgpt()` with any question you want!

Wenn Sie die login()-Funktion verwenden, ohne vorher einen Key zu speichern, erhalten Sie eine Statusmeldung, die Sie darüber aufklärt, wie Sie diesen erhalten:

? It looks like you have not provided an API key yet.

1. Go to <https://platform.openai.com/account/api-keys>

2. (Log into your account if you haven't done so yet)

3. On the site, click the button + Create new secret key to create an API key

4. Copy this key into R/RStudio

askgpt speichert die Ergebnisse Ihrer Abfrage standardmäßig als Objekt, damit Sie sie in einer Variablen wie dieser speichern können:

barchart_instructions <- askgpt("How do I make a bar chart with custom colors with ggplot2?")

Sobald Sie einen Request einreichen, sehen Sie die Statusmeldung:

GPT is thinking .:

Sie können sich also sicher sein, dass Ihre Anfrage abgeschickt wurde und eine Antwort in Arbeit ist.

Neben der allgemeinen askgpt()-Funktion des Pakets gibt es ein paar codierungsspezifische Funktionen wie annotate_code(), explain_code() und test_function(). Diese Funktionen erfordern in der Folge, dass Sie Outputs im Copy-Paste-Verfahren in Ihren Quellcode integrieren müssen.

Für diejenigen, die mit der OpenAI-API vertraut sind, ermöglicht es die chat_api()-Funktion des Pakets, API-Parameter festzulegen, etwa das zu verwendende Modell, die maximale Anzahl an Token, die Sie pro Anfrage ausgeben möchten oder die gewünschte "Response Temperature" (dazu später mehr). chat_api() gibt eine Liste zurück, mit dem Textteil der Antwort in YourVariableName$choices[[1]]$message$content. Auch andere nützliche Informationen werden in dieser Liste gespeichert, wie beispielsweise die Anzahl der verwendeten Token.

Für askgpt zeichnet Johannes Gruber verantwortlich, Post-Doc-Forscher an der Vrije Universiteit Amsterdam.

gptstudio

Dieses Package enthält RStudio-Add-Ins für die Arbeit mit ChatGPT (es gibt jedoch auch einige Kommandozeilen-Funktionen gibt, die in jeder IDE, beziehungsweise jedem Terminal funktionieren). Auf die Add-Ins in RStudio können Sie entweder über das Drop-Down-Menü zugreifen - oder Sie suchen direkt danach (Strg + Shift + P).

Laut der Webseite soll gptstudio ein allgemeines Hilfsmittel für R-Programmierer darstellen, um Large Language Models (LLMs) einfach in ihre Projektabläufe zu integrieren. Das ChatGPT-Add-in startet eine browserbasierte App, die Fragen zum Programmieren mit R beantwortet und Optionen für Programmierstil (Tidyverse, Base) und -niveau bietet.

Dieser Screenshot zeigt den Output auf die Frage, wie ich als fortgeschrittener Programmierer ein R-Streudiagramm im Tidyverse-Stil erstellen kann.
Foto: Sharon Machlis / IDG

Ein anderes Add-In des gptstudio-Packages ist ChatGPT in Source. Sie schreiben den Code wie gewohnt in Ihrem Quelltextfenster, fügen einen Kommentar hinzu, in dem Sie um Änderungen bitten, wählen den Codeblock mit Ihrem Kommentar aus und wenden das Add-In an. Und voilà: Die von Ihnen gewünschten Änderungen werden vorgenommen.

Ich habe das Add-In auf folgenden Code angewendet:

# Sort bars by descending Y value, rotate x-axis text 90 degrees, color bars steel blue

ggplot(states, aes(x = State, y = Pop_2020)) +

geom_col()

Das führte dazu, dass mein Code wie im nachfolgenden Screenshot zu sehen verändert wurde:

Das ChatGPT in Source Add-in zu beobachten, ist ein bisschen magisch.
Foto: Sharon Machlis / IDG

Folgenden Code an das Add-in zu senden, generierte vollständige Anweisungen und Code für eine Shiny-App:

# Create an R Shiny app with this data

states <- readr::read_csv("https://raw.githubusercontent.com/smach/SampleData/main/states.csv")

Entwickelt wurde gptstudio von Michel Nivard und James Wade.

gpttools

Das gpttools-Package will gptstudio für R-Paketentwickler erweitern, damit sie LLMs leichter in ihre Projektabläufe integrieren können", wie es auf der Webseite heißt. Sie können das Package über GitHub oder R Universe installieren:

# Enable repository from jameshwade

options(repos = c(

jameshwade = "https://jameshwade.r-universe.dev",

CRAN = "https://cloud.r-project.org"

))

# Download and install gpttools in R

install.packages("gpttools")

Die Add-Ins des Packages umfassen:

Um ein Add-In auszuführen, markieren Sie Ihren Code und wählen Sie das Add-In entweder aus dem Dropdown-Menü aus oder suchen Sie direkt danach. Als ich ein Add-In ausgeführt habe, wurde mir nicht immer eine Statusmeldung angezeigt - Sie sollten also Geduld mitbringen.

Das Add-In "Suggest Improvements" generierte unkommentierten Text unterhalb meiner Funktion in einer R-Datei, gefolgt von geändertem Code. Einige der Vorschläge waren dabei nicht sehr hilfreich. Zum Beispiel für diesen Code:

if (exportcsv) {

filename_root <- strsplit(filename, "\\.")[[1]][1]

filename_with_winner <- paste0(filename_root, "_winners.csv")

rio::export(data, filename_with_winner)

}

Das Add-in empfahl:

Use `paste()` instead of `paste0()` to ensure a space is included between the names of the winners.

Ich wollte aber kein Leerzeichen in meinem Dateinamen. Der folgende Vorschlag erschien mir vernünftig:

Use a switch statement instead of multiple if statements, to allow for additional functionality in the future

In diesem Fall würde ich wahrscheinlich eher dplyrs case_when() oder data.tables fcase() verwenden als switch() von base R.

Stellen Sie unbedingt sicher, eine Kopie Ihres Original-Codes zu sichern. Denn es besteht die Gefahr, dass Ihr Code in unbeabsichtigter Art und Weise überschrieben wird.

chatgpt

Das chatgpt R-Package bietet sowohl Funktionen als auch RStudio-Add-ins, um ChatGPT mit R zu nutzen. Zum Zeitpunkt meines Tests waren 10 Add-ins dokumentiert. Code-spezifische Funktionen sind:

Wenn Sie ChatGPT für andere Zwecke verwenden möchten, gibt es dazu auch eine generische ask_chatgpt()-Funktion und ein Add-In.

Ihren Key speichern Sie in Ihrer .Renviron-Datei mit:

OPENAI_API_KEY="your key"

Jetzt können Sie loslegen. Das Package ist auf CRAN verfügbar - alternativ können Sie die Development-Version wie folgt installieren:

remotes::install_github("jcrodriguez1989/chatgpt", build_vignettes = TRUE)

Als ich ein Add-In ausprobierte, ohne das Paket zuerst zu laden, passierte nichts. Dann lud ich das Paket mit library(chatgpt), was folgenden Meldung hervorrief:

Warning message:

In run_addin("document_code") :

Please set one of `OPENAI_ADDIN_REPLACE=TRUE` or `OPENAI_VERBOSE=TRUE`

Da ich nicht wollte, dass mein ursprünglicher Code ersetzt wird, haben ich die Anweisungen in meiner R-Umgebungsdatei befolgt und die Option verbose auf TRUE gesetzt. Das führte dazu, dass eine Abfrage an ChatGPT und eine Antwort in meiner Konsole angezeigt wurden.

Mit der Option OPENAI_ADDIN_REPLACE=TRUE in meiner R-Umgebungsdatei und meinem in RStudio ausgewählten Code verschwanden gelegentlich Teile meines ursprünglichen Codes, wenn Dokumentation hinzugefügt wurde. Am Ende blieb ich bei den Kommandozeilenfunktionen dieses Pakets und nicht bei den Add-Ins. Sie finden diese eventuell nützlich - denken Sie aber daran, eine Kopie Ihres Codes zu sichern, bevor Sie experimentieren.

Das chatgpt-Paket wurde von Juan Cruz Rodriguez entwickelt.

gptchatteR

Bei gptchatteR handelt es sich nach Aussage der Verantwortlichen um einen "experimentellen und inoffiziellen Wrapper für die Interaktion mit OpenAI-GPT-Modellen in R". Ein wesentlicher Vorteil des Packages ist seine chatter.plot()-Funktion.

Installieren Sie das Paket mit:

remotes::install_github("isinaltinkaya/gptchatteR", build_vignettes = TRUE, dependencies = TRUE)

So wird gewährleistet, dass auch das erforderliche openai-Package installiert wird. Anschließend laden Sie das Paket und authentifizieren sich:

library(gptchatteR)

chatter.auth("YOUR KEY")

Sobald das erledigt ist, starten Sie eine Chatsitzung mit chatter.create(). Dieses Argument umfasst das OpenAI-Modell (Standard text-davinci-003), max_tokens für die maximale Anzahl von Token, die verwendet werden sollen (Standard ist 100), und eine "Temperatur", die mit einem Argument wie diesem festgelegt wird:

chatter.create(temperature = 0)

Laut der OpenAI-Dokumentation kann dieser Temperaturwert zwischen 0 und 1 liegen und gibt Auskunft darüber, wie oft das Modell ein weniger wahrscheinliches Token ausgibt.

Der Standardwert des Pakets ist ein neutraler Wert von 0,5. Wenn Sie brauchbaren Code erzeugen wollen, lohnt es sich den Wert auf 0 zu setzen. Im Test funktionierte das Package, gab aber folgende Warnmeldung aus:

The `engine_id` argument of `create_completion()` is deprecated as of openai 0.3.0.

Please use the `model` argument instead.

The deprecated feature was likely used in the gptchatteR package.

Please report the issue to the authors.

Einen "casual" Chat erstellen Sie mit chatter.chat("Ihr Input"). Mit chatter.feed() wird Ihre erste Anfrage zur Verwendung in einer zweiten Frage gespeichert.

Nachfolgenden Code habe ich mit dem Package ausgeführt:

library(gptchatteR)

chatter.auth(Sys.getenv("OPENAI_API_KEY"))

chatter.create(temperature = 0)

chatter.feed('I have the following data in R mydf <- data.frame(State = c("CT", "NJ", "NY"), Pop = c(3605944, 9288994, 20201249))')

myplot <- chatter.plot("Make a graph with State on the x axis and Pop on the Y axis")

Das Ergebnis: Ein Diagramm in meinem RStudio-Ansichtsfenster. Der Code des Diagramms wurde in myplot$code gespeichert.

gptchatteR wurde von Isin Altinkaya, Doktorand an der Universität Kopenhagen, entwickelt.

chatgptimages

Dieses R-Paket wurde nicht entwickelt, um Ihnen beim Programmieren zu helfen. Stattdessen verwendet es die vertraute R- und Shiny-Schnittstelle, um auf eine weitere ChatGPT-Fähigkeit zuzugreifen: Bilder zu erzeugen. Wenn Sie dieses Package nicht nur zu Unterhaltungszwecken nutzen, sollten Sie die ethischen und rechtlichen Fragestellungen in diesem Bereich unbedingt im Hinterkopf haben.

Wenn Sie es ausprobieren möchten, sollten Sie beachten, dass es sich nicht wie ein gewöhnliches Package installieren lässt. Stellen Sie zunächst sicher, dass Sie

Forken und laden Sie dann das gesamte GitHub-Repository herunter oder laden Sie die entsprechende .zip-Datei herunter und entpacken Sie diese. Öffnen Sie nun die Datei chatgptimages.Rproj in RStudio, die Datei run_dev.R im Dev-Ordner des Projekts und führen Sie diese kurze Datei Zeile für Zeile aus. Folgende Anwendung sollte sich in Ihrem Standardbrowser öffnen:

Foto: Sharon Machlis / IDG

Folgen Sie den Anweisungen, um einen ChatGPT-API-Key abzulegen und Sie können damit starten, Bilder zu erstellen und zu speichern. Die Ergebnisse sehen (in etwa) folgendermaßen aus:

Foto: Sharon Machlis / IDG

(fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.