介绍

官网:https://github.com/features/copilot/

GitHub Copilot 是一款由 GitHub 和 OpenAI 合作开发的人工智能编程助手,可以根据编写的代码,自动生成可能的代码补全、函数调用、甚至是整个函数或代码块。它的定位是为开发者提供一个更加高效的编程工具,能够降低编程的难度和疲劳感,提高编程的质量和效率。


GitHub Copilot 的主要功能

  1. 代码补全:GitHub Copilot 可以基于当前代码的上下文,智能地生成代码片段和语句,提供代码自动补全的功能,从而减少编写代码的时间和错误。

  2. 函数调用:GitHub Copilot 可以根据当前上下文中已经存在的变量和方法,智能地推测出可能需要调用的函数,从而减少程序员的思考时间和错误率。

  3. 代码注释:GitHub Copilot 可以为代码自动生成注释,描述当前代码的功能和用途,从而帮助开发者更好地理解代码。

  4. 代码生成:GitHub Copilot 可以基于开发者提供的输入,自动生成完整的函数、代码块、甚至是整个程序。这使得开发者可以更快速地编写代码,减少手动编写代码的时间和劳动强度。


GitHub Copilot 的发展

早在 2019 年,OpenAI 就推出了名为 GPT-2 的自然语言处理模型,该模型能够生成高质量的自然语言文本。这个模型的出现引起了极大的关注,并被许多人认为是人工智能技术的重要进展之一。

随着 GPT-2 的出现,人们开始想象将这种技术应用于编程中的可能性。GitHub Copilot 就是基于这个想法产生的。GitHub Copilot 的核心技术是使用 OpenAI Codex 技术开发的,它是 GPT-3 的后继者,专门针对编程任务进行了优化和训练。Codex 可以解析自然语言,并根据用户的输入生成代码建议,这些建议可以在一定程度上帮助程序员更快速、更高效地编写代码。

在 GitHub Copilot 发布之前,一些类似的编程助手工具已经出现了,例如 TabNine 和 Kite 等。然而,这些工具都是基于固定的代码模板和规则,不能像 GitHub Copilot 那样通过机器学习自我进化,并生成更加智能和个性化的代码建议。

2021 年 6 月,GitHub Copilot 推出技术预览版,该版本仅向早期用户提供了访问权限。
2022 年 6 月,GitHub Copilot 正式发布,向个人开发者提供订阅服务。
2023 年 3 月,GitHub Copilot X 推出技术预览版,带来一系列由 GPT4 驱动的新能力。

GitHub Copilot 的工作方式是基于机器学习和人工智能技术。它使用了深度学习算法和大规模的预训练模型,通过学习程序员的编程习惯和语法结构,从而能够智能地生成代码片段和完整的代码。开发者可以通过安装 GitHub Copilot 插件来使用该工具,并在编辑器中与其进行交互。在使用的过程中,GitHub Copilot 还会不断地学习和优化自己的模型,以提供更好的编程辅助功能。


功能特性

定位

定位:智能的开发者伙伴 (Copilot)
愿景:通过使用人工智能技术来提供更高效、更精准的编码工具,以帮助开发人员解决更具挑战性的问题,提高开发效率和质量,从而能够专注于解决更创造性和高层次的问题。

智能体现在以下方面:

  1. 语言理解能力:它可以解析自然语言输入并理解编程上下文,从而生成合适的代码片段。
  2. 编程知识库:GitHub Copilot 能够访问广泛的编程知识库,包括 GitHub 上的代码仓库、Stack Overflow 等,以帮助生成更加准确的代码。
  3. 提供多种生成代码方式:除了提供基于自然语言的描述生成代码的方式,GitHub Copilot 还支持代码的自动补全、重构和错误修复等多种方式,这使得它在实际开发中的适用性更强。
  4. 模型训练:GitHub Copilot 的底层模型是通过大量的数据和算法训练得到的,这使得它能够生成准确的代码片段,并逐步提高自己的表现。
  5. 上下文理解:GitHub Copilot 能够根据代码上下文推断出程序员的意图,并生成相应的代码。
  6. 集成开发环境(IDE):GitHub Copilot 集成了多种常用的 IDE,可以在代码编辑器中直接使用,从而提高编程效率。
  7. 多语言支持:GitHub Copilot 支持多种编程语言,如JavaScript、TypeScript、Python、Ruby等,这也使得它在跨平台、多语言编程方面具有优势。
  8. 自我学习能力:GitHub Copilot 不断从海量代码库中学习和积累知识,同时也可以根据用户的反馈进行调整和优化,这使得它的智能水平不断提高,也能够更好地满足用户的需求。
  9. 开放性和可定制性:GitHub Copilot 是一个开放的平台,用户可以自行添加自己的代码库和知识库,并且可以根据自己的需求进行定制和调整,这也使得它具有较高的可扩展性和灵活性。

对于我们来说,需要了解

  1. Copilot 背后的训练集来自于 Github 上广泛且大量的代码
  2. Copilot 会学习当前项目代码,参考本地和公共领域的代码来理解上下文
  3. Copilot 本质上依然是自然语言模型,可以使用自然语言描述问题

案例展示

  1. 将注释转换为代码
  1. 创建单元测试
  1. 创建 SQL 查询

如何使用

环境准备

  1. 注册服务 https://github.com/settings/copilot ,目前 10刀/月

  1. 下载你使用的 IDE 对应的插件,目前支持 VSCode、Visual Studio、JetBrains、Neovim,以下以我用的 VSCode 为例

  1. 安装IDE插件,其中 Github Copiot 为正式版,GitHub Copilot Nightly 为 Beta 版,GitHub Copilot Labs 更多实验室功能(其实就是 Chat 的可视化版本)

  1. 进 IDE 授权登录

  1. 随便打开一个文件进行验证

操作技巧分享

常用场景:根据注释写代码

以下内容,用时 5 秒,还包括了我的优化建议


常用场景:重复性内容生成

以上是一段需要注册一堆移动操作的处理,涉及大概16个操作,而项目中其实真的有大量这样的事情在发生,不单是是测试用例,业务中就存在一些重复了又不完全重复的事情。
以为自己复制和改变量花费时间不多,实际上这就是每一个3秒到1秒的提升,量越多,这一提效越明显。


常用场景:总是翻文档不够熟悉的 SQL & RegExp

除了数据工程师应该没有人在天天写 SQL 吧,写到复杂一点的逻辑总是要翻文档和测试的,只要你有了小助手,并且拥有描述需求和测试 SQL 的能力,整个过程会非常高校。


正则也是一样,用到深处方恨学得不精,业务里总会来一些匹配需求的花活。


从这些能力来来看,
研发的关键能力在于描述清楚需求和调优的能力。你依然也必须是主控。


操作技巧:一次查看更多建议

鼠标聚焦在建议行上,键盘 ctrl + entry 触发打开其他建议,可以一次性浏览当前上下文背后的内容。

其他常用

  • 切换下一个建议 Alt + ]
  • 催促生成建议 Alt + \

操作技巧:解释代码

利用左侧的 lab 工具可以选择 EXPLAIN CODE, 同时在编辑器中一样可以使用


操作技巧:提问机

根据官方博客的说明,copilot 是完全针对代码的,所以其他事情他基本上一概不知,正确用法当然是回到我们的本职工作。

实测不用 q: 也可以,但这是从官方开发者那边学来的技巧,q: 准确触发提问而不是代码编写。

进一步接地气就选中文资料,好用无负担


操作技巧:禁止提示

某些历史包袱文件可能过于庞大,使用上可能会感觉到建议都在瞎扯,可以在编辑器右下角点击关闭代码协助提示。

也可以在编辑器 Settings.json 文件中进行配置,比如把用于写各种配置信息的文件类型禁止分析

1
2
3
4
5
6
7
8
9
10
11
{
"editor.inlineSuggest.enabled": true,
"github.copilot.enable": {
"*": true,
"yaml": false,
"plaintext": false,
"markdown": true,
"javascript": true,
"python": true
}
}

隐私纠纷&代码安全

GitHub Copilot的隐私问题一直备受关注。2021年7月,OpenAI 和 GitHub 发布了一份联合声明,承诺对用户的隐私和数据安全进行保护,并明确了 Copilot 在开发过程中使用的数据来源和数据处理方法。声明还指出,Copilot 会收集用户的输入和代码,以及用于训练模型的代码存储库的元数据和代码片段,但不会存储完整的代码存储库或私人代码。同时,声明还指出用户可以选择退出使用 Copilot,并在使用过程中保持完全控制权。

然而,仍有一些人对 Copilot 的隐私问题表示担忧。他们认为,Copilot 使用的训练数据可能包含用户的私人代码,Copilot的代码生成算法可能会泄露用户的商业机密或知识产权。此外,一些专家也指出,Copilot生成的代码可能会存在安全漏洞和编程错误,从而导致数据泄露或系统崩溃等问题。因此,他们呼吁 OpenAI 和 GitHub 加强隐私保护措施,并建立更加透明和安全的用户数据管理机制。



建议在 Github 个人设置中,建议对隐私授权进行设置,把允许使用你的代码片段作为训练取消。

2022年在 IEEE 安全与隐私研讨会上发表的一篇论文评估了 Copilot 生成的代码的安全性,这些代码是 MITRE 在 89 个不同场景和 1689 个程序中列举的 25 个最大的代码弱点(例如跨网站脚本、路径遍历)。这是围绕弱点的多样性(它对可能导致各种代码弱点的场景的响应能力) ,提示的多样性(它对相同代码弱点的微妙变化的响应能力)和域的多样性(它在 Verilog 中生成寄存器传输级硬件规范的能力)的评估报告。研究发现,在多种语言中,39.33% 的顶级建议和 40.73% 的总建议导致了代码漏洞。


其他

同类产品 Cursor,为 OpenAI 旗下研发,考虑与微软的深度结合,更多高阶能力未来应该会在 Github Copilot 透出。目前 Cursor 已经从 GPT4 降级到了 GPT3,并且也开始收费了。

Github Copilot X 的宣传片官网中透露其新功能包括加入聊天工具 Copilot Chat、PR生成和智能处理工具 Copilot for Pull Request、智能终端工具 Copilot CLI、智能文档工具 Copilot Doc、语音生成代码工具 Copilot Voice … 非常期待!


总结

以合作和开放的心态去使用 AI,AI 依然不是万能的,但它已经称得上是“好用”的。多探索、多打磨自己的助手,不要成为被动接受趋势浪尾的人。

倾听更多的声音:https://www.zhihu.com/question/470873369