无需对特定主题进行微调或培训,ChatGPT 可以回答有关各种技术主题的问题,包括如何编写 R 代码。这意味着任何R程序员都可以使用ChatGPT的强大功能,即使是那些对大型语言模型知之甚少的人。(大型语言模型(LLM)是支撑OpenAI的ChatGPT等AI聊天机器人的技术。
围绕 ChatGPT 和 R 正在形成一个生态系统,这使得将 AI 技术整合到您的 R 语言工作流程中变得容易。但是在开始将 ChatGPT 和与之相关的工具用于 R 中的项目之前,需要记住一些重要事项:
- 您使用这些工具提出的所有要求都会发送到OpenAI的服务器。不要使用 ChatGPT 工具处理敏感信息。
- ChatGPT 可能会自信地返回错误的答案。即使是不正确的响应也可以是一个节省时间的起点,但不要假设代码会完全按照您的期望执行。德克萨斯基督教大学(Texas Christian University)副教授、流行的R包的作者凯尔·沃克(Kyle Walker)最近在推特上表示,如果你很好地理解一个主题,ChatGPT可以“增强你的工作”,或者它会让你“因为不知道自己在做什么而暴露出来”。区别在于知道AI输出何时不正确。始终检查 ChatGPT 的回复。
tidycensus
- ChatGPT 可以对同一查询生成不同的响应,有些答案可能是准确的,而另一些则不准确。例如,当我多次请求带有蓝色条形的条形图时,代码有时会生成带有蓝色条形的图形,而其他图形则不会生成,即使我提交了完全相同的请求也是如此。如果您需要可重现的工作流程,这显然不太理想。
ggplot2
- 如果您正在使用的包最近有更新,ChatGPT 不会知道它,因为它的训练数据将在 2021 年结束。
- 本文中的大多数资源都要求您拥有自己的 OpenAI API 密钥,并且该 API 不是免费使用的。虽然目前价格很低,但不能保证它会保持这种状态。ChatGPT 2.10 涡轮增压模型的当前定价是每 000,3 个代币 5 美分。代币能给你带来什么?例如,从 234 行 mpg 数据集创建散点图的请求花费了 38 个代币,只是几分之一美分。
- 向 ChatGPT 寻求编码帮助不太可能让您陷入 AI 种族和性别偏见的道德规范中。然而,关于为 OpenAI 提供更多数据是否明智,人们进行了激烈的讨论;如何抓取和重新利用训练数据的道德规范;以及是否最好使用开源大型语言模型(例如H2O.ai的h2oGPT)而不是OpenAI的。这些困境是每个人和组织自己解析的。然而,在撰写本文时,根本没有特定于R的LLM工具可以与围绕ChatGPT构建的工具相媲美。
现在,让我们来看看目前可用的一些最值得注意的以R为中心的ChatGPT资源。
开放空气
OpenAIR软件包是将ChatGPT技术整合到您自己的R应用程序中的绝佳选择,例如将用户输入发送到OpenAI API的Shiny应用程序。您可以使用函数注册密钥。openai_api_key(“YOUR-KEY”)
其功能使您可以选择使用 将结果打印到控制台,使用 将结果另存为文本,或使用 返回完整的 API 响应对象。响应对象是一个列表,其中还包括使用的令牌等信息。chat()
chat(“My request”)
my_results <- chat(“My request”, output = “message”)
my_results_object <- chat(“My request”, output = “response object”)
其他有用的函数包括计算字符串发送到 API 时将花费的 ChatGPT 令牌数量,从包含代码文本说明的 ChatGPT 响应中获取 R 代码,以及获取当前 ChatGPT 的 ID(如果要将复杂的应用程序分解为较小的函数,则很有用)。count_tokens()
extract_r_code()
get_chatlog_id()
该软件包还具有一些通用编码功能。例如, 生成一个提示,询问您的输入以及您希望以哪种语言编写代码。,这是特定于 R 的,可以执行您所期望的。write_code(“filename”)
refactor()
还有一些函数可以在 Python 和 R 或 Java 和 R 之间进行转换,尽管您最终可能会收到警告消息,例如“从 R 到 Python 的转换可能会导致无效的 Python 代码。请仔细验证输出代码!
在 R 控制台中运行以查看其许多其他函数。help(package = “TheOpenAIR”)
该软件包由瑞士圣加仑大学助理教授Ulrich Matter和圣加仑博士生Jonathan Chassot提供,正在CRAN上。
此应用程序是采样 ChatGPT 和 R 的一种优雅而简单的方法。 上传数据集,提出问题,并观察它生成 R 代码和结果,包括图形。虽然它被命名为RTutor,但该应用程序也可以生成Python代码。
RTutor 在 https://rtutor.ai/ 的网络上。它是目前列出的唯一不需要 ChatGPT API 密钥即可使用的应用程序或软件包,但系统会要求您提供自己的密钥以供大量使用,以免向创建者的帐户收费。
该应用程序的“关于”页面解释说,RTutor 的主要目标“是帮助具有一些 R 经验的人学习 R 或提高工作效率……RTutor 可用于使用 R 快速加快编码过程。它为您提供了要测试和优化的代码草稿。警惕错误和错误。
RTutor 的代码是开源的,可在 GitHub 上找到,因此您可以安装自己的本地版本。但是,许可仅允许将应用用于非营利或非商业用途,或用于商业测试。RTutor 是南达科他州立大学生物信息学教授 Steven Ge 博士的个人项目。
代码术语
这个多语言应用程序将代码从一种编程语言“翻译”到另一种编程语言。可用的语言包括Java,Python,JavaScript,C,C++,PHP等,包括R。这只是一个 Web 应用程序,可在 https://analytica.shinyapps.io/codelingo/ .您需要输入 OpenAI API 密钥才能使用它(您可能需要在测试后重新生成密钥)。
使用相当难以学习的D2 JavaScript库将ggplot3 R图的代码转换为JavaScript生成的输出的请求,而不是JavaScript新手更有可能想要的东西,例如Observable Plot或Vega-Lite。
转换为 Python 的请求(如图 3 所示)更直接,并且使用了我期望的库。但是,ChatGPT并不了解“Set1”是ColorBrewer调色板,不能直接在Python中使用。与许多 ChatGPT 使用一样,在编程语言之间翻译代码可能会为您提供一个有用的起点,但您需要知道如何修复错误。
该应用程序由Analytica Data Science Solutions创建。
问格普特
这个软件包 https://github.com/JBGruber/askgpt 提供,对于希望在控制台中使用 ChatGPT 的首次用户来说,这是一个很好的起点,部分原因是它在初始启动时提供了一些说明。加载包,它的响应如下:library(askgpt)
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!
在不先存储密钥的情况下使用该函数,您将看到有关如何获取 API 密钥的消息:login()
ℹ 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
系统会要求你将密钥保存在密钥环中,然后就可以进行未来的会话了。如果密钥已存储,则不返回任何消息。login()
askgpt
的默认设置是将查询结果存储为对象,以便将它们保存到如下所示的变量中:
barchart_instructions <- askgpt("How do I make a bar chart with custom colors with ggplot2?")
提交查询,您将首先看到:
GPT is thinking ⠴
这样,您就知道您的请求已发送,并且应该会得到答复,而不是想知道点击提交后发生了什么。
除了包的一般功能外,还有一些特定于编码的函数,例如 、 和 。这些将涉及将响应剪切并粘贴回源代码中。askgpt()
annotate_code()
explain_code()
test_function()
对于那些熟悉 OpenAI API 的人来说,该包的功能允许您设置 API 参数,例如要使用的模型、您愿意为每个请求花费的最大代币以及您想要的响应温度(我将在本文后面更详细地解释)。chat_api()
该函数返回一个列表,其中响应的文本部分位于 。其他有用的信息也存储在列表中,例如使用的令牌数量。chat_api()
YourVariableName$choices[[1]]$message$content
该软件包由阿姆斯特丹自由大学的博士后研究员Johannes Gruber创建。它可以从CRAN安装。askgpt
GPT工作室
这个软件包及其兄弟(下面讨论)具有 RStudio 加载项来与 ChatGPT 配合使用,尽管也有一些命令行函数可以在任何 IDE 或终端中使用。gpttools
您可以从代码源窗格上方的加载项下拉菜单或通过 RStudio 命令面板 (Ctrl-shift-p) 搜索它们来访问 RStudio 中的加载项。
根据软件包网站,是一个通用的助手,“供R程序员轻松地将大型语言模型(LLM)的使用合并到他们的项目工作流程中。它在CRAN上。gptstudio
一个加载项 ChatGPT 启动了一个基于浏览器的应用,用于询问 R 编码问题,并提供编程风格(整洁、基本或无首选项)和熟练程度(初学者、中级、高级和天才)的选项。
在下面的屏幕截图中,我询问了如何在 R 中创建散点图作为具有整洁样式的中间编码器。
用基本编程风格提出相同的问题,生成使用基本R的plot函数作为答案的代码。
虽然是为R编码帮助而设计的,但可以利用更多的ChatGPT功能,所以你可以问它任何你对原始基于Web的ChatGPT的要求。例如,这个应用程序与ChatGPT工具一样工作,可以编写Python代码并回答一般问题,例如“哪颗行星离太阳最远?gptstudio
该包的另一个加载项,源代码中的 ChatGPT,似乎最接近魔法。像往常一样在源代码窗格中编写代码,添加注释请求在代码中进行更改,选择包含注释的代码块,然后应用外接程序。然后,瞧!将进行您请求的更改。gptstudio
当我将加载项应用于此代码时:
# 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()
我的代码已替换为图 5 突出显示的选项中显示的内容:
很酷。。。除非运行此代码,否则条形不会显示为钢蓝色。向内移动使其工作。这个错误与这个特定的加载项无关,而是与 ChatGPT 本身的变幻莫测有关。正如我之前提到的,我在其他时候运行了相同的请求,结果是准确的。fill = "steelblue"
geom_col()
将以下代码发送到源加载项中的 ChatGPT 会为 Shiny 应用生成完整的说明和代码:
# Create an R Shiny app with this data
states <- readr::read_csv("https://raw.githubusercontent.com/smach/SampleData/main/states.csv")
但是,两次提交我的请求返回了两个完全不同的结果——第一个是双文件应用程序在使用前忘记加载库;实际上不在数据中的第二个调用列。创建处理现有数据集细节的查询需要更多的工作,但代码仍然可以作为构建的框架。ggplot2
gptstudio
由米歇尔·尼瓦德和詹姆斯·韦德撰写。
GPT工具
根据包网站的说法,该包的目的是“扩展R包开发人员,以便更轻松地将大型语言模型(LLM)的使用纳入其项目工作流程”。在撰写本文时,该软件包不在 CRAN 上。相反,您可以从 JamesHWade/gpttools GitHub 存储库或 R Universe 安装以下内容:gpttools
gptstudio
gpttools
gpttools
# 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")
包的加载项包括:
- ChatGPT with Retrieval
- 将脚本转换为函数
- 将 roxygen 添加到函数(记录函数)
- 建议单元测试
- 文档数据
- 提出改进建议
若要运行加载项,请突出显示您的代码,然后从“RStudio 加载项”下拉菜单中选择加载项,或通过在命令面板中搜索它(“> RStudio 加载项”菜单中的“显示命令面板的工具”或 Windows 上的 Ctrl-Shift-P 或 Mac 上的 Cmd-Shift-P )中选择加载项。