提示工程
探索 OpenAI 的 ChatGPT 代码解释器:深入了解其功能

OpenAI 在自然语言处理(NLP)方面的进步以大型语言模型(LLM)的崛起为标志。这些模型支撑着被数百万人使用的产品,包括编程助手 GitHub Copilot 和 Bing 搜索引擎。凭借记忆和整合信息的独特能力,它们在代码和文本生成等任务上树立了前所未有的标杆。
了解 ChatGPT 的代码解释器
要理解 ChatGPT 代码解释器的意义,首先需要了解它是什么,以及它是如何构建的。
ChatGPT 代码解释器利用 ChatGPT 的能力,进一步增强了对多种编程语言代码的理解、解释乃至生成能力。这项功能将 ChatGPT 从文本生成器转变为开发人员的宝贵工具,帮助他们理解代码、调试程序和生成代码。
训练 GPT 编写代码:Codex 方法
GitHub Copilot 和 ChatGPT 的代码解释器 都采用了 OpenAI 开发的 Codex 模型。
Codex 是专门设计的 GPT 语言模型,具备熟练编写 Python 代码的能力。它使用 GitHub 上公开的代码进行训练,并通过 GitHub Copilot 的功能展示其潜力。在根据文档字符串合成程序、以功能正确性衡量表现的测试中,Codex 超过了 GPT-3 和 GPT-J。
一个引人注目的发现是,重复采样能够提高 Codex 的表现。每个问题最多生成 100 个样本时,模型的成功率提高到 70.2%。这表明,可以通过启发式排序选出正确的代码样本,而不必逐一进行完整评估。
为评估模型能力,研究要求它仅依据文档字符串生成独立的 Python 函数,再用单元测试衡量所生成代码的正确性。在包含语言理解、算法和基础数学测试的 164 道原创编程题中,拥有 120 亿参数的 Codex 单次尝试解决了其中的 28.8%。
使用正确实现的独立函数进一步微调模型后,Codex-S 首次尝试的解题成功率提高到 37.7%。实际编程中,反复试错很常见。模拟这种情境,给予 Codex-S 100 次尝试机会后,它成功解决了 77.5% 的问题。
ChatGPT 等生成代码的生成式模型,通常通过将生成样本与参考答案比较来评估。比较可以采用精确匹配,也可以采用 BLEU 分数等相似度指标。但这类匹配指标往往无法体现编程的细微差别。对 BLEU 的一个主要批评是,它不能有效捕捉代码的语义特征。
因此,研究提出了一种更相关的衡量方式:功能正确性。模型生成的代码应当通过指定的一组单元测试。这与标准编程实践一致,因为开发人员经常通过单元测试衡量代码的有效性和准确性。该指标评估的不只是准确程度,还包括所生成代码在功能上是否可用。
pass@k 指标用来衡量功能正确性。它的基本含义是:生成的 k 个代码样本中,只要有一个通过单元测试,就认为该问题已解决。不过,为避免较大的方差,研究使用无偏估计量计算 pass@k,而不是直接采用这一简单形式。
研究使用 HumanEval 数据集评估 ChatGPT 的代码能力。这个数据集由人工编写的 Python 问题组成,每道题都配有单元测试。
执行未知或不可信代码存在风险,因此研究设计了沙箱环境,以安全地测试生成的代码。该环境采用 gVisor 模拟资源,并在主机系统和运行中的代码之间建立隔离屏障。即使模型生成了恶意代码,它也会被限制在沙箱内,无法危害主机或网络。
使用 ChatGPT 代码解释器
OpenAI 的 ChatGPT 经历了多次演进,代码解释器是 GPT-4 模型 中一项引人注目的革新。与传统聊天界面相比,它让用户能够深入处理计算任务,将人机对话与计算过程顺畅地结合起来。
代码解释器就像聊天机器人内置的一台计算机。它提供临时磁盘空间,允许用户上传多种格式的文件,包括 TXT、PDF、JPEG 等常见格式,以及 CPP、PY、SQLite 等较专业的格式。这种广泛的支持增强了它在文档处理、图像操作等任务中的通用性。
代码解释器采用稳健、安全的框架,预装了 300 多个库。沙箱环境在确保安全的同时提供了相当可观的计算能力。收到任务后,它会即时编写 Python 脚本来执行用户请求。例如,要通过 OCR 将图像型 PDF 转换为可搜索的文件,用户只需上传文档,其余工作由 ChatGPT 完成。
上传文件的大小限制也是一个受到关注的问题。当时尚未公布明确的规格,但用户实验表明,系统可以有效处理远大于 100MB 的文件。不论文件大小如何,都需要注意这些文件是临时的,会在聊天会话结束后被丢弃。
代码解释器的亮点不仅在于技术能力,也在于易用性。OpenAI 向 ChatGPT Plus 订阅用户提供这项功能,该订阅包含 GPT-4 模型。因此,这种变革性工具正逐步面向更广泛的用户群体。
标准 ChatGPT 模型与代码解释器的区别在于交互方式:前者主要生成文字回答,后者则理解并执行代码,直接给出结果。这既有助于技术专业人员,也让没有编程知识的人能够完成复杂的计算任务。
ChatGPT 代码解释器的能力可能改变软件开发和数据科学的多个方面:
- 自动生成代码:无论是软件应用还是数据分析脚本,系统都可以根据高层次描述生成基础框架或复杂代码片段,加快开发与数据分析过程。
- 代码审查与数据验证:ChatGPT 等 AI 工具有助于提升软件代码库的质量和安全性。在数据科学领域,它们也可以帮助审查和验证数据处理及转换脚本,确保准确性与效率。
- 辅助数据分析:对于数据科学家,ChatGPT 代码解释器可以生成用于初步数据探索、可视化以及基础统计检验的代码,简化数据分析流程。
如果希望进一步了解 ChatGPT 与提示工程的细节,Unite AI 的《ChatGPT:高级提示工程》提供了全面介绍。
设置 ChatGPT 代码解释器
代码解释器的集成让平台能够解释用户问题,将其作为 Python 代码执行,并在交互式聊天界面中显示结果。用户可以进入 ChatGPT 设置,打开 Beta 功能部分并启用代码解释器。
它的一个特色是处理机制透明。用户提出任务后,平台会展示处理过程中的各个步骤,说明命令是如何被理解和执行的。出于隐私和安全考虑,代码解释器运行时不连接互联网。
探索 ChatGPT 代码解释器的优势
数据可视化与分析
ChatGPT 不局限于传统图表,还提供常规及创新的图形表达方式,帮助用户以最能体现数据价值的形式查看结果。
它不仅能展示原始数据,也擅长处理和整理数据。不过,即使工具功能强大,用户仍应谨慎使用。
代码解释器分析和可视化股价的能力对金融分析师尤其有用。用户可以上传数据集,并用多种格式进行可视化。当个人能够完成复杂的数据分析时,这项功能的价值便显现出来。
下面的演示展示了 ChatGPT 代码解释器如何生成完整的 TSLA 股票分析。
主要结论:
- 特斯拉股价经历了波动,但也表现出韧性,并出现过增长阶段。
- 某些交易日的高成交量表明市场关注度较高,或市场对重要事件作出了反应。
- 年初至今(YTD)的负回报说明,投资者在考虑未来投资时,应同时分析公司内部因素与外部市场环境。
实现计算机视觉与 OCR
人脸检测是计算机视觉的重要功能。本例采用了经典技术:OpenCV 的 Haar 级联分类器。
下图展示了经典 Haar 级联分类器的使用效果。
从图像中提取文字的过程称为光学字符识别(OCR)。本例使用 Tesseract 顺利提取文字,再由 GPT-4 整理结构,提高可读性。
下面的演示展示了 Tesseract(OCR)如何从证书图片中提取文字。
代码解释器也擅长处理视频、音频和图像。通过简单的命令,用户可以完成精细的编辑,例如将 GIF 转为 MP4 并添加指定的改进。只需上传文件,说明想要的修改,便可让工具处理。
在 ChatGPT 代码解释器中使用 Python 外部库
ChatGPT 代码解释器是一个动态编程平台,提供广泛的 Python 库,涵盖从 Seaborn 数据可视化到 Torch 高级机器学习的应用。但它不只是一个固定不变的工具箱。
以下尝试受 Korakot Chaovavanich 分享的这份 ChatGPT 对话启发。
我们从最新的 nltk 发行版开始,将一个 .whl 文件上传到解释器,然后要求 ChatGPT 分析现有包的位置,找到合适的 site-packages 目录。接下来,将 wheel 文件解压到临时位置,再把文件移动到已确定的 site-packages 目录。不过,这一步遇到了问题。
为寻找替代办法,我们提示:“请确保 NLTK 安装在 Python 环境中,并且安装后可以访问。”
ChatGPT 给出了解决方案:将临时目录加入 sys.path,让 Python 能够识别并导入该位置下解压后的 nltk 包中的模块。这一方法奏效,成功完成了 NLTK 的安装。
通过 .whl 文件进行安装的过程体现了巧思与适应能力。尽管起初遇到困难,ChatGPT 代码解释器仍展示了满足编程人员需求的灵活性,为新手和有经验的开发者提供了更顺畅的编程体验。
@DominikPeters 最近的一条推文展示了另一个有趣的例子。Peters 要求 GPT-4 生成一个关于巴黎各区的测验,模型制作出了运行良好的网站。可以在 dominik-peters.de/gpt-arrondissement-quiz/ 亲自体验这个测验。
https://twitter.com/DominikPeters/status/1652630445639467008?s=20
总结
OpenAI 的 ChatGPT 代码解释器为编程人员和非编程人员都带来了变革。无论是帮助开发人员调试,还是轻松生成巴黎各区测验,它处理多种任务的能力都体现了 AI 改善数字体验的巨大潜力。下面是此次深入探索的要点:
了解工具:就像熟悉一位同事一样,了解代码解释器。它建立在由 GPT-4 微调而来的 Codex 之上,支持多种编程语言,可以成为编程过程中的得力伙伴。
拥抱 AI 变革:传统编程实践正在发生重大变化。借助 ChatGPT 代码解释器等 AI 工具,查找错误、生成代码乃至代码审查都可以加快。
不止于代码:解释器的用途不局限于文字或代码。从简单的 TXT 文件到复杂的 PY 脚本,它处理多种文件格式的能力体现了跨领域的实用价值。
持续实验:安装 NLTK 库的探索说明,坚持尝试和灵活应对很重要,这也是代码解释器所体现的特质。遇到障碍时,往往仍有替代办法。
参与 AI 对话:巴黎各区测验这样的实际应用展示了工具的现实价值。尝试它、探索它,让它为项目提供帮助。
上面的视频使用 Gen-2 和 Midjourney 制作。
总而言之,ChatGPT 代码解释器不仅是一种工具,也在改变我们与技术互动的方式。对于创新者和技术爱好者,它展示了广阔的编程可能性。






















