Hello,Hi,你好,我是猿java。
ChatGPT 已经是当下最火的 AI 项目之一,作为技术的猿哥肯定也要跟上技术潮流,因此,今天就来聊聊使用了半年的 AI 产品:Github Copilot。
Copilot 是什么? {#Copilot-是什么?}
Copilot,中文翻译:副驾驶,辅助器。它是 Github 2021 年 8 月推出的一个新功能,可以帮助开发者在编写代码时提供更智能的建议。
Copilot 由 Codex 提供支持,Codex 是一种由 OpenAI 创建的生成式预训练 AI 模型。 它已经接受了来自公开来源的自然语言文本和源代码的培训,包括 GitHub 上公共存储库中的代码。
Copilot 涉及的几个关键技术点:
- Google Transformer: Google 提出的一种用于语言理解的新型神经网络架构;
- GPT-3:Copilot 是基于 GPT-3 的 AI 模型,它可以根据你的代码片段生成代码建议。GPT-3 是一个自然语言处理模型,底层基于 Transformer 架构;
- 超大规模训练:据说 Copilot 是基于 Github 中所有的开源代码进行训练的,因此,它可以生成任何语言的代码建议;
Copilot 的安装和使用 {#Copilot-的安装和使用}
这里以 ItelliJ IDEA 为例,目前官方支持 4种 IDEA。
购买 Copilot {#购买-Copilot}
Copilot 需要付费(目前有 30天的试用期,原来试用期是 60天),购买需要美金,因此需要准备一张可以支付美$的信用卡(Copilot 是通过信用卡付费的),国内的小伙伴可以开通双币信用卡。
Copilot 计费: 个人用户,10$/月, 100$/年。
安装 ItelliJ IDEA Copilot 插件 {#安装-ItelliJ-IDEA-Copilot-插件}
在 ItelliJ IDEA 的 Marketplace 中搜索 Copilot 插件,安装后重启 IDE,如下图:
登录 {#登录}
如下图,在 ItelliJ IDEA 中登录刚才注册 Github Copilot的账号:
使用 {#使用}
如下图案例: 在 ItelliJ IDEA 中输入 "用 Java实现一个 反转链表的算法" 这样 一行注释后,Copilot 给出了智能的代码建议,如果采用建议,直接按 tab 键。
当然,这里只是给出一个简单的例子,实际使用中,你可以输入更多的代码,Copilot 给出的提醒 和 ItelliJ IDEA的自动提醒是不一样的,它会根据你的代码片段生成代码建议,这样就可以帮助你提高编码效率,减少代码编写的时间。
快捷键 {#快捷键}
Copilot 提供了一些快捷键,可以很方便地使用。
- 接受建议:Tab
- 拒绝建议:Esc
- 打开Copilot:Ctrl + Enter (会打开一个单独的面板,展示10个建议)
- 下一条建议:Alt/Option + ]
- 上一条建议:Alt/Option + [
- 触发行内Copilot:Alt/Option + \
注意点 {#注意点}
因为防火墙的存在,所以墙内的用户可能会遇到 Copilot 不 worker 的问题,原因是 Copilot 无法访问互联网或 Github api。你可能会看到以下错误信息:GitHub Copilot could not connect to server. Extension activation failed: "connect ETIMEDOUT xxx.xxx.xxx:443"。
在这种情况下,你就需要魔法了(你懂的)
更多 Copilot 使用,参考:https://copilot.github.com/
Copilot 使用心得 {#Copilot-使用心得}
解放生产力 {#解放生产力}
本人使用 Copilot 有半年的时间,最初使用时因为好奇,后面在实际工作发现:Copilot 确实能够大大解放生产力。本人使用最多的几个点:
1.业务代码逻辑推断
在编写业务代码时,如果遇到一些复杂的业务逻辑,可以通过注释(中英文都可以)的方式,让 Copilot 为我们生成代码,这样就可以快速的编写业务代码,减少重复代码的编写。
2.SQL语句编写
在编写 SQL 语句时,因为需要编写大量的重复代码,因此,使用 Copilot 可以帮助我们快速的编写 SQL 语句,减少重复代码的编写。可以通过编写注释,然后 Copilot 为我们生成 SQL 语句。
3.单元测试代码编写
编写单元测试代码时,因为需要编写大量的重复代码,因此,使用 Copilot 可以帮助我们快速的编写单元测试代码,减少重复代码的编写。可以通过编写注释,然后 Copilot 为我们生成单元测试代码。
4.新语言的学习
因为目前工作需要使用 Python,Golang,如何快速学习以及投入工作是一个很大的挑战,除了从官网,Google 获取该语言基本语法知识和高级特性外,另一方面,在 Idea开发中真实使用 Python,GO的时候,智能的提醒,可以给我更好的使用该语言。
解放思想 {#解放思想}
AI 或许会成为下一个时代,尽管我不从事 AI 的相关工作,但是,Copilot 的使用,让我体验了 AI 带来的便捷,作为技术人员,既要强化自己的技术深度,同时也要拓展自己的技术广度,多多了解,这样可以更好的开阔技术视野。
保护知识付费,Copilot 需要付费,对于知识付费,我个人还是比较赞成,因为,知识付费即可以保护知识创造者的劳动成果,获得应有的回报,同时,也可以让知识的消费者懂得更好的珍惜,获取价值。