编程门槛正在降低,编程效率正在提升,我们距离「人人都能成为开发者」的目标更近一步。这不,微软正式宣布发布了一个人工智能代码建议方案——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 三方联手推出的一款工具,旨在提升开发者效率。
对于此次参与研发的几位主角,相信大家也并不陌生。众所周知,微软于 2018 年宣布以 75 亿美元收购全球知名代码托管平台 GitHub,彼时其在官宣文章中表示,“开发者是这个新时代的创建者,他们为世界编写代码,而 GitHub 是他们的‘家’,在上面,每位开发者都可以共同创建、协作、共享代码并相互为彼此贡献力量。”
自此,微软在开源、更前沿的技术、深度拥抱开发者的道路上更深层次地探索与前行。就前沿技术方面而言,2019 年,微软宣布向一家非营利人工智能研究机构 OpenAI 投资 10 亿美元,协助其开发 AGI(通用人工智能)平台,同时借此在微软的 Azure 云计算服务平台上开发人工智能超级计算技术。
拿到资金的 OpenAI 不负众望,于 2020 年 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 版本,还处于技术预览版阶段,应用起来虽然还不是太过完美,但功能的确强大,感兴趣的小伙伴可以先注册体验一波: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
☞曝 iPhone 13 系列定价有望下调:起售价或低于 5499 元;TikTok 成为全球收入最高 App|极客头条
文章评论