当前位置:

首页 > 业界资讯 > GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

语言建模的新时代已经到来,大型语言模型(LLM)能力非凡,不仅能理解自然语言,甚至能根据用户需求生成定制代码。因此,越来越多的软件工程师选择查询大型语言模型来解答编程问题,比如使用API来生成代码段或检测代码中的bug。相比于搜索StackOverflow等网络编程论坛,大型语言模型可为编程问题检索到更加合适的定制版答案。LLM的速度很快,但这也掩盖了其代码生成中的潜在风险。从软件工程的角度看,即便已经有许多研究成果问世(涉及避免句法错误以及提升对生成代码的语义理解等方面),LLM的生成代码能力的稳健性和

语言建模的新时代已经到来,大型语言模型(LLM)能力非凡,不仅能理解自然语言,甚至能根据用户需求生成定制代码。

因此,越来越多的软件工程师选择查询大型语言模型来解答编程问题,比如使用 API 来生成代码段或检测代码中的 bug。相比于搜索 Stack Overflow 等网络编程论坛,大型语言模型可为编程问题检索到更加合适的定制版答案。

LLM 的速度很快,但这也掩盖了其代码生成中的潜在风险。从软件工程的角度看,即便已经有许多研究成果问世(涉及避免句法错误以及提升对生成代码的语义理解等方面),LLM 的生成代码能力的稳健性和可靠性还没有得到透彻的研究。

不同于网络编程论坛的情况,LLM 生成的代码没有得到社区同行的审查,因此可能出现 API 误用问题,例如在文件读取和变量索引中缺少边界检查、缺少文件 I/O 关闭、交易完成失败等。即使生成的代码样本可以执行或者能正确执行功能,误用也可能导致产品出现严重的潜在风险,比如内存泄漏、程序崩溃、垃圾数据收集失败等。

更糟糕的是,提出这些问题的程序员还是最容易受到打击的人,因为他们更有可能是 API 新手,无法辨别生成的代码段中的潜在问题。

下图展示了一个软件工程师向 LLM 询问编程问题的示例,可以看到 Llama-2 能给出句法正确、功能正确、语法对齐的代码段,但却存在不够稳健可靠的问题,因为其中没有考虑到文件已存在或文件夹不存在的情况。

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

因此,在评估大型语言模型的代码生成能力时,必须考虑代码的可靠性。

在评估大型语言模型的代码生成能力方面,大多数现有基准关注的重点是所生成代码的执行结果的功能正确性,这意味着只要生成的代码能够满足用户的功能需求,用户就能接受。

但在软件开发领域,代码光是能正确执行可不够。软件工程师需要的是代码能正确且可靠地使用新 API,长期运行也不会有潜在风险。

此外,当前大多数编程问题的范围都与软件工程相距甚远。其数据源大都是网上的编程挑战赛网络,比如 Codeforces、Kattis、Leetcode 等。尽管成就非凡,但这还不足以为实际应用场景的软件开发工作提供帮助。

为此,加州大学圣迭戈分校的 Li Zhong 和 Zilong Wang 提出了 RobustAPI,该框架可以评估大型语言模型生成的代码的可靠性和稳健性,其中包含一个编程问题数据集和一个使用抽象语法树(AST)的评估器。

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

论文地址:https://arxiv.org/pdf/2308.10335.pdf

其中数据集的目标是创建一个接近真实软件开发的评估设置。为此研究者从 Stack Overflow 收集了有关 Java 的代表性问题。Java 是最流行的编程语言之一,得益于其一次编写到处运行(WORA)的特性,被广泛用于软件开发。

对于每一个问题,研究者都提供了详细的描述和相关的 Java API。他们还设计了一套用于调用大型语言模型来生成代码段及相应解释的模板。

研究者还提供了一个评估器,其能使用抽象语法树(AST)分析所生成的代码段并将它们与预期的 API 使用模式进行比较。

研究者也按照 Zhang et al. (2018) 的方法将 AI 使用模式形式化地表示成了结构化的调用序列。这种结构化的调用序列能表明可以如何正确使用这些 API 来消除潜在的系统风险。从软件工程的角度看,任何违反这种结构化调用序列的现象都将被视为失败。

研究者从 Stack Overflow 收集了 1208 个真实问题,其中涉及 24 个代表性的 Java API。研究者也进行了实验评估,其中不仅实验了闭源的语言模型(GPT-3.5 和 GPT-4),也实验了开源的语言模型(Llama-2 和 Vicuna-1.5)。对于模型的超参数设置,他们使用了默认设置,未进行进一步超参数调节。他们也设计了两种实验形式:零样本(zero-shot)和单样本(one-shot),即分别在 prompt 中提供零个或一个演示样本。

研究者全面分析了 LLM 生成的代码并研究了常见的 API 误用情况。他们希望借此让人们了解 LLM 在生成代码时误用 API 的重要问题,同时这项研究也能为 LLM 的评估提供一个新的维度,而不只是常用的功能正确性。此外数据集和评估器还将开源。

本论文的贡献总结如下:

  • 提出了一种用于评估 LLM 代码生成的可靠性和稳健性的新基准:RobustAPI。 
  • 提供了一个完善的评估框架,其中包括一个由 Stack Overflow 问题构成的数据集和一个使用 AST 的 API 使用情况检查器。研究者基于此框架分析了常用 LLM 的性能表现,包括 GPT-3.5、GPT-4、Llama-2 和 Vicuna-1.5。 
  • 全面分析了 LLM 生成代码的表现。他们总结了每种模型常见的 API 误用情况,并指出了可供未来研究改进的方向。

方法概览

RobustAPI 是一个用于全面评估 LLM 生成代码的可靠性和稳健性的框架。

下面将描述构建该数据集时的数据收集过程和 prompt 生成过程,然后将给出 RobustAPI 中评估的 API 误用模式并讨论误用的潜在后果,最后还将给出用 RobustAPI 检测 API 误用情况的静态分析,其中使用的方法是抽象语法树。

结果发现,相比于关键词匹配等基于规则的方法,新方法能以更高的准确度评估 LLM 生成代码的 API 误用情况。

数据收集

为了利用软件工程领域的已有研究成果,研究者构建 RobustAPI 时立足的起点是来自 ExampleCheck (Zhang et al. 2018) 的数据集。ExampleCheck 是用于研究网络问答论坛中常见 Java API 误用情况的框架。

研究者从该数据集选取了 23 个常见的 Java API,如下表 1 所示。这 23 个 API 覆盖 5 个领域,包括字符串处理、数据结构、移动端开发、加密和数据库操作。

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

prompt 生成

RobustAPI 还包含一个 prompt 模板,可使用数据集中的样本来填充。然后研究者收集 LLM 对该 prompt 的响应,再通过一个 API 使用检查器来评估其代码可靠性。

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

在该 prompt 中,首先会给出任务介绍和所需的响应格式。然后,如果执行的实验是少样本实验,则还会给出少样本的演示。下面是一个示例:

演示样本

演示样本已被证明有助于 LLM 理解自然语言。为了透彻地分析 LLM 的代码生成能力,研究者设计了两种少样本设置:单样本无关演示和单样本相关演示。

在单样本无关演示设置中,为 LLM 提供的演示示例使用的 API 是无关的。研究者假设这种演示示例能消除生成代码中句法错误。RobustAPI 中使用的无关示例如下:

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

在单样本相关演示设置中,为 LLM 提供的演示示例使用的 API 与给定问题所用的 API 一样。这种示例包含一对问题和答案。这种演示示例中的问题并不包含在测试数据集中,而且研究者人工修正了其中的答案以确保其中不存在 API 误用情况并且答案和问题的语义很好地对齐了。

 Java API 误用

研究者为 RobustAPI 中的 23 个 API 总结了 40 条 API 规则,它们在这些 API 的文档中得到了验证。这些规则包括:

(1) API 的守卫条件,这应该在 API 调用之前进行检查。举个例子,在 File.createNewFile () 之前应检查 File.exists () 的结果。

(2) 所要求的 API 调用序列,即应当以一定顺序调用 API。比如,应在 File.write () 之后调用 close ()。

(3) API 的控制结构。比如,应把 SimpleDateFormat.parse () 包含在 try-catch 结构中。

下面给出一个例子:

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

检测 API 误用情况

为了评估代码中 API 使用的正确性,RobustAPI 可根据 API 使用规则检测 API 误用情况,其做法是从代码段中提取调用结果和控制结构,如下图 2 所示。

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

代码检查器首先会检查生成的代码段,看这段代码是某个方法中的一段代码,还是来自某个类的一个方法,以便它可以封装该代码段并使用其构建抽象语法树(AST)。

然后该检查器会遍历该 AST 并按顺序记录所有的方法调用和控制结构,这会生成一个调用序列。

接下来,该检查器会将这个调用序列与 API 使用规则进行比较。它会推断每个方法调用的实例类型,并将该类型和方法用作键来检索相应的 API 使用规则。

最后,该检查器会计算这个调用序列和 API 使用规则之间的最长公共序列。

如果这个调用序列和预期的 API 使用规则不匹配,则该检查器就报告出现了 API 误用。

 实验结果

研究者在 4 个 LLM 上评估了 RobustAPI:GPT-3.5、GPT-4、 Llama-2 和 Vicuna-1.5 。

实验中所使用的评估指标包括:API 误用率、可执行样本百分比、总体 API 误用百分比。

实验的目的是试图回答以下问题:

  • 问题 1:这些 LLM 在解答真实世界编程问题时的 API 误用率是多少?
  • 问题 2:无关的演示样本会对结果产生什么样的影响?
  • 问题 3:正确的 API 使用示例能降低 API 误用率吗?
  • 问题 4:为什么 LLM 生成的代码无法通过 API 使用检查?

具体的实验过程请参阅原论文,这里给出研究者得到的 5 个发现:

发现 1:当前最佳的大型语言模型对真实世界编程问题的答案普遍存在 API 误用问题。

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

发现 2:在所有包含可执行代码的 LLM 答案中,57-70% 的代码段都有 API 误用问题,这可能给生产带来严重后果。

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

发现 3:无关样本示例无助于降低 API 误用率,但会触发更有效的答案,这能有效地用于对模型性能的基准评测。

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

发现 4:某些 LLM 可以学习正确的使用示例,这能降低 API 误用率。

发现 5:GPT-4 包含可执行代码的答案数量最多。对于基准 API,不同的 LLM 的误用率趋势也不同。

此外,研究者还在论文中展示了一个基于 GPT-3.5 的典型案例:模型在不同的实验设置下有不同的反应。

任务是要求模型帮助使用 PrintWriter.write API 将字符串写入一个文件。

GPT-4:我写的代码你敢用吗?研究表明其API误用率超过62%

在零样本和单样本无关演示设置下,答案稍有不同,但都出现了 API 误用问题 —— 没有考虑例外情况。在给模型提供了正确的 API 使用示例后,模型学会了如何使用 API 并给出了可靠的代码。

更多细节请参阅原论文。

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
业界资讯 模型
相关文章 更多
特斯拉FSD新增滑板识别模型
特斯拉FSD新增滑板识别模型

近日,有汽车领域博主爆料,特斯拉的FSD(完全自动驾驶)辅助系统将迎来一次重要升级,或将实现更真实的环境场景还原。在最新曝光的软件代码中,发现了大量新增的渲染模型,涵盖多种车辆与行人类型。这些新增模型包括救护车、消防车、垃圾清运车、校车、半挂式卡车、高尔夫球车、骑电动滑板车的行人、使用轮椅的行人、玩滑板的行人、推婴儿车的行人,以及道路清扫车、三轮车、拖车、火车和有轨电车等。这一系列高精度建模意味着FSD系统将能更准确识别并响应复杂交通参与者的行为。据CNMO掌握的消息,日本方面已为特斯拉FSD系统的落地扫

阿里开源14B电影级视频模型,实测可玩
阿里开源14B电影级视频模型,实测可玩

AI视频生成正迎来属于“通义”的高光时刻!就在昨晚,阿里巴巴悄然推出了一款由音频驱动的14B视频大模型——Wan2.2-S2V。只需上传一张静态图片和一段音频,就能生成出面部表情生动、口型精准匹配、肢体动作流畅自然的电影级数字人视频,效果惊艳。实际效果展示如下:△来自@AIMIRAI46487更令人振奋的是,这款新模型一经发布便全面开源,现在所有人都可以免费在通义万相官网体验使用。据官方介绍,Wan2.2-S2V的核心优势包括:支持最长分钟级的单次视频生成,画面稳定且具有一致性;具备影院级别的音

华为盘古 Ultra MoE 模型发布
华为盘古 Ultra MoE 模型发布

5月30日,华为推出了全新的AI模型——盘古UltraMoE,该模型的参数量达到了7180亿。作为一款接近万亿参数的MoE(MixtureofExperts)模型,它在整个训练过程中完全基于华为的昇腾AI平台完成,标志着华为在超大规模模型训练方面取得了重要进展。盘古UltraMoE的成功训练离不开盘古团队研发的一系列创新技术。例如,Depth-ScaledSandwich-Norm(DSSN)稳定架构的引入,显著改善了超大规模模型训练期间出现的梯度异常及

SOTA大模型加密数据评测:Qwen3仅破10%
SOTA大模型加密数据评测:Qwen3仅破10%

大语言模型面对加密数据,即便最新的Qwen3也会感到压力!尽管当下各类推理模型在多种基准测试中表现优异,但在密码学这样对逻辑严谨性和细节准确性要求极高的专业领域,模型的推理能力还有待深入挖掘。密码学不仅要求模型具备高级数学运算能力和严密的逻辑推理链,还需要其能够精准辨识复杂加密模式中的潜在规律;成功解密要求模型拥有极强的综合推理能力。上海AILab等联合推出的CipherBank测评,使用大量真实隐私场景数据和多种密码算法,严苛挑战当前最先进的大模型。CipherBank的测评结果显示,目前的大语言模型

每2秒解一道高数题!华为揭秘万亿MoE训练系统全流程
每2秒解一道高数题!华为揭秘万亿MoE训练系统全流程

现在,请大家一起来数一下"1"、"2"。OK,仅仅2秒的时间,一个接近万亿规模的MoE大模型就已经掌握了如何解答一道高等数学难题的方法!而且呢,这个大模型还是完全依靠国产设备进行训练的,整个流程都体现了浓浓的“国产”特色。这就是华为借助"昇腾+PanguUltraMoE"这一组合实现的成果——不仅达成了国产算力与国产模型在全流程上的自主可控训练闭环,还在集群训练系统的性能方面达到了行业顶尖水平。有多顶尖?来看一组数据:预训练阶段:昇腾Atlas800TA2万卡集群的MFU提升

美团推出首个语音GUI智能体,端到端语音训练更优
美团推出首个语音GUI智能体,端到端语音训练更优

只需动动嘴,就能操控GUI代理?由美团与浙江大学联合推出的GUIRoboTron-Speech——让你彻底解放双手,直接对设备“发号施令”。这是首个可以直接通过语音指令和屏幕截图进行端到端(End-to-End)决策的自主GUI智能体,致力于为用户提供更自然、高效且无障碍的人机交互方式。从文本到语音,智能代理的新一轮进化目前,基于大语言模型(LLMs)的自主GUI智能体已经能够通过文本指令自动完成跨应用、多步骤的复杂操作,显著提升用户效率。然而,这种依赖文本输入的方式在某些场景中存在明显局限

通义千问新技能!用“扮演”方式提升推理能力,不再依赖搜索API
通义千问新技能!用“扮演”方式提升推理能力,不再依赖搜索API

强化学习(RL)结合真实搜索引擎可以显著提升大模型的检索和推理能力。然而,这一方法面临两大挑战:搜索引擎返回的文档质量不稳定,导致训练过程中的噪音和不稳定性;RL训练需要频繁部署,产生大量API开销,限制了可扩展性。针对这些问题,阿里通义实验室推出了开源解决方案ZeroSearch,这是一个无需与真实搜索引擎交互的强化学习框架。实验表明,ZeroSearch只需使用3B参数的LLM作为检索模块,就能有效提升搜索能力,并大幅节省API成本。ZeroSearch让LLM实现自给自足

Siri等明年!苹果WWDC25给AI交底:画小饼,继续熬
Siri等明年!苹果WWDC25给AI交底:画小饼,继续熬

不求速胜,熬吧。

第二代Ameca亮相!对答如流,表情逼真,多语种交流
第二代Ameca亮相!对答如流,表情逼真,多语种交流

编辑:桃子【新智元导读】第二代Ameca升级亮相,搭载GPT-4技术,实现实时对话。人形机器人Ameca迎来了它的第二代版本!近期,在2024年世界移动通信大会(MWC)上,全球最先进的机器人Ameca再度亮相。Ameca在会场周围吸引了大量观众。通过GPT-4的增强,Ameca能够即时回应各种问题。「展示一段舞蹈吧」。当被问及是否有情感时,Ameca通过一系列逼真的面部表情作出回应。就在几天前,开发Ameca的英国机器人公司EngineeredArts展示了他们团队的最新成果。视频中,Ameca具备了

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。