ChatGPT无法取代人类程序员:IEEE35页论文测出困难编码正确率仅为0.66%

ChatGPT无法取代人类程序员:IEEE35页论文测出困难编码正确率仅为0.66% 其成功率从0.66%到89%不等,这主要取决于任务的难度、编程语言等多种因素。论文地址: Tang指出,“AI代码生成一定程度上,可以提升开发效率,自动化软件工程。然而,我们必须认识这类模型优势和不足,以便合理应用”。“通过全面的分析,可以发现ChatGPT生成代码过程中,出现的潜在问题和局限性,进而改进生成技术”。有网友庆幸地发出疑问,所以我还没有被解雇?另一人对此表示,至少不是今天。还有人指出,这项研究是关于GPT-3.5的评估。要是GPT-4早就在编码能力上大幅提升,Claude 3.5更是如此。确实,现在我们有了更好的模型,对于GPT-3.5模型的评估,并没有太大的意义。0.66%-89%,惊人反差率总体而言,ChatGPT在不同编程语言的问题上表现相当不错特别是在尝试解决2021年之前LeetCode上的编码问题时。例如,它能够为简单、中等和困难的问题生成可运行代码,成功率分别约为89%、71%和40%。然而,当涉及到2021年之后的算法问题时,ChatGPT生成正确运行代码的能力受到影响。即使是简单级别的问题,它有时也无法理解问题的含义。比如,ChatGPT在生成“简单”编码问题的可运行代码方面的能力,在2021年后从89%下降到52%。而它在生成“困难”问题的可运行代码方面的能力也在此时间后从40%下降到0.66%。Tang对比表示,“一个合理的假设是,ChatGPT在2021年之前的算法问题上表现更好的原因是这些问题在训练数据集中经常出现”。接下里,具体看看研究者们对ChatGPT进行了哪些方面的评估。实验评估评估的整体流程如图2所示。首先为给定的LeetCode问题或CWE场景构造合适的提示并发送给ChatGPT,让它根据提示和上一轮对话的上下文信息给出响应。之后,研究人员将模型响应中的代码片段提交给LeetCode平台,利用其在线判断功能来检验代码的正确性,CWE漏洞则使用CodeQL进行手动分析。如果测试结果通过,则生成结束,否则就需要利用LeetCode和CodeQL的反馈继续建立新的提示、输入给ChatGPT,再次进行代码生成。如果ChatGPT在对话轮数限制(5轮)之内始终没有生成出通过测试的代码,则认为生成任务失败。功能性正确代码生成ChatGPT生成的代码在功能上是否正确?研究动机:给定提示,ChatGPT生成相应的文本,这种能力可能会提高开发者的生产力。首先去评估ChatGPT在单轮对话中,自动生成功能正确代码的能力。研究方法:- 让ChatGPT阅读问题描述,在单轮对话中生成相应代码。(最大对话轮数设为1)- 使用LeetCode平台上的编程问题作为数据集,截止研究时,有2500个难度不等的问题。- 将LeetCode所有问题分为2021年之前(Bef.problems)和2021年之后(Aft.problems)两类,因为ChatGPT的训练数据截止于2021年。- 考虑到2021年之前的问题可能已存在于ChatGPT的训练集中,这可能使代码生成任务退化为简单的数据库查询(即代码复用)。为了进行全面评估,研究中同时考虑了这两类问题。具体而言,研究人员重点关注LeetCode上的算法问题,因为算法问题是该平台上最重要、最多和最多样化的问题。Bef.problems和Aft.problems的总数分别为1624个和354个。此外,两者的难度分布为难、中、易,比例为1:2:1。在所有Bef.problems中,作者随机抽取了374个问题,其数量与Aft.problems相似,难度分布也与Aft.problems相同。同样,在354个Aft.problems和Bef.problems中,难、中、易问题的数量比例也是1:2:1,与LeetCode平台上所有问题的难度分布一致。此外,研究人员还检查了Bef.problems和Aft.problems之间是否存在显著差异。如果Aft.problems只是Bef.problems的重构,那么ChatGPT很可能可以轻松解决这些问题,这可能会影响实验结果在区分时间段方面的可靠性。论文中,作者总共找到了142对问题。然后,再让2名研究生独立检查这些问题对。通过仔细核对和讨论,结果发现这些相似的问题要么情景相似,但求解目标完全不同;要么情景和条件不同,但可以使用类似的算法(如动态编程)求解。经过仔细的人工分析,作者没有发现在任何情况下,Bef.problems可以很容易地重新表述为Aft.problems。因此,作者认为Aft.problems和Bef.problems之外,对于每个问题,都要求ChatGPT用5种不同的语言生成代码:C、C++、Java、Python3和JavaScript。此外,他们还使用相同的提示模板为每个 < 问题、语言> 对创建了相应的提示。Bef.problems和Aft.problems分别共有1,870和1,770个提示。由于ChatGPT的查询速度有限,研究者将每条提示输入一次,要求生成代码。然后,研究者将解析后的解决方案,提交给LeetCode进行功能正确性判断,并得到提交状态,包括接受、回答错误、编译错误、超过时间限制和运行错误。它们分别对应于A.、W.A.、C.E.、T.L.E.和R.E.。一个问题对应一个唯一的对话,以避免从其他问题触发ChatGPT的推理。实验中,作者以状态率(SR)来评估 ChatGPT 的代码生成能力。其中和分别是根据状态生成的代码片段数和输入的提示数。提示:所设计的提示模板由4个部分组成:它们分别是<Content>、<Examples>、<Template>和<Command>。<Content> 用自然语言描述问题,<Examples> 显示功能正确的代码 <input, output> 对,<Template> 指定生成代码的方法签名(method signature),<Command> 要求用特定语言生成代码。结果:表1和表2显示,LeetCode对五种编程语言在两个时间段、两种形式下的代码生成结果、SR以及相应的相对频率柱形图。由于Python3和JavaScript都是动态编程语言,因此这两列不包含C.E.。从总体结果来看,ChatGPT为Bef.problems生成的功能正确代码的A.率明显高于Aft.problems。具体来说,Bef.problems的五种语言平均正确率(68.41%)比Aft.problems的(20.27%)高出 48.14%。五种语言在不同阶段的代码生成性能差异显著,P值为0.008,效应大小值为1。对于Aft.problems,总体正确率低于25%,其中难、中、易问题的正确率分别为0.66%、13.90%和52.47%。用Holm-Bonferroni校正程序调整的P值和五种语言不同难度之间的效应大小值分别小于0.05和等于1。结果表明,面对Aft.problems,随着问题难度的增加,ChatGPT在功能上正确生成代码的能力明显下降。此外,即使是简单的问题,它也只能正确回答一半。在这五项/四项指标中,W.A.率是所有语言中最高的一项,达到58%。此外,每个W.A.代码片段平均有109个测试用例,而ChatGPT生成的代码只能通过其中的25%。难题、中难题和简单难题的测试用例通过率分别为20.90%、21.03%和38.41%。因此,无论难度如何,生成代码的语义都与相应问题描述的逻辑有很大差异。此外,C.E.率和R.E.率也都达到了16%,而且难题和中难题的C.E.率明显高于简单难题。ChatGPT生成的中难题代码,更容易出现编译和运行时错误。比如,图4中显示生成的函数cmpfunc,在调用前没有声明。语法错误只占这些错误的一小部分(3.7%)。至于T.L.E.率,虽然数值不高(6%),但测试用例的平均通过率为51%,高于W.A.代码片段。T.L.E.问题的难、中、易三个难度级别的测试用例,平均通过率分别为68%、50%和1%(易问题由于其T.L.E.率接近0%,可以忽略不计)。由于T.L.E.代码片段的测试用例通过率是部分的,不过生成的代码中最多还有6%在功能上... PC版: 手机版:

相关推荐

封面图片

研究发现虽然AI辅助编程可以发挥巨大作用 但也会因训练限制而陷入困境

研究发现虽然AI辅助编程可以发挥巨大作用 但也会因训练限制而陷入困境 虽然在某些情况下,人工智能生成器可以生成比人类更好的代码,但分析也揭示了人工智能生成的代码存在一些安全问题。Yutian Tang是格拉斯哥大学的一名讲师,他参与了这项研究。他指出,基于人工智能的代码生成可以在提高生产率和自动化软件开发任务方面提供一些优势,但重要的是要了解这些模型的优势和局限性。"通过进行全面分析,我们可以发现基于 ChatGPT 的代码生成过程中出现的潜在问题和限制......[并]改进生成技术。"Tang 解释说。为了更详细地探讨这些局限性,他的团队试图测试GPT-3.5解决LeetCode 测试平台上五种编程语言中 728 个编程问题的能力:这五种编程语言是:C、C++、Java、JavaScript 和Python。对于 ChatGPT 为什么能在 2021 年之前更好地处理算法问题,一个合理的假设是,这些问题经常出现在训练数据集中。总体而言,ChatGPT 在解决不同编程语言的问题方面表现相当出色,尤其是在尝试解决 2021 年之前 LeetCode 上存在的编程问题时。例如,它能为简单、中等和困难的问题生成功能代码,成功率分别约为 89%、71% 和 40%。"然而,当遇到 2021 年后的算法问题时,ChatGPT 生成功能正确的代码的能力就会受到影响。它有时无法理解问题的含义,即使是简单的问题也是如此,"Tang 指出。例如,在 2021 年之后,ChatGPT 为"简单"编程问题生成功能代码的能力从 89% 降至 52%。而在 2021 年之后,它为"难"问题生成功能代码的能力也从 40% 降至 0.66%。对于 ChatGPT 为什么能在 2021 年之前更好地处理算法问题,一个合理的假设是,这些问题经常出现在训练数据集中。从本质上讲,随着编程技术的发展,ChatGPT 还没有接触到新的问题和解决方案。它缺乏人类的批判性思维能力,只能解决以前遇到过的问题。这也解释了为什么 ChatGPT 在解决旧的编程问题方面比解决新的问题要好得多。因此,ChatGPT可能会生成错误的代码,因为它不理解算法问题的含义。有趣的是,ChatGPT 生成的代码的运行时间和内存开销比人类解决相同 LeetCode 问题的至少 50% 的方案都要小。研究人员还探索了 ChatGPT 在收到 LeetCode 的反馈后修正自身编程错误的能力。他们随机选取了 50 个编程场景,在这些场景中,ChatGPT 最初生成了错误的编程,原因可能是它不了解手头的内容或问题。虽然 ChatGPT 擅长修正编译错误,但它通常不擅长纠正自己的错误。Tang 解释说:"ChatGPT 可能会因为不理解算法问题的含义而生成错误代码,因此这种简单的错误反馈信息是不够的。"研究人员还发现,ChatGPT 生成的代码确实存在相当多的漏洞,比如缺失空值测试,但其中很多都很容易修复。研究结果还显示,用 C 语言生成的代码最为复杂,其次是 C++ 和 Python,其复杂程度与人类编写的代码类似。基于这些结果,使用 ChatGPT 的开发人员必须提供更多信息,以帮助 ChatGPT 更好地了解问题或避免漏洞。"例如,在遇到比较复杂的编程问题时,开发人员可以尽可能提供相关知识,并在提示中告诉 ChatGPT 哪些是需要注意的潜在漏洞,"Tang 说。 ... PC版: 手机版:

封面图片

ChatGPT 的编程问题正确率比抛硬币还低

ChatGPT 的编程问题正确率比抛硬币还低 普渡大学的一项研究显示,OpenAI 的聊天机器人 ChatGPT 在回答软件编程问题时,有一半以上的时间会回答错误。尽管如此,该机器人的说服力足以骗过三分之一的参与者。 普渡大学团队分析了 ChatGPT 对 517 个 Stack Overflow 问题的回答,以评估 ChatGPT 回答的正确性、一致性、全面性和简洁性。美国学者还对答案进行了语言和情感分析,并就模型生成的结果询问了十几名志愿参与者。 “我们的分析表明,52% 的 ChatGPT 答案是错误的,77% 是冗长的,”该团队的论文总结道。“尽管如此,ChatGPT 答案仍有 39.34% 的时间因其全面性和清晰的语言风格而受到青睐。” “在研究过程中,我们观察到,只有当 ChatGPT 答案中的错误很明显时,用户才能识别出错误,”论文中说到。“然而,当错误不容易验证或需要外部 IDE 或文档时,用户往往无法识别错误或低估答案的错误程度。” 论文称,即使答案存在明显错误,12 名参与者中仍有两人将答案标记为首选。 、

封面图片

【Ripple CTO:ChatGPT 的答案只是看起来正确】

【Ripple CTO:ChatGPT 的答案只是看起来正确】 Ripple首席技术官David Schwartz在社交媒体上发文称,人工智能驱动的聊天机器人ChatGPT和生成式AI程序背后的类似大型语言模型 (LLM) 提供了不真实的答案,这些答案只是看起来正确,他认为ChatGPT的工作是为用户提供看起来与此类问题通常获得的输出尽可能相似的输出。在与现实世界中的实际事物相对应的意义上,是否真的“真实”根本不是一个考虑因素。此前著名律师史蒂夫弗拉德克 (Steve Vladeck) 分享了ChatGPT生成伪造法庭案件文件的例子并建议永远不要使用ChatGPT或类似工具进行法律研究。

封面图片

【Stack Overflow 宣布临时规则:禁止 ChatGPT】Stack Overflow 称,在使用 ChatGPT 生

【Stack Overflow 宣布临时规则:禁止 ChatGPT】Stack Overflow 称,在使用 ChatGPT 生成的文本回复的问题中,其正确率非常低,而这些内容对整个网站以及寻求正确答案的用户来说是有害的。 #抽屉IT

封面图片

程序员的 AI 启蒙课:ChatGPT 让你 1 人顶 3 人 - 带源码课件

程序员的 AI 启蒙课:ChatGPT 让你 1 人顶 3 人 - 带源码课件 描述:使用 ChatGPT + Copilot 快速开发 Vue3 仿简书项目,90% 代码由 AI 生成,效率质量双提升。 链接: 大小:NG 标签:#学习 #知识 #课程 #资源 来自:雷锋 频道:@Aliyundrive_Share_Channel 群组:@alyd_g 投稿:@AliYunPanBot

封面图片

ChatGPT 生成的大部分代码是不安全的

ChatGPT 生成的大部分代码是不安全的 加拿大魁北克大学的研究人员在 arXiv 上发表论文,分析了 ChatGPT 所生成代码的安全性。研究人员表示结果令他们倍感担忧。ChatGPT 生成的部分代码甚至达不到最低安全标志,而当你问它时它还知道代码是不安全的。研究人员让 ChatGPT 使用 C、C++、Python 和 Java 四种语言生成了 21 个程序和脚本。研究人员称,ChatGPT 似乎知道它生成的代码是不安全的,但就是不说,除非你问它。ChatGPT 拒绝生成攻击性代码,但却会生成有漏洞的代码,这在道德上是不一致的。来源 , 来自:雷锋 频道:@kejiqu 群组:@kejiquchat 投稿:@kejiqubot

🔍 发送关键词来寻找群组、频道或视频。

启动SOSO机器人