用于R的GenAI工具:使R编程更容易的新工具

B站影视 港台电影 2025-03-26 16:00 1

摘要:获取编写代码的帮助是大型语言模型最常用的用途之一。一些开发人员更喜欢在集成开发环境(IDE)中使用这些工具;另一些开发人员则喜欢复制并粘贴到外部工具中的内容。R程序员两者都有选择。

从IDE插件到外部聊天机器人和本地运行LLM,这些新的和新兴的工具正在为R带来生成性人工智能革命。

获取编写代码的帮助是大型语言模型最常用的用途之一。一些开发人员更喜欢在集成开发环境(IDE)中使用这些工具;另一些开发人员则喜欢复制并粘贴到外部工具中的内容。R程序员两者都有选择。

gander

gander软件包有点像GitHub Copilot Light for R脚本。这是RStudio和Positron的IDE插件,可以知道它周围脚本中的代码以及工作环境中的变量。如果您在调用gander时选择了代码,系统会询问您是否希望模型的结果替换该代码,还是在之前或之后添加。

gander的界面会询问您是否要替换选定的代码,或者在选择之前或之后将其建议放在之后。

您可以选择ellmer支持的任何模型来用于Gander。截至2025年初,软件包作者兼Posit开发人员Simon Couch推荐了Anthropic的Claude Sonnet的R能力。您可以使用options(.gander_chat = ellmer::chat_claude)将其设置为默认设置。

和往常一样,在使用商业LLM提供商时,您需要在您的工作环境中提供API密钥。与许多当前用于使用LLM的R软件包一样,您也可以使用由ollama提供支持的本地模型。请注意,您还可以使用ellmer作为聊天机器人来询问有关R的问题并在本地运行LLM。(有关ellmer和ollama的更多信息,请参阅我之前的文章。)

该命令还在RStudio中安装了一个加载程序,您可以在其中选择一个键盘快捷键来调用它。

对于Positron,软件包网站的主页上有打开Positron命令调色板并将代码添加到keybindings.json文件的说明。

要查看gander向模型发送了哪些数据——来自脚本和工作会话的背景信息,以及您键入的问题——您可以在运行加载項后运行gander_peek)。

一些gander设置可以使用R的options函数进行更改。该工具的默认样式说明是:

使用tidyverse风格,并在相关时使用tidyverse软件包。例如,当被要求绘制某物时,请使用ggplot2,或者当被要求转换数据时,除非另有明确指示,否则请使用dplyr和/或tididr。

You can change that default with code such as options(.gander_style = "Use base R when possible.") See more customization possibilities by running ?gander_options in your R console.

您可以在gander套餐网站和Posit博客上了解有关gander的更多信息。

作为“从R到ChatGPT的接口”,chatgpt具有大约10个RStudio插件,用于打开交互式聊天会话、注释所选代码、创建单元测试、记录代码和优化所选代码等。如果您没有为编程特定任务选择任何代码,它将评估整个活动文件。

对于那些不经常使用大型语言模型或不想为常规编程任务编写自己的提示的人来说,这可能是一个不错的选择。如果您不想为每个任务调用不同的加载项,您可以在终端中使用其函数,例如comment_code和complete_code

您可以使用R环境变量自定义模型设置,例如OPENAI_MODEL(gpt-4o-mini为默认值)、OPENAI_TEMPERATURE(默认为1——我的选择是0)和OPENAI_MAX_TOKENS(默认为256)。

请注意,chatgpt软件包仅支持OpenAI模型。

CRAN上的gptstudio是另一个RStudio插件,提供对LLM的访问。它具有拼写和语法、聊天和代码注释的定义选项。我发现这个界面比其他一些选项更具破坏性,但意见可能会有所不同。

gptstudio软件包支持HuggingFace、Ollama、Anthropic、Perplexity、Google、Azure和Cohere以及OpenAI。

pkgprompt可以使用pkg_prompt函数将R包的文档(全部或仅特定主题)变成单个字符串。这使得将该文档作为提示的一部分发送给LLM变得容易。例如,命令

图书馆(pkgprompt)pkg_docs

将dplyr包的across和coalesce函数作为单个字符串返回文档。然后,您可以在R内或通过复制并粘贴到外部工具将字符串添加到任何LLM提示中。这是Simon Couch的另一个R包。安装:pak::pak("simonpcouch/pkgprompt")

如果您愿意去编码环境之外查询LLM,除了像Claude这样懂一些R的通用聊天机器人外,还有一些R特定的选项。

如果您构建Shiny Web应用程序,Posit的Shiny Assistant是一个很好的资源。这个基于网络的免费工具使用LLM来回答有关为R Shiny和Shiny for Python构建Shiny应用程序的问题。请注意,Shiny团队表示,他们可能会记录并查看您的查询以改进该工具,因此不要将网络版本用于敏感工作。您还可以从GitHub下载Shiny Assistant代码,并调整以自行运行它。

R和R Studio Tutor是一个自定义的GPT,它将特定的R信息添加到基本的ChatGPT中。它由Jose A Fernandez Calvo开发,旨在回答有关R和RStudio的问题。

Christian Czymara的Code Nerd是另一个回答R问题的自定义GPT。

R Tutor是R空间的GenAI中最早的条目之一,仍然在线存在。上传数据集,提出问题,并观看它生成R代码和您的结果,包括图形。

R导师将让您询问有关数据集的问题,并生成R代码作为回应。

RTutor的代码在GitHub上可用,因此您可以安装自己的本地版本。然而,许可只允许将该应用程序用于非营利或非商业用途,或用于商业测试。RTutor是博士的个人项目。Steven Ge是南达科他州立大学的生物信息学教授,但现在由他创立的一家公司Orditus LLC开发和维护。

Chatilize是一个类似于R Tutor的较新的选项,可以生成Python和R。

云中的大型LLM可能仍然比您可以在本地下载和运行的模型更有能力,但较小的开放式模型一直在变得更好。而且,它们可能已经足够好于某些特定任务——唯一知道的方法就是尝试。本地模型还具有隐私的巨大优势,因此您永远不必将数据发送到其他人的服务器进行分析。此外,您不必担心您喜欢的模型被弃用。它们也是免费的,除了运行台式电脑的成本外。通用ellmer软件包也允许您运行本地LLM,但也有专门为本地生成人工智能设计的R软件包。

rollama和ollamar软件包都允许您使用R通过流行的Ollama项目运行本地模型,但它们的语法不同。如果你想要一个特定于Ollama的套餐,我建议你同时尝试哪一个。

除了其中一个(或两个)R包外,您还需要Ollama应用程序本身。下载并安装Ollama作为Windows、Mac或Linux的常规软件包,即不是R库。如果Ollama尚未运行,您可以从命令提示符或终端(不是R控制台)运行ollama serve来启动Ollama服务器。(如果您经常使用它,则在系统启动时将Ollama设置为在后台运行是值得的。)

After loading the rollama R package with library(rollama), you can test with the ping_ollama function to discover if R sees an Ollama server running.

If you don’t already have local LLMs installed with Ollama, you can do that in R with the pull_model("the_model_name) or ollama pull the_model_name in a terminal. You can check what models are available for Ollama on the Ollama website.

例如,要下载3B参数llama 3.2模型,您可以在R中运行pull_model("llama3.2:3b"))。

要将模型设置为会话的默认值,请使用语法options(rollama_model = "the_model_name)一个例子是:options(rollama_model = "llama3.2:3b")

对于单个问题,请使用query函数:

查询(“如何在ggplot2图的x轴上旋转文本?”)

如果您想要一个保留之前问题和答案的聊天,请使用chat这两个函数的可选参数包括screen(是否应将答案打印到屏幕上)和model_params(命名参数列表,如温度)。query还包括一个format参数,其返回值可以是响应对象、文本、列表、data.frame、httr2_response或httr2_request。

查询和聊天也可以包括带有images参数的上传图像。

generate函数从LLM生成一个完成,并返回一个httr2_response,然后可以由resp_process函数处理。

图书馆(ollamar)resp

或者,您可以使用resp

resp

ollamar还有其他功能,包括生成文本嵌入、定义和调用工具以及请求格式化的JSON输出。在GitHub上查看详细信息。

rollama是由Johannes B.创建的。Gruber;由Hause Lin的ollamar。

卷你自己的

如果您只想要一个Ollama的基本聊天机器人界面,一个简单的选择是结合ellmer、shiny和shinychat包来制作一个简单的Shiny应用程序。一旦安装这些,假设您也安装并运行了Ollama,您可以运行像这样的基本脚本:

图书馆(闪亮)图书馆(shinychat)ui

这应该会打开一个带有硬编码模型的极其基本的聊天界面。如果您不选择模型,应用程序将无法运行。您将收到一条错误消息,说明要指定模型以及您已在本地安装的模型。

我构建了一个稍微更强大的版本,包括下拉模型选择和下载聊天的按钮。你可以在这里看到那个代码。

无论您是想为您的脚本和应用程序添加功能,获取代码帮助,还是使用ollama在本地运行LLM,使用R的大型语言模型的选项越来越多。值得为您的用例尝试几个选项,以找到最适合您需求和偏好的选项。

来源:AI中国

相关推荐