买了 ChatGPT 会员却没用过 “代码解释器”?亏了,快看这三个案例

517 阅读7分钟

ChatGPT 的付费会员不只是能调用 GPT-4 这么简单,还有很多宝藏功能有待探索。如果你还不了解 “代码解释器”,不妨来看看这三个真实案例,肯定对你有所启发。

什么是 “代码解释器”

功能简介

“代码解释器” 是 ChatGPT 在发布 GPT-4 之后不久,面向付费用户推出的一项高级功能。

这项功能利用了 GPT-4 的代码生成能力,根据当前任务自动编写 Python 代码并执行,最终将结果返回给用户。更神奇的是,即使生成的代码有错误,它也可以根据代码运行的报错信息来改进代码,通过多次迭代来完成任务。

在每次调用代码解释器时,ChatGPT 会创建一个可运行 Python 代码的沙箱环境。用户上传的文档也会保存在这个沙箱环境中,因此代码解释器可以访问这些文件,它在沙箱中生成的文件也可以提供链接给用户下载。

如今这项功能已经融入了 OpenAI 产品的方方面面,包括 ChatGPT、GPTs、Assistants API 等等。在付费版的 ChatGPT 中,它也是默认开启的,不需要额外激活。我们只需要在对话中描述需求,ChatGPT 就会在合适的时机调用代码解释器来完成任务。

“高级数据分析”

由于代码解释器具有执行 Python 代码、处理用户上传文件、生成图表的能力,因此它在数据分析领域有着广泛的应用,比如数据清洗、数据可视化、数据建模等等。

analyzing.png

有段时间,这项功能就曾改名为 “高级数据分析(Advanced Data Analytics)”,可见 OpenAI 对它信心满满。

但是,如果你既不是数据分析师,也不是程序员,那这项功能是不是就没有用武之地了呢?其实我们不要被它的名字迷惑了,把它想像成一个 “程序员员工”,让它帮你干活就可以了。我们来看第一个案例吧!

案例一:文档格式转换

我们先从一个简单的案例开始热热身。某天,魔法哥从网上下载了一个 docx 文档,需要转换为 Markdown 格式,而手边又没有合适的编辑软件,此时就可以让 ChatGPT 的代码解释器来试试身手。

我们进入 ChatGPT 的对话界面,把文件传上去,然后让它转换格式:

case-1.png

稍等片刻,ChatGPT 就完成任务了。我们点击它提供的链接,就可以下载转换好的文件了。

我们点开 “Finished analyzing” 折叠标记,可以看到代码解释器生成代码和执行代码的整个过程:

case-1-code.png

这个例子很好地演示了 Python 的强大生态,代码解释器可以引入丰富的 Python 包,帮助我们完成各种任务。

案例二:批量处理文件

你平常有没有遇到批量处理文件的场景?比如这一天,魔法哥用某个软件抓取了一个网页上的所有图片,但图片的存储目录比较混乱,需要整理。

case-2-1-file-dir.png

当前图片文件的目录结构是这样的:

├── aaaaaa
│   └── index.html
├── bbbbbb
│   └── index.html
├── cccccc
│   └── index.html
└── ...

我们期望的整理效果是这样的:

  • 这些子目录中的 index.html 其实都是 PNG 图片,只不过抓取软件在保存文件时把它们当作了 HTML 文件。我们需要纠正它们的扩展名。
  • 为方便浏览,我们让所有图片文件都扁平地存放在同一个目录下,文件名取它原先所在的目录名即可。

也就是说,整理完之后,文件目录结构应该是这样的:

├── aaaaaa.png
├── bbbbbb.png
├── cccccc.png
└── ...

如果写一段 Node.js 脚本或 Shell 脚本,当然也可以完成这个任务。不过这次魔法哥想偷个懒,让代码解释器来帮忙。

我们把整个目录打个包,上传到 ChatGPT,然后把我们的要求告诉它:

case-2-2-chat.png

如你所见,只要把需求描述清楚,ChatGPT 就可以生成合适的代码来完成文件的批量操作。在上面的截图中,我们还可以看到代码解释器的第一次尝试并不成功,但它会根据错误信息改进代码;而第二次尝试就圆满完成了。

案例三:拯救大模型的短板

我们都知道,大型语言模型是个 “偏科生”,在数学计算方面并不擅长。ChatGPT 在回答数学问题时,往往会掉链子。

比如某天魔法哥向 ChatGPT 提了这个问题:

case-3-1.png

不出意外地出意外了,ChatGPT 很漂亮地列出了算式,但最后一步的计算结果似乎不太对劲。

这时,我们可以召唤出代码解释器来救场。于是,魔法哥追加了一句 “请使用你的代码能力解答这个问题”:

case-3-2.png

接下来代码解释器生成了一段代码,然后执行,最终得到了正确的计算结果。我们可以看到,代码解释器可以很好地弥补大模型在数学计算方面的不足,给出令人放心的答案。

补充一:代码解释器在 GPTs 中的应用

如果你经常需要调用代码解释器来处理某个重复的任务,那不妨把这项工作封装成一个 GPTs 机器人,以便重复调用。比如魔法哥经常需要处理上面的 “案例二”,于是就定制了一个名为 “图片整理” 的 GPTs。

在定制这个 GPTs 的时候,我们不仅要把任务描述填入 GPTs 的 “Instructions(指令)” 输入框,还要记得在 “Capabilities(能力)” 列表中勾选 “Code Interpreter”,为 GPTs 启用代码解释器的能力。

gpts-cap.png

除了代码解释器之外,GPTs 还集成了外挂知识库、网页浏览、绘图、外部 API 等五大工具。关于 GPTs 的开发技巧,请关注魔法哥的后续文章。

补充二:代码解释器的局限

代码解释器是一个强大的工具,但它也需要消耗可观的计算资源,它的运行环境也不得不设置一些安全限制。因此,这里也跟大家提醒一下代码解释器的主要局限:

  • 上传文件的体积限制。用户最多可以上传 512MB 的文件。如果我们想要处理的文件体积刚好超过了这个限制,可以试试以压缩包的形式来上传。
  • 仅支持 Python 语言。考虑到 Python 强大的生态和表现力,这个限制并不算太大。
  • 不可引用任意的 Python 包。这是一项安全措施,代码解释器的运行环境只预装了那些最常用的、经过 OpenAI 验证的 Python 包。不过这些预装包已经达到数百个之多,因此这个局限也算不上很严重。
  • 沙箱的存活时间有限制。可以想像,ChatGPT 为用户创建的沙箱环境不可能长时间保留。在对话闲置一个小时之后,沙箱环境就会销毁,沙箱中的文件也就无法再次下载。我们点击过期的文件会看到 “Code interpreter session expired” 的错误提示,因此大家记得及时下载哈。

小结

ChatGPT 的代码解释器是一个强大而易用的工具,从现在开始,当你遇到一个新问题,不妨也试试能不能用上代码解释器,看它能为你带来什么惊喜吧!

魔法哥最近一年都在做 AI 领域的研发和探索,会陆续跟大家分享心得。新朋友请点关注,下次更新不迷路。


🔥 推荐阅读

AI 应用开发指南:

ChatGPT 高级技巧:

AI 资讯与评述:


© Creative Commons BY-NC-ND 4.0