程序员提前下班的福音来了!GitHub、OpenAI 联手推出 AI 代码生成神器

article/2025/8/23 16:17:00

5ce4fcb36f8f17915a92b19532948523.gif

整理 | 苏宓

出品 | CSDN(ID:CSDNnews)

编程门槛正在降低,编程效率正在提升,我们距离「人人都能成为开发者」的目标更近一步。这不,微软正式宣布发布了一个人工智能代码建议方案——GitHub Copilot,可以在程序员编码的时候自动推荐/生成代码供其使用,解放程序员的双手,再也不用因为敲代码而加班了!

a118378f67fb48184a77ffd046ff1002.png

83107272a183adb571f99f5bfe7d1a1b.png

GitHub Copilot 究竟是什么?

简单来看,GitHub Copilot 可以视为是配对编程中的另一位虚拟程序员——即开发者和 AI 在同一个项目上并肩协作。GitHub Copilot 可以根据字符串、注释、函数名亦或是代码本身,理解上下文,实现自动填充重复代码,它可以帮助开发者用更少的时间来更快地编写出代码。

具体实现如下,GitHub Copilot 这款工具可以查看当前文件中现有的代码/注释,根据上下文语义,自动生成一行或多行的代码建议,供程序员选择。随着程序员接受或拒绝建议,该模型会随着时间的推移,不断地学习且变得更加智能与复杂。

ada8816c865e5c7f89d78d8285f6a90e.png

微软官方于近日也进行了一项基准测试,其以一组在开源存储库中具有良好测试覆盖率的 Python 函数为测试对象,在将函数体清除了之后,使用 GitHub Copilot 来填充代码。该模型在第一次尝试时正确率达 43%,经过了 10 次的尝试之后,正确率提升到了 57%。

对此,GitHub 首席执行官 Nat Friedman 表示新软件使编码速度更快。GitHub 上的数百名开发人员在编码时一整天都在使用 Copilot 功能,他们中的大多数人都在接受建议而不是关闭该功能。 

bb6811be3a8429ab1cc4ecee7670073e.png

GitHub Copilot 的背后

事实上,GitHub Copilot 是微软、GitHub、OpenAI 三方联手推出的一款工具,旨在提升开发者效率。

对于此次参与研发的几位主角,相信大家也并不陌生。众所周知,微软于 2018 年宣布以 75 亿美元收购全球知名代码托管平台 GitHub,彼时其在官宣文章中表示,“开发者是这个新时代的创建者,他们为世界编写代码,而 GitHub 是他们的‘家’,在上面,每位开发者都可以共同创建、协作、共享代码并相互为彼此贡献力量。”

61c8cac86df82fcd285cf0f491b1d6bd.jpeg

自此,微软在开源、更前沿的技术、深度拥抱开发者的道路上更深层次地探索与前行。就前沿技术方面而言,2019 年,微软宣布向一家非营利人工智能研究机构 OpenAI 投资 10 亿美元,协助其开发 AGI(通用人工智能)平台,同时借此在微软的 Azure 云计算服务平台上开发人工智能超级计算技术。

拿到资金的 OpenAI 不负众望,于 2020 年 6 月,发布具有 1750 亿个参数的 GPT-3 AI 语言模型,成为业内同类软件中最复杂的一种。

时隔一年后,微软获得了 OpenAI 独家 GPT-3 模型授权,以双赢的模式继续合作,一方面,微软可以将 GPT-3 应用于 Azure 平台,扩张其技术能力;另一方面,OpenAI 通过微软获得 GPT-3 的更多应用场景和商业价值。

此次 GitHub Copilot 首个版本的发布,是其三方合力研发的重大成果之一,也是微软多年来尝试让计算机自己编写代码愿景的一次突破。

97830e91c3962d084653dfdcb4d3e6bd.png

工作原理

揭开 GitHub Copilot 的神秘面纱,我们发现 GitHub Copilot 由 OpenAI 研发的新 AI 系统 Codex 提供支持,Codex 是 GPT-3 的延伸版本,该模型接受过公开源代码和自然语言的训练,因此它理解编程和人类语言。不过目前 Codex 暂未对外开放,OpenAI 联合创始人兼 CTO Greg Brockman 表示,OpenAI 将在今年夏天发布 Codex 模型,供第三方开发者将其应用到自己的应用程序中。

就当前应用 Codex 模型的 GitHub Copilot 而言,它离不开覆盖多种编程语言大量代码的 GitHub 平台,也依赖于强大的 Azure 云计算能力。据官方透露,它已经接受过数十亿行公共代码的训练,在其内部建立了很多安全机制来保证开发者能够生成安全、高质量的代码。

工作原理如下:

49649ff8fd4adf8209c448dcecd643f8.png

在应用层面,GitHub Copilot 还将逐步实现迭代,目前也支持:

  • 扩展编辑器。GitHub Copilot 现已作为 Visual Studio Code 的扩展提供。它可以在任何 Visual Studio Code 适用的地方应用。

  • GitHub Copilot 适用于常见的框架和编程语言。其技术预览版支持 Python、JavaScript、TypeScript、Ruby、Go 等数十种语言。

  • 基于 GitHub Copilot,你可以循环查看其提供的代码替换建议,选择使用或者拒绝使用其提供的代码优化建议,亦或者手动编辑建议的代码。

面向未来,Nat Friedman 说道,“去年,我们一直在与才华横溢的 OpenAI 团队一起构建 GitHub Copilot,我们很高兴能够在今天展示它。在 GitHub 上,每天都有数百名开发者在使用它,如果该预览版进展顺利,我们将计划在未来某个时候将其扩展为付费产品。”

9016209f303d36d51b480647d69b53e5.png

微软回应一切!

在该工具推出后不久,该条新闻也迅速登上 Hacker News 热榜。然而在网友称其功能强大的同时,也有不少网友质疑,对此,Nat Friedman 及官方网站分别给予了回答,我们不妨一起来看看吧!

问:GitHub Copilot 能写出完美的代码吗?

答:不会。GitHub Copilot 会尝试了解开发者的意图并尽可能生成最好的代码,但它建议的代码可能并不是完美无瑕的,有时候它提供的代码可能也没意义。虽然我们正在努力使 GitHub Copilot 变得更好,但 GitHub Copilot 建议的代码应该像任何其他代码一样经过仔细测试、审查和审查。在开发过程中,开发者仍然是主导。

问:GitHub Copilot 是否会在其建议的代码中引入不安全的代码?

答:世界上有很多公共代码具有不安全的编码模式、Bug 或对过时 API 或习语的引用。当 GitHub Copilot 根据这些数据合成代码建议时,它也可能会合成包含这些不良模式的代码。这是我们在 GitHub 上非常关心的事情,近年来我们为开源项目提供了 Actions、Dependabot 和 CodeQL 等工具,以帮助提高代码质量。

同样,随着 GitHub Copilot 的改进,我们将努力从训练集中排除不安全或低质量的代码。当然,开发者也应该始终将 GitHub Copilot 与测试、以及一些安全工具一起使用,同时也要加上自己的判断。

问:GitHub Copilot 自动提供代码建议,是否会带来代码版权、许可等问题?

Nat Friedman:

(1)在公共数据上训练 ML 系统是合理使用

(2)GitHub Copilot 的自动输出就像编译器一样。

问:这最终会不会将 GPL 代码放入许可证不兼容的项目中?

Nat Friedman:不至于,我们正在采取措施避免在输出中直接引用训练数据。就公共代码进行训练的许可而言,基于机器学习社区通用惯例,训练 ML 模型是合理使用。我们确信这将成为美国和世界各地的一个讨论领域,我们渴望参与进来。

问:GitHub Copilot 会直接复制训练集中的代码吗?

答:GitHub Copilot 是一个代码合成器,而不是一个搜索引擎:它的绝大多数代码建议都是独立生成的,以前从未见过。只有 0.1% 的情况下,其提供的代码建议中可能包含一些来自训练集的字符或片段。在使用过程中,当开发者没有提供足够的上下文时(特别是在编辑空文件时),或者当提供的上下文有一个通用的解决方案时,或许会发生直接复制训练集中代码的情况。当前,我们正在构建一个源跟踪器,以帮助检测训练集中重复的罕见代码实例,也帮助用户对 GitHub Copilot 提出的建议做出良好的实时决策。

问:您如何看待 Copilot 对开发者生态的影响?如何确定它对该生态是有益的,而不是取代更多的开发者的?此外,您如何看待它与 tabnine 这类常规代码完成工具的不同。

Nat Friedman:我们认为软件开发正在进入第三次生产力变革的浪潮。第一个是创建编译器、调试器、垃圾收集器和语言等工具的出现,使开发人员更有效率。第二个是开源,让全球开发人员社区聚集在一起,在彼此的工作基础上进行开发。第三次革命将是在编码中使用人工智能技术。

最后,值得注意的是,当前的 GitHub Copilot 仅是 v0.1 版本,还处于技术预览版阶段,应用起来虽然还不是太过完美,但功能的确强大,感兴趣的小伙伴可以先注册体验一波:https://copilot.github.com/

参考:

https://www.cnbc.com/2021/06/29/microsoft-github-copilot-ai-offers-coding-suggestions.html

https://visualstudiomagazine.com/articles/2021/06/29/github-copilot.aspx

e9f7426fa43a2fb790c0b442c69a6d63.gif

b2c5a9e9d2747bb35396540bfc8c7a8c.png

 
 
 
 
☞曝 iPhone 13 系列定价有望下调:起售价或低于 5499 元;TikTok 成为全球收入最高 App|极客头条☞旧手机别卖掉换脸盆了,自制服务器了解一下!
☞当一名程序员喝醉之后......

http://chatgpt.dhexx.cn/article/mX0r4t0E.shtml

相关文章

2020 最好的Linux网络监控工具(翻译)

前言 虽然这个清单包含开源的和闭源的产品,但它着重于介绍基于 Linux 的网络监控工具, 少数常用工具只能在 Windows,Pandora 或其他系统上运行,但是大多数网络监视工具都在Linux系统上运行,因为 Linux 通常是 IT 专家…

MySQL高可用管理工具:orchestrator

orchestrator 是一个MySQL高可用复制拓补的管理和可视化工具,同时也是GitHub官方在使用的一个复制拓补管理工具,它允许: 1)发现: orchestrator主动发现拓补结构并读取基本的MySQL信息,如复制状态和配置。…

GitHub 源代码疑遭泄漏

聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 TypeScript的开发者Resynth 发布题为《GitHub 源代码泄漏》的文章指出,GitHub.com 的所有源代码被公开。 (泄漏者在 Readme 中指出,文档包括日…

2020 最好的Linux网络监控工具

前言 虽然这个清单包含开源的和闭源的产品,但它着重于介绍基于 Linux 的网络监控工具, 少数常用工具只能在 Windows,Pandora 或其他系统上运行,但是大多数网络监视工具都在Linux系统上运行,因为 Linux 通常是 IT 专家的…

网络地址转换(NAT)技术是否拖慢了互联网的发展?(2020 修订版)

2020 年修订版前言:看到有人还是对 IPv4 和 IPv6 的关系搞不清楚,好像只要有了 IPv6 就可以不要 IPv4 了,我只好把老文章祭出来了,当时也是我们接触 IPv6 的开始,两年下来,有些地方做了一些修订。 --- 正文…

Nat. Mach. Intell. | 人工智能的透明度和可重复性

今天给大家介绍多伦多大学的研究人员发表在nature machine intelligence上的一篇文章。文章指出McKinney等人利用AI在乳腺癌筛选上的工作,缺乏研究方法和代码实现的细节,阻碍了透明且可重复(transparent and reproducible)的AI研究…

网络安全学习中的工具

1> Nmap Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。 系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。 其基本功能有三…

p2p网络测试工具_(官方更新)IPFS的网络层——libp2p在2020的发展

如果您在分散的点对点空间中执行任何操作,您可能听说过 libp2p - 用于对等应用程序的模块化网络堆栈。 libp2p 由许多模块化库组成,p2p 网络开发人员可以从中选择和重用所需的协议,同时便于应用程序之间的升级和互操作。这有助于 Web3 开发人…

NAT会话穿越应用程序(STUN)(RFC-5389)

RFC文档链接 摘要 NAT会话穿越应用程序 (STUN) 是一种协议,在处理网络地址转换(Network Address Translator, NAT)穿越时充当其他协议的工具。终端可以使用它来确定NAT分配给它的IP地址和端口。它还可以用来检查两端之间的连通性,并作为keep-alive协议…

教你用 CSS 实现超真实的 3D 相册,让你的照片立体感 UPUP

前言 现如今网页越来越趋近于动画,相信大家平时浏览网页或多或少都能看到一些动画效果,今天我们来做一个有意思的动画效果,通过 css3 实现 3d 效果的立方体相册,下面一起看看吧。 实现思路 首先我们要确定好 html 的结构以及要使…

HTML+CSS实现3D立体相册

程序员的浪漫&#xff0c;话不多说上代码。 HTML: <body><div id"cube"><!--外层盒子--><ul><li><img src"./imgs/1.jpg" ></li><li><img src"./imgs/2.jpg" ></li><li>&l…

该换壁纸啦,记录一个用CSS和HTML做的3D立体相册

这几天看东宫沉迷于陈星旭&#xff0c;李承鄞太绝了&#xff01;这不得把壁纸安排上&#xff1f;简单记录一下制作过程。 1、准备照片 需要1张大的背景图和6张3d相册用图存放在img文件夹中。 可以先使用PS、美图秀秀或者其他修图软件等将相册用图改成200px*200px。 注意文件…

抖音程序员HTML相册,快手抖音程序员表白女朋友3D立体相册源码html网页相册代码...

前几天分享了一套源码&#xff0c;今天又为大家带来一套类似的源码&#xff0c;希望大家喜欢! 快手抖音很火的程序员女朋友3D立体相册源码html网页相册代码&#xff0c;经测试在IE8浏览器下无法预览&#xff0c;建议使用支持HTML5与css3效果较好的360浏览器预览本源码。 代码如…

H5 3d立体相册 CSS3特性

CSS3 变形特性,立方相册,3d旋转 之前看见过3d效果的立体相册,挺羡慕的,现在自己也有机会实现属于自己的3d立体相册了~~~话不多说,开搞… 一, 准备材料 六张自己喜欢的图片,六个面,怎么简单方便怎么来,名字直接取123456,后缀.jpg,放到img文件夹下一张小图片,大点也不要紧,为了浏…

js制作3d立体旋转相册

使用js做一个3d立体旋转相册 可自由拖拽 源码如下 <!DOCTYPE html> <html> <head> <meta charset"utf-8"><title>1</title><style type"text/css">.main{perspective: 800px;}#mian img{width: 200px;height:…

3D立体动态相册(带背景音乐)HTML+CSS脚本

3D立体动态相册&#xff08;带背景音乐&#xff09;HTMLCSS脚本。程序员硬核送礼方式。。。 动画效果 截图效果&#xff1a; 照片准备&#xff1a; 命名为1、2、3、…… 音乐&#xff1a; 将文件依次放在各自文件夹中&#xff1a; CSS文本&#xff0c;命名&#xff1a;index.…

抖音3d相册html代码,抖音3D立体相册表白代码.doc

抖音3D立体相册表白浪漫代码 首先先建立html文件css-3d旋转 之后再新建一个CSS的文件夹 并在css文件夹中建立txt文件&#xff0c;并且把代码复制进去&#xff0c;修改后缀名为.css html{ background: #000; height: 100%; } /*最外层容器样式*/ .wrap{ position: relative; pos…

打造3D立体相册

项目目录结构&#xff1a; HTML代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><link type"text/css" rel"styleSheet" href"css/wrap.css" /><…

MATLAB竟也能制作3D相册?教你用MATLAB制作立体动态相册

效果 教程部分 1 图片导入与大小重设 需要有一个名为album的文件夹和当前m文件在同一文件夹&#xff0c;另外ablum文件夹内至少要有一张jpg格式图片 path.\album\;%文件夹名称 filesdir(fullfile(path,*.jpg)); picNumsize(files,1);%遍历路径下每一幅图像 for i1:picNumfi…

HTML 3d立体旋转相册

效果&#xff1a;&#xff08;实际是动态旋转&#xff09; 目录&#xff1a;&#xff08;根据自己需要替换图片就行了 大照片是400*400 小照片是100*100&#xff09; 提取码&#xff1a;1122 代码链接 index.html <!DOCTYPE html> <html lang"en"> <…