作者:nicky
最近科技圈是真热闹,各大公司相继发布了自家的人工智能新产品,ChatGPT、GPT4、文心一言、Bard。微软更是接二连三地宣布将 GPT-4 应用到 Bing 搜索引擎、Edge 浏览器、Office 全家桶中。3 月 22 日其旗下代码托管平台 GitHub 再次发布重磅“炸弹”:GitHub Copilot X。
Copilot X 是对 2021 年发布的 Copilot 进行了升级,接入 GPT-4,并新增了聊天和语音等功能,在 Copilot X 中,你只需“动动嘴”,它就能把你的代码写了,顺便帮你把测试用例也写了,还能给你解释你看不太懂的代码片段,更能直接让它帮你 DeBug,简直是程序员的贴心小助手。接下来就带着大家了解一下 Copilot X 并上手体验一番。
从 Copilot 到 Copilot X
GitHub Copilot
GitHub Copilot 诞生
早在 2021 年 GitHub 和 OpenAI 就合作开发了一个面向程序员的生产力提升工具 Copilot,用户可以在使用 Visual Studio Code、Microsoft Visual Studio、Vim 或 JetBrains 集成开发环境时通过 Copilot 自动补全代码,主要面向 Python、JavaScript、TypeScript、Ruby 和 Go 等编程语言。可以协助程序员完成自动补全代码块或方法或函数、以及消除重复代码,甚至根据代码注释生成可运行代码。
GitHub Copilot 底层模型
Copilot 底层的 AI 模型 由 OpenAI Codex 提供支持,OpenAI Codex 是基于 GPT-3 修改后的版本(GPT-3 是一种使用深度学习生成类人类文本的语言模型)。接受了一系列英语语言、公共 GitHub 存储库和其他公开可用源代码的训练,包括来自 5400 万个公共 GitHub 存储库的 159 GB 代码的数据集。
GitHub Copilot 发布
2021 年 6 月 29 日 GitHub 对外正式发布 GitHub Copilot,很快就吸引了众多开发者使用,根据 GitHub 的数据,截至上个月,Copilot 已参与到微软全体云代码仓库中的 46%,帮助开发人员将编程速度提高了 55%。
GitHub 的研究还表明,使用 GitHub Copilot 的开发人员中有 90% 表示可以更快地完成任务,其中 73% 的开发人员能够更好地保持顺畅并节省精力,高达 75% 的开发人员感到更有成就感,并且能够专注于更令人满意的工作。
GitHub Copilot X
GitHub Copilot X 发布
随着 OpenAI 的 GPT-4 模型的发布,GitHub 紧接着就发布了新版本的 GitHub Copilot X,Copilot X 的 AI 模型采用的是最新 OpenAI GPT-4,毕竟 GitHub 是微软的亲儿子。GitHub Copilot X 致力于改进开发者体验,将提供聊天和语音界面,支持拉取请求,回答文档问题,并通过 GPT-4 实现更个性化的开发者体验。使用 GitHub Copilot X,它可以解释代码的用途,还可以在遇到 bugs 时让 Copilot X 尝试去修复它,甚至还可以顺带生成单元测试。
GitHub Copilot X 愿景
GitHub 官方博客中提到 Copilot X 是 GitHub 对人工智能软件开发未来的愿景。希望能集成到开发人员工作流程的每个部分中。GitHub Copilot X 的目标是为每个团队、项目和代码库提供个性化的开发体验,让开发者更高效地开发软件,提高工作满意度。
Copilot X 核心功能体验
Copilot X 中的 X 代表什么
GitHub 官网中有提到 GitHub Copilot X 中的 X 代表什么?其实“X”代表一个占位符,表示希望 GitHub Copilot 可用的位置,以及期望它能够做什么(例如“Copilot for pull”、“Copilot for security”)。它将产品从单一体验、代码完成扩展到跨开发人员工作流程的 X 体验。此外,“X”表示我们打算对开发人员成就产生的影响程度。
这次 GitHub 推出的 Copilot X 包括如下功能:
- Copilot Chat 聊天功能:在编辑器中集成与 VS Code 和 Visual Studio 的聊天界面,帮助开发者深入分析代码、生成单元测试和修复 bug,让你可以边写代码边聊天。
- Copilot Voice 语音功能:允许开发者通过口头指令进行自然语言陈述意图,然后让 Copilot Voice 完成生成代码片段的繁重工作。
- Copilot For Pull Requests 支持 PR 功能:帮助开发者更好的编写 PR 描述,并帮助团队更快地审查和合并 PR。
- Copilot CLI 终端 CLI 工具:将自然语言翻译成终端命令。
- Copilot For Docs 文档工具:能够回答有关软件文档的问题,使开发人员免于搜索大量文档。初步支持 React、Azure Docs 和 Mozilla Developer Network (MDN) 文档查询。
Copilot Chat
其实可以这样简单的理解 Copilot Chat = Copilot + ChatGPT,Copilot Chat 就是给 Copilot 加上了聊天对话功能并嵌入到 IDE 中,Copilot Chat 专注于开发人员场景,并与 VS Code 和 Visual Studio 原生集成。它可以识别开发人员输入了哪些代码,显示了哪些错误消息,并将其嵌入到 IDE 中。开发人员可以深入分析和解释代码块的用途,生成单元测试,并对 bug 给出修复建议。
相比旧版的 Copilot,新版的 Copilot Chat 也能识别开发者输入的代码,比如下面示例中,选中一行代码,让 Copilot Chat 解释代码的作用:
我们实际上手来一些接地气的例子:
- 首先我们让 GitHub Copilot 根据代码注释帮我们生成一个程序员面试必备的接雨水的代码。
然后我们直接 Accept Solution 生成代码,让它继续帮我们生成测试代码,可以看到它很贴心的帮我们生成了一堆测试用例,你可以根据自己的喜好选择一个。
- 更厉害的是它还可以帮你进行不同编程语言间的翻译转换。
当然,Copilot 的能力还远不如此,还有更多的功能等待你去探索,希望它能成为大家工作中得力的助手。
Copilot Voice
顾名思义,是的就是动动嘴皮子,让 Copilot 帮你来写代码,Write code without the keyboard。
除了编写代码,Copilot Voice 还可以进行更多的操作:代码跳转、控制 IDE、代码总结。
Copilot For Pull Requests
维护过开源项目,或者用 Git 进行团队协作的同学应该知道,规范化提交 Pull Request(PR) 对于项目开发者来说,到底有多重要。一个好的 pull request 描述能让代码审查者一目了然,可以帮助审阅者快速了解你的代码变动情况,减少项目合并出错的可能性,并提升沟通效率,并可以帮助你的团队的其他成员跟上进度。
因此为了满足开发人员的需求,Copilot 构建了一项功能,允许开发人员在他们的拉取请求描述中插入标记标签。保存描述后,Copilot(由 OpenAI 的新 GPT-4 模型提供支持)会根据标记动态提取与分析代码的变更信息,自动生成描述。然后开发人员可以查看或修改建议的描述。
支持的标记,主要有以下几种:
copilot:summary
生成一段摘要总结。copilot:walkthrough
详细的更改列表,包括指向相关代码片段的链接。copilot:poem
写一首诗来描述本次改动。copilot:all
自动生成以上所有内容。
随着后续产品的更新迭代,未来,Copilot 还会新增 Gentest 和 Ghost Text 的两大功能。
- Gentest:当 Copilot 发现提交的 Pull Request 缺少足够的测试时,会自动提醒开发者,并根据项目需求建议可编辑、接受或拒绝的潜在测试。对于项目所有者来说,这个功能还可以帮助他们去制定关于测试的策略,同时支持开发者遵循这些策略。
- Ghost Text:当开发者创建 Pull Request 时,Copilot 会动态地获取代码更改的相关信息,并自动给出建议。
此外,GitHub 正在进行的其他探索和实验包括:
- 用 AI 解决问题:可以自动描述如何解决问题,甚至自动建议需要进行的更改。
如下,在提交了转移到 PyTorch 的问题后,新功能可以提供生成代码建议,并发起新的 Pull Request。
- 用 AI 审查 PR:由于大量的开发人员将时间花费在代码审查,以及为代码审查准备 PR 上,这一功能就可以减少审查花费的周期。
估计再过不久,AI 就能帮你自动调整代码、完善 PR、修复 Bug 了。
Copilot CLI
影视剧中经常有黑客在电脑屏幕黑窗口前噼里啪啦的不停地敲着一大串的命令,确实非常的酷炫。而在实际中,开发人员真的很难记住那么多复杂的命令,不过不用怕,Copilot CLI 它来了,它带着这 3 个命令来了:?? 、git? 和 gh?
??
可以作为任意 shell 命令的通用 goto,在该命令后面输入相关描述,Copilot 便会列出最适用该描述的具体命令。
比如,你不清楚如何列出所有 JavaScript 文件,只需要输入:
> ?? list js file
Copilot CLI 便会提供可参考的命令以及描述,如果不满意,还能进一步更改描述。确定之后,在终端选中 Run this command
,然后按下回车即可。
git?
用于专门搜索以及调用git
。
相比??
, 它在生成 Git 命令方面要强大许多。如果你明确要用的是 Git 命令,那可以优先选择使用这个。
gh?
结合了 GitHub CLI 命令的灵活性与查询界面的便捷性,让搜索变得更加快捷、信息展示更为清晰。
Copilot For Docs
很多开发人员在阅读官方技术文档时一定都遇到过这些问题:文档内容过于基础、过于粗略或者相关信息被拆分到多个页面上,其中充满了不相关的细节。
Copilot for Docs 就是用来帮助开发者解决上述这些问题的,Copilot for docs 通过定制的摘要为问题呈现最相关的内容,有助于将这些点联系起来,从而避免了开发人员搜索大量文档,更快地为开发人员提供所需信息,包括开发者关于他们正在使用的语言、框架和技术的问题。
GitHub 称,其将从 React、Azure Docs 和 MDN 的文档开始,以便能够与这些项目的开发者和用户一起快速学习和迭代。GitHub 正在使用 AI 扫描这些开源存储库,以帮助开发人员获得答案,因此它的聊天生成的代码内容会比 GPT-4 所基于的训练数据集更新一些。
比较厉害的是 Copilot for Docs 的个性化内容。它可以根据用户的不同编程水平,对该文档的了解程度,以及想要查找的内容,输出不同的答案。
而且开发人员还可以直接从 GitHub repo 上获取最新内容档保持同步。并在现有的 GitHub 权限基础上提供只有自己内部团队可以看到的信息,可以轻松回答有关团队私有内容的问题。
Copilot X 对软件开发的影响及程序员如何应对
看了以上那么多 Copilot X 强大的功能,程序员也得大呼:”家里水晶被偷了!“
其实从 ChatGPT 出圈以来,大家对 AI 是否会取代人类工作的讨论已经非常多了,这里就不再赘述了,仅仅简单谈一谈 Copilot X 对软件开发行业影响的看法以及程序员该如何应对这场危机:
- Copilot X 对软件开发行业影响
- 面向智能软件编程成为趋势,正如电脑成为都市白领打工人的标配,Copilot X 之类的编程辅助工具也将成为越来越多软件开发人员称心如意的越来越离不开的助手,让自己的工作更加高效和顺畅。
- 软件开发者的核心工作不再是编码,简单重复的占用大多时间的编码不再是开发人员的主要工作,理解和解决问题、设计和架构系统、优化性能和安全性等会变成程序员的更重要的工作。
- 软件开发的门槛更低,Copilot X 可以让更多对软件开发感兴趣的人更加轻松的参与到软件开发工作中,同时,它提高了编程效率和质量,使我们可以在更短的时间内完成更多的工作,它还能帮助我们更好地协作和沟通。
- 超大规模的软件项目管理成为可能,Copilot X 的意义不仅仅局限于单个开发者。这个突破性的工具可以通过简化工作流程、减少错误和实现更快的开发周期来重塑整个行业。
展望未来,AI 编程助手在软件开发领域的前景是无限广阔的。它不仅可以持续升级,克服更多挑战,还可以与其他 AI 技术结合,拓展更多的应用场景。
- 程序员如何应对 Copilot X 带来的职业危机感
通过前面的文章我们已经体验到了 GitHub Copilot X 的强大并能预见到它将对未来的软件开发行业产生巨大的影响,那么作为普通的程序员,我们该如何提升那方面的能力才能应对这场职业危机呢?
- 首先,我们要接受事实,GitHub Copilot X 等 AI 辅助编程产品是不可避免的,我们无法阻止技术的发展,作为程序员我们应该接受这个事实,并积极地去拥抱变化,去接受它去使学习它使用它,并让它提高你的生成效率。
- 其次,我们需要提升自身能力,我们需要知道程序员的核心竞争力究竟是什么?是每天提交几百行、上千行代码吗?答案肯定不是,现在和未来的很长一段时间内,程序员的工作模式会成为按照业务需求进行设计拆解并输入提示词,让 GitHub Copilot X 之类的 AI 帮你生成代码,然后由你进行验证和修复,让代码能够正常运行,所以程序员首先要提升的是业务理解、需求拆分、架构设计等方面的能力。
- 最后,我们需要学会与 AI 合作,让程序员+AI 形成 1+1>2 的效果,比如我们要学会当然还有编写提示词的能力!有人可能会说,编写提示词不就是会打字就行吗?非也,一个好的提示词,能让 AI 快速准确的生成你想要的代码,比如你要在提示词中定义好需要完成的功能、对任务进行拆分、确定输入输出、表达准确避免歧义等等,所以提示词的编写本身就会变得十分的重要,未来程序员的第一课可能并不是学习 xx 编程语言,而是如何编写提示词。
总之,GitHub Copilot X 的出现给程序员带来了一定的冲击,但是我们应该以积极的态度去面对它,提高自身能力,与它合作,从而更好地适应技术的发展。
附:GitHub Copilot X 申请使用教程
说了这么多 GitHub Copilot X 的新 feature,是不是有点迫不及待想要上手试一试呢?目前 GitHub Copilot X 刚刚推出不久,想要抢先体验,需申请加入等待名单队列中,成功排上队之后就可以畅玩了。
具体的步骤如下:
- 注册 GitHub 账号
https://github.com/signup - 申请试用
Copilot Chat: https://github.com/github-copilot/chat_waitlist_signup/
Copilot Voice: https://githubnext.com/projects/copilot-voice/
Copilot for Docs: https://githubnext.com/projects/copilot-for-docs/
Copilot for PRs: https://githubnext.com/projects/copilot-for-pull-requests/
Copilot CLI: https://githubnext.com/projects/copilot-cli/
- 安装代码编辑器
如 Visual Studio Code、Microsoft Visual Studio、JetBrains 等 - 安装 GitHub Copilot 插件
以 Visual Studio Code 为例(下载 VS Code https://code.visualstudio.com/ )
进入 VS Code 的 Extensions 面板(快捷键 Ctrl+Shift+X),在搜索框中输入“GitHub Copilot”并回车,在搜索结果中找到“GitHub Copilot”插件并选择相应的插件点击安装。
- 登录 GitHub 账号:安装完成后,单击 VS Code 底部状态栏中的 GitHub Copilot 图标,进入 GitHub Copilot 面板。首次使用需要登录 GitHub 账户,可以选择使用 GitHub 账户登录或者输入 Personal Access Token 登录。
- 使用 GitHub Copilot 插件:在编辑器中输入关键字或者语句时,GitHub Copilot 会自动出现一个提示框,用户可以选择其中的建议代码或者继续输入以获得更多的建议。用户可以通过快捷键或者命令面板启动 GitHub Copilot,具体方法可以查看编辑器插件的帮助文档。
- 确认和编辑代码:GitHub Copilot 生成的代码不一定完全符合用户的需求,因此用户需要对生成的代码进行确认和编辑。用户可以通过按下回车键或者 Tab 键来接受或者拒绝 GitHub Copilot 的建议代码,也可以手动编辑代码以符合自己的需求。
- Copilot 也提供了一些快捷键,可以很方便地使用。
- 接受建议:
Tab
- 拒绝建议:
Esc
- 打开 Copilot:
Ctrl + Enter
(会打开一个单独的面板,展示 10 个建议) - 下一条建议:
Alt/Option + ]
- 上一条建议:
Alt/Option + [
- 触发行内 Copilot:
Alt/Option + \
(Coplit 还没有给出建议或者建议被拒绝了,希望手工触发它提供建议)
- 接受建议:
- 一些使用技巧:
Copilot X 是一款基于人工智能技术的代码生成工具,它可以为程序员提供更高效的编写代码的方式。下面是一些使用技巧:- 确定上下文:在使用 Copilot X 之前,需要确定当前需要编写的代码的上下文,包括编程语言、函数、类等等。这样可以帮助 Copilot X 更好地理解你的需求,从而生成更准确的代码。
- 使用良好的注释:在编写代码时,建议使用良好的注释,这可以帮助 Copilot X 更好地理解你的代码,从而生成更准确的代码。
- 给出明确的指令:在使用 Copilot X 时,需要给出明确的指令,比如输入函数名、变量名等等。这样可以帮助 Copilot X 更好地理解你的需求,从而生成更准确的代码。
- 不断尝试:Copilot X 是一款基于人工智能技术的工具,它的生成结果可能并不总是准确的。因此,我们需要不断尝试,比较不同的生成结果,从而找到最优的方案。
- 结合自己的思考:虽然 Copilot X 可以生成大部分代码,但是在某些情况下,我们仍然需要自己思考,比如算法的实现、架构设计等等。因此,在使用 Copilot X 时,需要结合自己的思考,从而更好地完成编码任务。总之,Copilot X 是一款非常有用的代码生成工具,但是它并不能完全取代程序员的工作。因此,在使用它时,需要结合自己的思考和经验,从而更好地完成编码任务
- Http 代理
有些用户可能会遇到 Copilot 不工作的问题,原因是 Copilot 无法访问互联网或 Github api。你可以在输出面板上看到以下错误信息:GitHub Copilot could not connect to server. Extension activation failed: "connect ETIMEDOUT xxx.xxx.xxx:443"
。
在这种情况下,你需要设置 http 代理。
首先,获取你的 http 代理信息。你可以向你的网络管理员询问代理地址和端口,或者如果你使用代理软件,你可以在代理软件设置中找到代理地址和端口。
下面是一个使用代理软件"ClashX"的例子,你可以在"设置"标签中找到代理地址和端口,代理地址是 "127.0.0.1:1080"。
然后,打开 VSCode 的设置,搜索http.proxy
,并设置代理地址和端口。
设置完成后,重新启动 VSCode,Copilot 应该可以正常工作。