AI 在回答问题和编写代码方面已经变得相当出色。在一项新的研究课题中,ChatGPT 尝试查找示例代码中的 bug 并给出修复建议。其表现远超现有程序,成功修复了 40 个 bug 中的 31 个。AI 开始显现出强大的能力,一些人又开始担心程序员会失业了,在软件开发和编程中的历史中,这又是一次“狼来了”的故事吗?
ChatGPT 现可查找并修复代码中的 bug
最近几周,AI 新贵 ChatGPT 迎来了一系列评测挑战。一项最新研究来自约翰内斯古腾堡大学和伦敦大学学院的计算机科学研究人员,他们发现 ChatGPT 能够从示例代码中发现错误并加以修复,且整体表现优于现有同类程序。
研究人员将这 40 段 bug 代码提交至四种不同的代码修复系统,分别为 ChatGPT、Codex、CoCoNut 和 Standard APR。在 ChatGPT 上,他们只需询问“这段代码有什么问题?”再将代码内容复制粘贴至聊天框内即可。在首轮测试中,ChatGPT 的表现跟其他程序相差不大。ChatGPT 解决了其中 19 个问题,Codex 解决了 21 个,CoCoNut 解决了 19 个,Standard APR 解决了 7 个。研究人员发现 ChatGPT 给出的答案与 Codex 最为相似,“这倒是正常,毕竟 ChatGPT 和 Codex 来自同一语言模型家族。”
但在收到首批答案之后,ChatGPT 的强大能力开始表现出来,随后势如破竹般解决了 31 个问题,轻松超越了其他只能提供静态答案的同类工具。
研究人员在报告中写道,“ChatGPT 的一大核心优势,在于我们会在对话中直接交互,更详细地描述需求。我们发现,对于大部分请求,ChatGPT 会要求提供关于问题和 bug 的更多细节信息。在向 ChatGPT 提供提示信息之后,其成功率得以进一步提高,修复了全部 40 个 bug 中的 31 个,成绩可谓一骑绝尘。”
他们还发现,ChatGPT 能够快速解决的某些问题,在其他程序上往往需要反复拉扯。“ChatGPT 在修复 bug 时似乎表现出较高的不一致性。但对最终用户来说,只要多执行几次应该就能得到有价值的结果。”
例如,当研究人员提交下图问题时,他们预期的答案是将 n^=n-1 替换为 n&=n-1。但 ChatGPT 给出的回应是“我无法判断程序中是否存在 bug,请提供关于预期行为的更多信息。”经过研究人员的提示,ChatGPT 在第三次回复中成功发现了问题。
但在我们尝试将同样的问题输入给 ChatGPT 时,它的回答却截然不同。ChatGPT 这次并未要求提供预期行为,而是在猜测我们想要达成怎样的效果。ChatGPT 一直在根据用户输入进行学习,它似乎已经理解了这段代码的用途——也许就是从当初研究人员们的提示中学习而来。我们的验证交流与研究报告不同,而且下一次再试可能也不相同。
目前,帮助软件工程师查找和修复 bug 的产业已经汇聚起 6 亿美元的体量。此次研究的成功,也许将重新定义这块可观的业务市场。Sentry 等流行平台已经成为软件团队的标配工具,通过发布问题报告和提供修复建议,大大增强开发者们编写高质量代码的能力。
OpenAI 召集数百程序员,教 AI 写代码
无论是 bug 修复软件开发商还是软件工程师自己,显然都注意到了这波堪称历史转折点的趋势。ChatGPT 的所有者 OpenAI 也在不断增强 AI 的编程能力,根据 Semafor 的一份报告,OpenAI 在过去 6 个月中加大招聘力度,已经在全球范围内悄悄聘请了上千名承包商来培训其 AI 学习软件工程。
在这近 1000 名承包商中,约 60% 的人负责“数据标记”,即创建大量图像、音频剪辑和其他信息,用于训练 AI 工具或自动驾驶系统;另外 40% 则是程序员,主要负责为 OpenAI 的模型创建数据以学习软件工程任务。
此前,OpenAI 从 GitHub 上抓取代码来训练其模型,而且 OpenAI 于 2021 年 8 月推出的产品 Codex,已经可以实现将自然语言转换为工作代码,现在该公司的招聘热潮表明它正在进一步推进该技术,甚至有可能为一些程序员岗位创造出一个替代工具。
Semafor 采访了南美的一位工程师,他表示自己参加了 OpenAI 的面试,该过程包含了五小时的无偿编码测试。这个测试有两个部分组成:对于一个给出的编码问题,OpenAI 要求他用书面英语解释他将如何处理这个问题,并给出一个具体解决方案;查找 AI 代码中的错误并提供有关如何修复错误的解释。这位工程师告诉 Semafor,他认为公司希望将人类的思维过程输入到其人工智能技术中。
事实上,据 Insider 最近的报道,一些亚马逊员工已经开始使用 ChatGPT 来帮助编码。亚马逊内部的 Slack 消息显示,ChatGPT 已经被亚马逊用于许多不同的工作职能中,包括回答面试问题、编写软件代码和创建培训文档等。
一名员工在 Slack 上表示,亚马逊 Amazon Web Services(AWS)云部门已经成立了一个小型工作组,以更好地了解人工智能对其业务的影响。通过测试,该团队发现 ChatGPT 在回答 AWS 客户支持问题方面“做得非常好”。此外,人工智能工具在创建培训文档方面也“非常出色”,在企业战略问题方面“非常强大”。另外,这名员工还在 Slack 上称,ChatGPT 在为 AWS Aurora 数据库工程师编写故障排除指南和回答“困难的”支持问题方面也“非常出色”,它还能够“弄清客户的公司目标”。
现在还取代不了程序员,那将来呢?
随着数百名程序员齐心协力“教”模型如何编写基本代码,ChatGPT 背后的技术可能会朝着一种新的软件开发方向发展,就像重型设备对建筑行业一样,给软件行业带来变革意义。
而且自从 ChatGPT 能力开始显现后,“程序员要失业了”、“取代程序员”之类的声音已经不绝于耳。大多数人对此嗤之以鼻,毕竟过去几十年来,我们听够了类似的声音,云服务、无服务器计算、低代码和无代码......每个技术浪潮的到来,都有人喊出“程序员要被替代了!”
但还是有相当“激进”的声音,认为这次“替代程序员”并不是又一个“狼来了的故事”。
今年一月份的 ACM 通讯发表了一篇名为“编程的终结”的文章,预测在人工智能驱动的未来“编程将过时”。作者 Matt Welsh 是 Fixie.ai 的首席执行官兼联合创始人,他曾是哈佛大学计算机科学教授、谷歌工程总监、苹果工程主管。
我相信“编写程序”的传统想法正在走向灭绝,事实上,除了非常专业的应用程序之外,我们所知道的大多数软件将被经过训练而不是编程的人工智能系统所取代。在需要“简单”程序的情况下(毕竟,并非所有内容都需要在 GPU 集群上运行数千亿个参数的模型),这些程序本身将由 AI 生成,而不是手动编码。
未来的工程师只需敲击几下键盘,就能启动一个包含四亿亿亿参数的模型实例,这个模型已经对人类知识的全部范围(或是部分)进行了编码,并随时准备执行机器要求的任何任务。让机器做自己想做的事,大部分脑力工作将是提出正确的示例、正确的训练数据和正确的方法来评估训练过程。
我认为计算机科学作为一个领域正处于一个相当大的动荡之中,我们中很少有人真正做好了准备。
“我认为现在的争论主要围绕这些人工智能模型将在多大程度上彻底改变软件行业,”Welsh 在一个视频采访中说,“这更多是一个程度的问题,而不是它到底会不会发生……”
我们认为,现在 ChatGPT 取代程序员是不太可能的,但是也许下一代开发人员必须习惯人工智能,毕竟让 AI 帮助我们编程就在不远的未来。
参考链接:
https://www.pcmag.com/news/watch-out-software-engineers-chatgpt-is-now-finding-fixing-bugs-in-code
https://cacm.acm.org/magazines/2023/1/267976-the-end-of-programming/fulltext
评论