整理 | 苏宓
出品 | CSDN(ID:CSDNnews)
编程门槛正在降低,编程效率正在提升,我们距离「人人都能成为开发者」的目标更近一步。这不,微软正式宣布发布了一个人工智能代码建议方案——GitHub Copilot,可以在程序员编码的时候自动推荐/生成代码供其使用,解放程序员的双手,再也不用因为敲代码而加班了!
GitHub Copilot 究竟是什么?
简单来看,GitHub Copilot 可以视为是配对编程中的另一位虚拟程序员——即开发者和 AI 在同一个项目上并肩协作。GitHub Copilot 可以根据字符串、注释、函数名亦或是代码本身,理解上下文,实现自动填充重复代码,它可以帮助开发者用更少的时间来更快地编写出代码。
具体实现如下,GitHub Copilot 这款工具可以查看当前文件中现有的代码/注释,根据上下文语义,自动生成一行或多行的代码建议,供程序员选择。随着程序员接受或拒绝建议,该模型会随着时间的推移,不断地学习且变得更加智能与复杂。
微软官方于近日也进行了一项基准测试,其以一组在开源存储库中具有良好测试覆盖率的 Python 函数为测试对象,在将函数体清除了之后,使用GitHub Copilot 来填充代码。该模型在第一次尝试时正确率达 43%,经过了 10 次的尝试之后,正确率提升到了 57%。
对此,GitHub 首席执行官 Nat Friedman 表示新软件使编码速度更快。GitHub 上的数百名开发人员在编码时一整天都在使用 Copilot 功能,他们中的大多数人都在接受建议而不是关闭该功能。
GitHub Copilot 的背后
事实上,GitHub Copilot 是微软、GitHub、OpenAI 三方联手推出的一款工具,旨在提升开发者效率。
对于此次参与研发的几位主角,相信大家也并不陌生。众所周知,微软于 年宣布以 75 亿美元收购全球知名代码托管平台 GitHub,彼时其在官宣文章中表示,“开发者是这个新时代的创建者,他们为世界编写代码,而 GitHub 是他们的‘家’,在上面,每位开发者都可以共同创建、协作、共享代码并相互为彼此贡献力量。”
自此,微软在开源、更前沿的技术、深度拥抱开发者的道路上更深层次地探索与前行。就前沿技术方面而言, 年,微软宣布向一家非营利人工智能研究机构 OpenAI 投资 10 亿美元,协助其开发 AGI(通用人工智能)平台,同时借此在微软的 Azure 云计算服务平台上开发人工智能超级计算技术。
拿到资金的 OpenAI 不负众望,于 年 6 月,发布具有 1750 亿个参数的 GPT-3 AI 语言模型,成为业内同类软件中最复杂的一种。
时隔一年后,微软获得了 OpenAI 独家 GPT-3 模型授权,以双赢的模式继续合作,一方面,微软可以将 GPT-3 应用于 Azure 平台,扩张其技术能力;另一方面,OpenAI 通过微软获得 GPT-3 的更多应用场景和商业价值。
此次 GitHub Copilot 首个版本的发布,是其三方合力研发的重大成果之一,也是微软多年来尝试让计算机自己编写代码愿景的一次突破。
工作原理
揭开GitHub Copilot 的神秘面纱,我们发现GitHub Copilot 由 OpenAI 研发的新 AI 系统 Codex 提供支持,Codex 是 GPT-3 的延伸版本,该模型接受过公开源代码和自然语言的训练,因此它理解编程和人类语言。不过目前 Codex 暂未对外开放,OpenAI 联合创始人兼 CTO Greg Brockman 表示,OpenAI 将在今年夏天发布 Codex 模型,供第三方开发者将其应用到自己的应用程序中。
就当前应用Codex 模型的GitHub Copilot 而言,它离不开覆盖多种编程语言大量代码的 GitHub 平台,也依赖于强大的 Azure 云计算能力。据官方透露,它已经接受过数十亿行公共代码的训练,在其内部建立了很多安全机制来保证开发者能够生成安全、高质量的代码。
工作原理如下:
在应用层面,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 上,每天都有数百名开发者在使用它,如果该预览版进展顺利,我们将计划在未来某个时候将其扩展为付费产品。”
微软回应一切!
在该工具推出后不久,该条新闻也迅速登上 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 版本,还处于技术预览版阶段,应用起来虽然还不是太过完美,但功能的确强大,感兴趣的小伙伴可以先注册体验一波:/
参考:
//06/29/microsoft-github-copilot-ai-offers-coding-suggestions.html
/articles//06/29/github-copilot.aspx
更多精彩推荐鲲鹏入晋 万里腾飞,鲲鹏应用创新大赛山西赛区邀你来战!“我被机器解雇了!”Amazon 63岁员工因算法评分太低被自动开除杀毒软件 McAfee 创始人狱中身亡,75 年传奇人生画下句号点分享点收藏点点赞点在看