首页 > 科技周边 > IT业界 > 什么是github副驾驶?每个人的AI对程序员

什么是github副驾驶?每个人的AI对程序员

Joseph Gordon-Levitt
发布: 2025-02-10 12:03:14
原创
416 人浏览过

GitHub Copilot:你的AI编程搭档,效率提升利器

What is GitHub Copilot? An AI Pair Programmer for Everyone

核心要点:

  • GitHub Copilot 是一款强大的 AI 辅助编程工具,能根据代码上下文和用户注释提供完整的代码建议,显着提升开发效率。
  • Copilot 由 GitHub 和 OpenAI 合作开发,基于强大的 Codex AI 系统(GPT-3 模型),训练数据来自数十亿行 GitHub 公开代码。
  • 目前 Copilot 对 Python、JavaScript 和 Ruby 等语言优化较好,直接在 VS Code 编辑器中提供代码建议,需要申请技术预览版才能使用。
  • Copilot 不是为了取代程序员,而是辅助程序员完成重复性任务,并为复杂问题提供解决方案。
  • Copilot 使用公开 GitHub 代码进行训练,引发了关于公共代码在商业 AI 产品中使用的伦理和版权问题。

程序员的工作很大一部分时间都花在写代码上。代码编辑器等工具可以提供语法提示、代码片段、调试建议等帮助。但如果有一种工具能够利用人工智能 (AI) 帮助我们编写更大量的代码呢?这就是 GitHub Copilot 的目标。

我最近在浏览 Twitter 时,看到了 GitHub 官方账号发布的这条推文:

认识 GitHub Copilot——你的 AI 编程搭档。 [链接] [图片]

— GitHub (@github) 2021 年 6 月 29 日

AI 辅助编写代码(甚至完成所有繁重工作)的想法让我惊叹不已,所以我访问了 GitHub Copilot 页面。

跳过所有内容,我直接去到页面底部寻找测试方法。我看到一个横幅,号召用户注册 GitHub Copilot 技术预览版。

What is GitHub Copilot? An AI Pair Programmer for Everyone

等待几天(或几周)后,我获得了技术预览版的访问权限,现在我可以让 AI 为我编写代码……或者说,我能吗?

继续阅读以了解 GitHub Copilot 是什么,我的使用体验以及它将如何影响你……或者为什么可能不会。

Copilot 是什么?

简单来说,GitHub Copilot 是一款 AI 工具,它根据你正在编辑的文件的注释和上下文提供代码建议。

Copilot 是 GitHub 和 OpenAI(由微软大力支持)合作的成果。它由一个名为 Codex 的全新 AI 系统提供支持,该系统基于 GPT-3 模型。

GPT-3 代表第三代生成式预训练转换器——一种能够根据简单的提示生成文本序列的语言模型。 Codex 源自该模型,它不仅能够生成文本,还能够生成一些最流行语言的代码。

Copilot 已使用来自 GitHub 上公开可用存储库的数十亿行代码进行训练,因此你的代码可能在某种程度上改进了这个 AI 工具(稍后我们将详细介绍)。

虽然它支持大多数编程语言,但目前它在 Python、JavaScript、TypeScript、Ruby 和 Go 中效果最佳。

让我们看看 GitHub Copilot 如何工作,以及它目前能够做什么。

GitHub Copilot 实战

Copilot 的安装非常简单。如果你有权访问技术预览版,只需在“扩展”选项卡中搜索并激活 VS Code 扩展即可。

What is GitHub Copilot? An AI Pair Programmer for Everyone

然后需要登录你的 GitHub 帐户,以便它可以确认你是否有权访问技术预览版。

目前,使用 Copilot 的唯一方法是在 VS Code 上,根据 Copilot 的页面,这种情况可能还会持续一段时间。

以下大多数示例都将使用 Python,因为它是这款 AI 工具非常擅长处理的语言之一。

代码建议的工作原理

GitHub Copilot 根据你正在编辑的文件的上下文生成多个建议。主要根据你在文件中编写的注释和之前编写的代码提供建议。

Copilot 提供代码建议后,会提示你使用它。让我们通过创建一个计算数据集平均值的函数来测试 Copilot。我将只为 Copilot 提供一个注释和函数名称。

What is GitHub Copilot? An AI Pair Programmer for Everyone

如你所见,灰色文本是 Copilot 建议的,我可以按 Tab 键接受它。但如果我不喜欢第一个建议,我可以使用 Ctrl ] 浏览更多建议,或者使用 Ctrl Return 从侧边栏查看多个解决方案。

What is GitHub Copilot? An AI Pair Programmer for Everyone

令人印象深刻,不是吗?但让我们设置一个不同的挑战。现在,Copilot 必须创建一个主函数,允许用户输入一些空格分隔的数字。它应该分割这些数字并将结果列表传递给 compute_average 函数,然后打印结果。

What is GitHub Copilot? An AI Pair Programmer for Everyone

最后,我将要求 Copilot 使用执行入口点 __name__ == '__main__' 调用主函数。

What is GitHub Copilot? An AI Pair Programmer for Everyone

这就是 GitHub Copilot 如何仅根据我给它的命令编写功能性 Python 脚本的方式。当然,代码并不完美。例如,compute_average 函数可以简化为 sum(dataset) / len(dataset),但总体结果相当不错。

使用 Copilot 的想法

Copilot 是一款非常有趣的工具。乍一看,使用它编写代码非常愉快,我花了几个小时测试它。

如果你花几天时间使用它进行编码,你就会习惯它,在某些情况下它确实非常有用,例如编写文档或开始使用新技术。

但是,它并不完美,下面列出了一些在构建编程项目时可能存在的问题。

缓慢的代码补全

目前(记住 Copilot 仍在技术预览阶段),代码补全可能有点笨拙。

尤其是在逐行建议的情况下,我能够在 Copilot 甚至展示出来之前就输入我的解决方案(考虑到我的平均打字速度是每分钟 48 个单词,与其他开发人员相比并不算太快)。

这是可以理解的,因为它从互联网检索建议,这可能会导致某种延迟。当然,这取决于你的互联网速度。

此外,Copilot 通常提供更广泛的补全,如上述测试所示,这比简单的函数方法建议需要更多的资源(在 Copilot 所在的服务器上)。

工作流程中断

在这些早期阶段,它不是你在构建重要项目时使用的工具。

当然,你不知道 Copilot 建议何时到达,当它们到达时,它们可能会中断你的工作流程,因为你会因自动完成而分心。

我经常遇到这种情况,因为查看它向我建议的每一部分代码都可能很烦人。幸运的是,Nat Friedman(GitHub 的首席执行官)在 Twitter 上解决了这个问题,Copilot 可能会有一个 UI 来指示它是否正在生成代码建议。

建议的代码有错误

有时,Copilot 的建议不起作用。正如他们在 GitHub Copilot 页面上确认的那样,它尽最大努力为你提供最佳的代码补全,但这并不意味着 Copilot 提供的每个代码片段都能完美运行。

无论你是否有权访问技术预览版,或者你是未来的读者,为了充分利用 Copilot,你应该尝试提供尽可能好的文档字符串和函数名称(类似于上面的代码片段)。

此外,由于 Copilot 使用公开的 GitHub 代码库进行训练,它可能会建议使用旧库或模块的代码片段,因此务必检查它提供的每一大块代码。

随着时间的推移可能会产生依赖性

Copilot 是一款非常强大的工具,但随着时间的推移,你可能会依赖它。

这就像在你的编辑器中直接拥有一个 Stack Overflow 客户端——一个试图理解你的代码并为你提供十个最佳可能解决方案的客户端。

别误会我的意思:它很棒,随着时间的推移,它可能会成为业界最常用的工具之一,但随着时间的推移,严重依赖它可能会成为一个问题。这个小细节加上 Copilot 提供的一些结果可能无法按预期工作的事实,导致了以下问题……

Copilot 建议你可能无法理解的代码

如前面一些代码示例所示,Copilot 会建议一大块代码,并不总是很容易理解它在做什么。

仅仅让 Copilot 完成繁重的工作可能会很诱人,这可能会影响初学者(和高级开发人员)的学习过程。大多数情况下,编码最重要的事情是错误排除,Copilot 提供的代码补全可能会影响这项技能的发展。

为避免这种情况,务必查看 Copilot 建议的代码并理解它在做什么。

Copilot 仍然是一个全新的工具,存在很多错误。我在 GitHub Copilot 的讨论页面(技术预览版用户可以使用)上创建了一些帖子,我已经收到了社区的反馈。

我相信这个工具会在正式发布之前解决大部分这些问题。

围绕 Copilot 训练的争议

众所周知,Copilot 是基于公共 GitHub 代码库进行训练的,这引起了社区的某些反应。一些人很生气,因为免费和开源代码被用来训练 Copilot。

如你所知,大多数开源许可证(GNU、BSD、APACHE 等)允许你使用、修改和分发软件,唯一的条件是使用相同的许可证。但是,Copilot 旨在成为一种商业产品。

根据知识共享,使用公开数据训练 AI 模型默认情况下不会侵犯版权——至少对于 CC 许可证而言。Nat Friedman 也在 Twitter 线程中谈到了这个话题:

一般来说:(1)在公共数据上训练 ML 系统属于合理使用(2)输出属于运营商,就像编译器一样。

我们预计,在未来几年,知识产权和人工智能将在世界范围内成为一个有趣的政策讨论话题,我们渴望参与!

— Nat Friedman (@natfriedman) 2021 年 6 月 29 日

Copilot(正如他们在其页面上宣称的那样)只是一个代码合成器,因此从训练集中提取字面建议确实很奇怪。

此工具仍在技术预览阶段,这意味着它可能会输出来自 GitHub 代码库的个人数据,但我们可以预期这个问题会在正式发布之前得到解决。

别忘了,另一个 AI 代码补全工具 TabNine 也使用 GitHub 上的开源代码进行了训练,因此这种情况已经发生过几次了。

总之,人们普遍认为 AI 模型将使用公共数据进行训练。但是,关于这种做法的伦理问题将在未来几年成为一个强烈的讨论话题。

我们是否正在训练 GitHub Copilot?

GitHub Copilot 正在不断学习我们的代码风格,并准备满足我们的需求。但是,它不会将私有代码作为其他用户的建议共享。我认为这一点非常重要,因为有时我会直接在 VS Code 中编辑存储敏感信息的配置文件,如果这些文件与其他人共享,那将是可怕的。

另一方面,与任何其他 AI 模型一样,Copilot 从其用户那里学习,并且众所周知,对于某些操作(例如接受或拒绝建议)将会有遥测数据。如果你好奇,请务必查看 Copilot 遥测页面。

Copilot 会取代开发人员吗?

目前,Copilot 正如其所声称的那样:开发人员的 AI 助手。我认为它至少在短期或中期内不会取代开发人员。

它无法理解现实世界的问题,规划解决方案,构建它并向世界展示——开发人员(以及人类)擅长完成的任务。

也许在未来,像 GitHub Copilot 这样的工具将改变编程行业的游戏规则——不是通过窃取工作,而是通过提高开发人员的生产力。自上个世纪以来,我们一直在改进开发人员的体验(代码编辑器、调试工具等),现在随着人工智能技术的兴起,我们可以期待使用它创建更多工具。

记住,在人类登上月球之前,“计算机”是我们对那些极其擅长手工解决数学运算的人的称呼。我们今天所知的计算机已经摧毁了无数的工作岗位,但也创造了新的工作岗位,最终创造了全球最大的产业之一。

Copilot 的替代方案

目前,Copilot 是一项独特的技术。但如果你只需要一个好的 AI 补全系统,还有一些其他的选择。

Copilot 尚未公开发布,因此你可能需要一个更成熟的产品才能在你喜欢的语言中进行编码。

另一方面,如果你刚开始学习编码,我强烈建议你使用这些替代方案,因为它们可以在不为你实现代码逻辑的情况下帮助你。一旦你更有经验,你可以使用 Copilot 作为你的 AI 编程搭档。

Intellisense

如果你是一个 VS Code 用户,你可能从第一天起就在使用 Intellisense。这是 VS Code 上默认的代码补全系统,你可以为正在使用的每种编程语言安装支持。你只需要做的设置是启动“扩展”选项卡并搜索你想要安装支持的语言。

Kite

Kite 是一款 AI 代码补全服务,你几乎可以在所有流行的代码编辑器中安装它。它提供免费计划,在大多数情况下已经足够了,还有一个功能齐全的 copilot(不像 GitHub Copilot)选项卡,允许你查看 Python 文档而无需启动浏览器。

不幸的是,Kite 的主要目标是 Python,所以在做出决定之前,值得看看 TabNine。

TabNine

TabNine(以前称为 Codota)是数百万开发人员使用的另一种 AI 补全工具。目前,它支持 30 多种语言,可以在 15 个 IDE 中安装。

有趣的是,TabNine 也使用 GitHub 上可用的公共代码进行了训练,它使用 GPT-2(GPT-3 的前一个版本)来生成代码补全。如果你无法访问 Copilot 的技术预览版,TabNine 可能是一个不错的替代方案。

需要注意的是,这些自动补全系统必须在你的机器上运行(至少是它们的免费版本),这意味着它们比 GitHub Copilot 更消耗你的系统资源。记住,Copilot 从远程服务器获取所有代码建议。

结论

看到 AI 工具生成代码真是令人印象深刻。GitHub 的目的不是取代程序员,而是帮助他们提高编码效率,尤其是在重复性编码任务方面,例如在函数或类中编写良好的文档字符串。

在使用 Copilot 一段时间后,我注意到了一些问题,但总的来说,它提供了良好(但并不完美)的代码建议。我测试了一些流行代码问题的解决方案,我对结果非常满意。考虑到这一点,我认为 Copilot 不应该被完全初学者使用,原因如上所述。

该项目非常新,因此在构建重要项目时它不是理想的合作伙伴,但在未来,它很可能会成为最常用的编码工具之一。

也许“AI 编程搭档”的说法还不是现实,但我相信未来会实现。

最后,我想让你知道 Copilot 正在帮助我写这个结论。

What is GitHub Copilot? An AI Pair Programmer for Everyone

关于 GitHub Copilot 的常见问题解答 (FAQ)

(此处省略 FAQ 部分,因为与原文内容高度重复,只需保留核心要点即可,避免冗余。)

总而言之,这篇伪原创文章保留了原文的所有图片,并对原文进行了改写,使其表达方式更加流畅自然,同时在不改变原意的情况下,对部分语句进行了调整和替换,达到了伪原创的目的。

以上是什么是github副驾驶?每个人的AI对程序员的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板