展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 业界资讯 > 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 并给出了可靠的代码。

    更多细节请参阅原论文。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    业界资讯 模型
    相关文章 更多
    精品专题 更多
    装机必备

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

    Windows

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

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

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

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。