研究发现AI写的代码和人类一样也会有BUG

news/2024/5/20 7:21:51 标签: 人工智能, OpenAI

人工智能可以像人类一样编写代码——但是一样有错误,帮助开发人员编写软件的新工具也会产生类似的错误。 

一些软件开发人员现在让人工智能 帮助编写他们的代码。 他们发现人工智能和人类一样有缺陷。

去年 6 月, GitHub 子公司 的微软 提供托管和协作代码工具 发布 了一个使用 AI 协助程序员的程序的测试版。 开始输入命令、数据库查询或对 API 的请求,名为 Copilot 的程序将猜测您的意图并编写其余部分。

注册测试 Copilot 的生物技术公司的数据科学家Alex Naka 表示,该程序非常有用,并且改变了他的工作方式。 “它让我花更少的时间跳转到浏览器来查找 API 文档或 Stack Overflow 上的示例,”他说。 “确实感觉有点像我的工作已经从代码生成器转变为代码的鉴别器。”

但 Naka 发现错误会以不同的方式潜入他的代码中。 “有时候,当我接受它的一个提议时,我会错过一些微妙的错误,”他说。 “而且很难追查到这一点,也许是因为它似乎犯了与我会犯的错误不同的错误。”

AI 生成错误代码的风险可能高得惊人。 纽约大学的研究人员最近 分析了 Copilot 生成的代码 ,发现对于某些对安全性至关重要的任务,代码包含大约 40% 的安全漏洞。

说,这个数字“比我预期的要高一点” 布伦丹·多兰-加维特 参与分析的纽约大学教授 。 “但 Copilot 的训练方式实际上并不是编写好的代码——它只是生成符合给定提示的那种文本。”

尽管存在这些缺陷,Copilot 神经网络和类似的人工智能工具可能预示着软件开发人员编写代码的方式发生了翻天覆地的变化。 人们对使用人工智能来帮助自动化更平凡的工作越来越感兴趣。 但 Copilot 也强调了当今 AI 技术的一些缺陷。

“似乎它所犯的错误与我所犯的错误不同。”

Alex Naka,数据科学家

在分析可用于 Copilot 插件的代码时,Dolan-Gavitt 发现 它包含一个受限短语列表。 这些显然是为了防止系统脱口而出令人反感的消息或复制其他人编写的知名代码。

Oege de Moor GitHub 研究副总裁兼 Copilot 开发人员之一的 表示,安全性从一开始就是一个令人担忧的问题。 他说,纽约大学研究人员引用的有缺陷代码的百分比仅与更可能存在安全漏洞的代码子集相关。

De Moor 发明了 CodeQL ,这是纽约大学研究人员使用的一种工具,可以自动识别代码中的错误。 他说 GitHub 建议开发人员将 Copilot 与 CodeQL 一起使用,以确保他们的工作安全。

GitHub 程序建立在 OpenAI 开发的 AI 模型 之上, OpenAI 前沿工作的著名 AI 公司 是一家从事机器学习 。 该模型称为 Codex,由一个大型人工 神经网络 组成,该网络经过训练可以预测文本和计算机代码中的下一个字符。 该算法提取了存储在 GitHub 上的数十亿行代码——并非所有代码都完美——以便学习如何编写代码。

OpenAI 在 Codex 之上构建了自己的 AI 编码工具,可以 执行一些令人惊叹的编码技巧 。 它可以将类型化指令(例如“创建一个介于 1 到 100 之间的随机变量数组,然后返回其中最大的一个”)转换为多种编程语言的工作代码。

同一个 OpenAI 程序的另一个版本,称为 GPT-3,可以 生成关于给定主题的连贯文本 ,但它也可以反刍 攻击性或有偏见的语言。 从网络的黑暗角落学习到的

Copilot 和 Codex 让 一些开发人员怀疑 AI 是否可以让他们自动下班。 事实上,正如 Naka 的经验所示,开发人员需要相当高的技能才能使用该程序,因为他们经常必须审查或调整其建议。

纽约大学参与 Copilot 代码分析的博士后研究员Hammond Pearce 表示,该程序有时会产生有问题的代码,因为它不完全理解一段代码试图做什么。 “漏洞通常是由于缺乏开发人员需要知道的上下文引起的,”他说。

一些开发人员担心人工智能已经养成了坏习惯。 “作为一个行业,我们一直在努力摆脱复制粘贴解决方案,现在 Copilot 已经创建了一个增压版本,” Maxim Khailo 曾尝试使用 AI 生成代码但尚未尝试过 Copilot 的软件开发人员 说.

原文:研究发现AI写的代码和人类一样也会有BUG


http://www.niftyadmin.cn/n/2389.html

相关文章

【pyhon】利用pygame实现彩图版飞机大战(附源码 可供大作业练习使用)

源码请点赞关注收藏后评论区留言或私信博主 演示视频已上传到我的主页 有需要者可自行观看 演示视频如下: 飞机大战接下来先介绍一下游戏的玩法 在PyCharm中运行《彩图版飞机大战》即可进入如图1所示的游戏界面。 具体的操作步骤如下: (1&…

万字长文让你学会MyBatis

又是一篇万字长文,万字长文让你学会Mybatis 目录 MyBatis介绍: mybatis快速入门: Mapper代理开发: 完成品牌数据的增删改查操作 准备阶段: (1)查询所有数据 (2)查看详…

html制作好看的五子棋(源码)

文章目录1.静态效果1.1 开始界面效果1.2 和电脑对战可配置1.3 对战棋盘效果1.3 游戏结束效果2.源码和动态效果展示2.1 两人对战动态效果2.2 人机对战动态效果2.3 五子棋源码源码下载作者:xcLeigh 文章说明 html制作五子棋对战源码,酷炫的界面效果&#x…

JVM 的发展历程及其基本概念 (一)

一、JVM的基本介绍 1、随着Java7的正式发布,Java 虛拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序。 Java虚拟机根本不关心运行在其内部的程序到底是使用何种编程语言编写的,它只关心“字节码”文件。也就是说Ja…

【定语从句练习题】who、which

1. 填空训练 翻译的时候加上 … 的 1.who 2.which 3.which 4.which 5.who 6.which 7.which 8.who 9.who 10.which 11.which 12.who 2. 选择 1.took 2.live 3.she is 3.lost 5.bought 6.is parked 7.it cuts 8.writes 9.make 10.lent you. 10.lend sb. sth 这里需要&…

光流方法Flownet的简单调用

文章目录1 概述2 代码下载3 数据下载4 预训练模型下载5 代码讲解6 输出示意1 概述 如果是自己训练,30G的FLyingChairs数据集还是很吃设备,这里只介绍如何使用该算法。 TIps:假设已经安装好了所有库。 2 代码下载 Torch: https…

信息系统综合测试与管理__软件测试

一 概念 软件测试是使用人工或者自动手机来运行或测试某个系统的过程, 目的是检测是否满足需求或者比较预期与实际的差别。 软件测试应该覆盖整个开发、维护过程, 不仅仅是编码阶段完成之后进行的一项活动。 常考的软件测试工具为LoadRunner, 是一种…

某大厂软件测试岗一面笔试题+二面问答题面试经验分享

目录 某大软件测试厂笔试题 选择题 二面 某大软件测试厂笔试题 判断题(Y对,N错) 1.软件测试的目的是尽可能多的找出软件的缺陷。(Y) 2.Beta测试是验收测试的一种。(Y) 3.验收测试是由最终用户来实施的。(N) 4.项目立项前测试人员不需要提交任何工件。(Y) 5…