首页
学习
活动
专区
圈层
工具
发布

在Stata中调用:ChatGPT、Claude、Gemini与Grok命令详解

2023年发布了一篇题为A Stata command to run ChatGPT的博文,至今仍然很受欢迎。遗憾的是,OpenAI更改了API代码,那篇帖子里的chatgpt命令已无法运行。在这篇新博文中,我将演示如何更新API代码,并展示如何编写类似的Stata命令来调用Claude、Gemini和Grok,示例如下:

本文的重点与上一篇相同:展示利用PyStata功能连接ChatGPT及其他AI工具是多么简单,而不是教您如何用AI工具回答Stata相关的问题。因此,我给出的示例只是“请写一首关于Stata的俳句”。当您可以把任何在您Stata工作流中觉得有用的请求传给它们。

Stata/Python集成功能回顾

本文默认您已熟悉Stata/Python集成以及原始chatgpt命令的写法。如果对这些内容还不了解,请先阅读以下博文:

• Stata/Python integration part 1: Setting up Stata to use Python

• Stata/Python integration part 2: Three ways to use Python in Stata

• Stata/Python integration part 3: How to install Python packages

• Stata/Python integration part 4: How to use Python packages

• Stata/Python integration part 6: Working with APIs and JSON data

• Stata/Python integration part 8: Using the Stata Function Interface to copy data from Stata to Python

• A Stata command to run ChatGPT

更新ChatGPT命令

您需要一个OpenAI用户账号以及专属的 OpenAI API 密钥,才能运行下方代码。我原来2023年的旧API密钥已无法使用,不得不重新生成一次。

首先,请在Stata命令窗口输入`shell pip install openai` 来安装Python的openai包。如果您使用的是Anaconda等集成平台,安装方式可能略有不同。我曾先执行 `shell pip uninstall openai` 卸掉旧版,再运行`shell pip install openai`装上新版,才能继续下一步。

接下来,我们需要用新的API语法替换旧的Python代码。在搜索引擎里输入了“python function to prompt chatgpt through api”,找到了OpenAI官网的《开发者快速入门》页面。经过一番阅读和反复试错,我得到了下面的Python代码。函数 `query_openai()`会把提示词通过API发送出去,调用的是“gpt-4.1-mini”模型,并接收返回结果。我没有提供切换模型的选项,但您可以自行修改模型名称。

剩下的Python代码会把返回结果进行如下处理:

1. 在Stata的Results窗口打印出来;

2. 写入当前工作目录下的chatgpt_output.txt文件;

3. 借助Stata的SFI模块把结果传回Stata的本地宏。

第三步对于简单回复效果良好,但在处理包含非标准字符或大量引号的长回复时可能导致错误。您可以在“Macro.setLocal(…”这行开头添加#字符,将该行注释掉以避免错误。

把下面整段代码保存为chatgpt.ado,放到您的个人ado文件夹里(在Stata中键入 `adopath`即可定位到路径),就可以像普通命令一样使用了。

现在我们可以运行chatgpt命令,并在结果窗口查看返回的答复。

我们可以输入`return list`来查看保存在本地宏r(OutputText)中的返回结果。

我们还可以输入`type chatgpt_output.txt`来查看保存在文件chatgpt_output.txt中的返回结果。

成功了!接下来看看能否用类似的思路,为另一个AI模型也写一条Stata命令。

在Stata中调用Claude的命令

Claude是Anthropic推出的大模型,同样提供API。使用前需在其官网注册账号并申请API密钥。拿到密钥后,我搜索“python function to query claude api”,找到了 Claude的《Get started》页面。经过一番阅读和试错,我得到了下面的Python代码。先在Stata命令窗口执行shell pip install anthropic安装anthropic包即可。

您会发现,下面的Python代码与刚才的chatgpt命令几乎一模一样,唯一区别只是调用API的那几行。其余部分完全复用。

把整段代码保存为claude.ado,放到您的个人ado文件夹(用`adopath`查看路径),就能像内置命令一样直接用了。

现在我们可以运行`claude`命令并查看返回结果。

我们可以输入`return list`来查看保存在本地宏`r(OutputText)`中的返回结果。

我们还可以输入`type claude_output.txt`来查看保存在文件**claude_output.txt**中的返回结果。

您有时可能会遇到如下错误提示:

这并不代表您的代码有问题,而是API服务或网络出现了超时/中断。只需稍等片刻,重新运行即可。

在Stata中调用Gemini的命令

Gemini是Google研发的大模型,同样附带API。使用前需在其官网注册账号并申请 API 密钥。拿到密钥后,我搜索 “python function to query gemini api”,找到了 Gemini API的快速入门页面。经过一番阅读和试错,我得到了下面的Python代码。先在Stata命令窗口执行shell pip install -q -U google-genai安装(或升级)google-genai包即可。

同样地,您可以将下面的代码保存为gemini.ado,放到您的个人ado文件夹(用 `adopath` 查看路径),然后就像使用任何其他Stata命令一样直接调用它。

现在我们可以运行`gemini`命令并查看返回结果。

我们可以输入`return list`来查看保存在本地宏`r(OutputText)`中的返回结果。

我们还可以输入`type gemini_output.txt`来查看保存在文件gemini_output.txt中的返回结果。

在Stata中调用Grok的命令

Grok是由xAI推出的热门模型,同样提供API。使用前需在其官网注册并申请API密钥。拿到密钥后,我搜索“python function to query grok api”,找到了《Hitchhiker’s Guide to Grok》页面。照旧,读文档加反复试错,我得到了下面的Python代码。先在Stata命令窗口执行shell pip install xai_sdk安装xai_sdk包即可。

同样的,把整段代码保存为grok.ado,扔进您的个人ado文件夹(`adopath` 可查),就能像普通命令一样直接用了。

现在我们可以运行`grok`命令,并在结果窗口查看返回的答复。

我们可以输入`return list`来查看保存在本地宏`r(OutputText)`中的返回结果。

我们还可以输入`type grok_output.txt`来查看保存在文件grok_output.txt中的返回结果。

结语

希望上面的几个例子能让您相信:自己动手写(或更新)一个可在Stata里调用AI模型的命令,其实并不难。我的示例都非常简单,仅作教学演示,但您完全可以想象出更多玩法:换模型、加选项,甚至处理声音、图像等多模态提示。或许有人会因此受到启发,把写好的命令分享到网上。

如果您是在未来读到这篇帖子,可能会发现API语法又变了,上面的代码已无法运行--这就是使用API的常态:它们总会升级,您得做点功课才能跟上。好在互联网上有大量资源能帮您更新旧代码或编写全新命令。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O9aRW3E_-TECX4HZLrnzleyg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券