GitHub Copilot:它是什么、它如何工作以及如何使用它
已发表: 2024-04-25生成式人工智能正在改变创意协作的面貌,而编码助手是一些最令人兴奋的新应用程序。 这些助手可以理解您的代码、建议补全、生成整个函数并提出替代方法。 以下是领先的 AI 编码助手之一 GitHub Copilot 的概述。
目录
- 什么是 GitHub Copilot?
- GitHub Copilot 的工作原理
- 谁创建了 GitHub Copilot?
- GitHub Copilot 是免费的吗?
- 如何使用 GitHub Copilot
- 最大限度提高效率的技巧
- 使用 GitHub Copilot 的优点
- 使用 GitHub Copilot 的缺点
- 结论
什么是 GitHub Copilot?
GitHub Copilot 是一个 AI 编码助手,也称为 AI 结对程序员。 使用它有两种主要方法:您可以开始编写代码并让 GitHub Copilot 完成它,或者您可以使用自然语言描述您希望代码执行的操作,AI 将为您生成代码片段。
GitHub Copilot 可以使用公共存储库中出现的所有语言编写代码,包括 JavaScript、TypeScript、Python 和 Ruby。
您可以在集成开发环境 (IDE) 和命令行中使用 GitHub Copilot。 如果您有企业级帐户,也可以在 GitHub.com 上访问。
GitHub Copilot 的工作原理
代码自动完成工具已经存在一段时间了。 GitHub Copilot 更进一步,因为它可以编写整行代码和函数并回答您的问题。 以下是该平台背后机制的概述。
了解生成式人工智能和大语言模型 (LLM)
GitHub Copilot 基于大型语言模型 (LLM) 构建。 法学硕士可以分析和处理大量信息并生成新内容,例如代码、文本或图像。
在 Copilot 的早期阶段,GitHub 尝试了 OpenAI 制作的 LLM GPT-3。 让我们看看 GPT 模型如何在高层次上工作。
首先,开发人员将大量文本输入到模型中。 文本可以是网页、书籍、电影对话或论坛讨论。 就 GitHub Copilot 而言,模型被输入了数十亿行开源代码。
GPT 模型处理该数据以识别单词和语言结构之间的模式。 他们使用上下文来理解内容的含义,类似于我们如何使用上下文线索来弄清楚新单词的含义。
一旦模型开发出上下文线索和语言模式图,它就可以对序列中接下来会发生什么做出有根据的预测。 因此,当您开始在 GitHub Copilot 中输入代码时,它会根据学到的数据预测代码的下一部分。 当您提出问题或从头开始请求新代码时,它的响应就像是经过深思熟虑的猜测。 它会一一预测每个单词或代码片段。 举一个基本的例子,当 GitHub Copilot 看到开发人员写了“if __name__”时,它可以准确地预测该行的其余部分“__main__”。
初始训练后,模型根据人类反馈进行微调。 人类会审查其响应并对其准确性、相关性和道德因素(例如偏见和冒犯性)进行评级。 随着时间的推移,模型会了解人类更喜欢哪种反应。
GitHub Copilot 背后模型的演变
2021 年,GitHub 和 OpenAI 发布了 Codex,这是 GPT-3 的特定编码分支。 GitHub 完善并训练了该模型,以提供更相关、更理想的响应。 2023 年,GitHub 宣布正在为 Copilot 使用更智能、更高效的模型,但没有提供名称或培训的详细信息。
使用 GitHub Copilot 的主要界面
GitHub Copilot 为所有用户提供两个主要界面:Copilot Chat 和 CLI 中的 Copilot。
Copilot Chat 在您的 IDE 中运行。 目前它支持 Visual Studio Code、Visual Studio 和 JetBrains IDE 套件。 您可以突出显示一段代码并编写有关它的提示,而无需离开编辑器。 您还可以编写函数或代码行的开头,Copilot 会为您建议其余部分。 Copilot Chat 还可以解释代码片段、建议错误修复、描述编程概念以及编写测试用例。
CLI 中的 Copilot 在终端内提供聊天界面。 该插件允许您提出有关命令行的问题或执行提示,例如提供解释或建议。
谁创建了 GitHub Copilot?
GitHub Copilot 是 GitHub、Microsoft 和 OpenAI(该公司生产 ChatGPT 和 DALL-E)之间的合作成果。
GitHub Copilot 最初于 2021 年 10 月作为有限技术预览版发布。 2022 年 6 月,它通过订阅向所有开发者广泛提供。
GitHub Copilot 可以免费使用吗?
GitHub Copilot 提供三个付费等级:
- 适用于个人用户的副驾驶个人版
- 组织的副驾驶业务
- Copilot Enterprise 适用于使用 GitHub Enterprise Cloud 的公司,它允许您在一个帐户下拥有多个组织
所有订阅均按每个用户每月定价,但 Copilot 个人版除外,它也提供按年订阅。 所有级别都提供 Copilot Chat、GitHub CLI 以及插入代码编辑器的功能。 个人层和业务层之间的一些关键区别是对审核日志的访问和增强的策略控制。
如果您想在付费之前试用 GitHub Copilot,所有用户均可享受 30 天的一次性试用。
教师、学生和热门开源项目的维护者可以免费使用 GitHub Copilot。
使用 GitHub Copilot 的提示和技巧
GitHub Copilot 在理解自然语言和预测您的需求方面令人印象深刻。 但您仍然需要了解一些提示和技巧,才能始终获得高质量、相关的结果。 让我们回顾一下一些最佳实践,这些最佳实践可以增加您获得所需答复的机会。
写出详细的提示
为了生成有效的响应,GitHub Copilot 需要详细且准确的提示。 为此,您需要在提示中包含正确的信息。 例如,如果你想编写代码来绘制一座房子,你需要详细说明房子的颜色、层数以及你想要查看它的角度。
提供例子
如果您向 GitHub Copilot 提供代码示例,您更有可能获得所需的结果。 这是一种向提示添加上下文的简单方法,无需解释您的设想。 举个例子,误解的空间就会减少。
保持一致的命名约定
使用与每个变量或函数的用途相关的特定名称来帮助 GitHub Copilot 了解上下文。 这种做法还有助于保持 GitHub Copilot 的输出井井有条,因为它复制了您在代码中使用的命名约定。
将事情分解为简单的步骤
GitHub Copilot 在编写较短的代码片段时效果最佳。 将您的任务分解为简单的步骤以获得最佳结果。 例如,如果你想编写一个函数,请清楚地解释 GitHub 需要遵循的每个步骤。 让它为每个步骤一一生成代码片段。
查看 GitHub Copilot 的回复
虽然 GitHub Copilot 擅长生成可用代码,但它仍然需要人工监督。 仔细检查每个响应,确保其准确、符合编码最佳实践、遵守您的策略并且不包含安全漏洞。
打开相关选项卡
通过保持打开与您的项目相关的其他几个选项卡,您可以更有效地工作并增加获得更好响应的几率。 GitHub Copilot 使用一种称为相邻选项卡的技术来获取有关您的请求的更多上下文。 它会扫描 IDE 中打开的其他选项卡,以查找匹配的代码片段并将它们包含在其响应中。
使用 GitHub Copilot 最大限度提高开发效率的方法
GitHub Copilot 可以通过多种方式简化您的流程,从生成新代码到编写文档。 以下是该人工智能结对程序员最流行的一些应用程序。
生成新代码
GitHub Copilot 可以从头开始创建代码。 您可以通过编写目标的详细描述来创建新的函数、类和其他代码结构。 使用 GitHub Copilot 从头开始编写最适合起草样板文件和基本代码。
代码建议和自动完成
当您编写代码时,GitHub Copilot 可以根据您正在编辑的文件的上下文提出建议。 有时,它会提供多种建议,您可以切换以找到您喜欢的建议。 您还可以合并多个建议中的代码。 如果您不喜欢 GitHub Copilot 生成的第一批建议,您可以请求更多建议。
高效的调试和纠错
您可以要求 GitHub Copilot 推荐修复代码错误的策略和解决方案。 在 IDE 中,描述 Copilot Chat 中的错误并寻求解决方案。 如果您使用 CLI,则可以使用 /fix 生成潜在的修复程序。 GitHub Copilot 会考虑错误代码、周围代码和代码语法来生成可能的解决方案。
此外,如果命令未在命令终端中运行,GitHub Copilot 会建议代码失败的可能原因并提供潜在的解决方案。
自动化测试用例编写
当您想要验证代码是否按计划运行时,GitHub Copilot 可以帮助您编写单元测试用例。 您可以选择一段代码并要求 GitHub Copilot 创建单元测试或描述您想要测试的内容。
交互式代码讨论
您可以使用自然语言与 GitHub Copilot 进行交互,提出问题并获取有关编码挑战的指导。 您无需搜索论坛或挖掘文档,而是可以直接在编辑器中获得编码问题的答案。
尝试向 GitHub Copilot 询问以下问题:
- 如何使用特定的编码语言建立新项目
- 各种软件架构的优缺点
- 解释一段代码的作用
- 提供与特定语言相关的语法规则
- 讨论编码问题,例如为什么代码未按预期执行
简化文档
GitHub Copilot 可以为您的代码编写文档。 开始编写您的文档,它会自动为您完成。 就像编码自动完成一样,您可以循环浏览建议以找到适合您的代码的建议。 然后,您可以选择正确的文本并进行编辑,以使文档完整且准确。 它还可以建议测试、使用和贡献者指南等小节。
代码优化和重构
您可以使用 GitHub Copilot 使您的代码更加高效、可读或可维护。 突出显示一段代码并提示它对其进行优化。 借助此功能,GitHub Copilot 可以帮助您简化重新组织代码块、重命名变量以及使代码更加简洁等工作。
使用 GitHub Copilot 的优点
使用 GitHub Copilot 可帮助您更高效地工作,并且可以成为您的编码教育工具包的一部分。 您还可以从与 GitHub 庞大社区分享见解中受益。
让我们仔细看看使用 GitHub Copilot 的优点。
简化编码效率
生成式人工智能极大地提高了开发人员的生产力。 根据一项研究,AI 结对程序员可以将代码生成时间减少 35-45%。 GitHub Copilot 通过自动化手动重复性任务来加快编码流程。 这使您可以将更多时间花在更复杂的编码活动上。
以下是一些可以节省您时间的方法:
- 减少键入重复代码片段或搜索特定语法的需要
- 自动化文档编制
- 无需离开编辑器即可提供编码问题的答案
- 为常见任务编写样板代码,例如设置函数、类或错误处理
- 节省寻找过时、低效代码和寻找改进方法的时间
- 提供代码建议以帮助您启动项目
持续学习的教育资源
GitHub Copilot 可以帮助新手和经验丰富的程序员提高他们的技能。 当与其他编码教育资源一起使用时,它可以帮助您学习基础知识。
就是这样:
- 研究编码概念和术语
- 获取有关改进代码的方法的建议
- 鼓励使用编码最佳实践
- 了解正确的语法和文件结构,这有助于您识别这些实践背后的底层模式
- 探索解决编码问题的多种方法
- 询问有关代码片段的问题,以加深您对它们的含义或原因的理解
社区参与
实验和探索对于成功使用生成式人工智能平台至关重要。 由于 GitHub 拥有一个大型、活跃的全球社区,因此您很可能会找到与您有共同点的 Copilot 用户。 该社区允许用户互相学习、分享技巧并讨论最新更新。 您可以在论坛、社交媒体、播客和 YouTube 上找到有用的相关信息。
拥有庞大的用户群也有助于改进 GitHub Copilot。 用户提供反馈,帮助训练模型,创建创新用例,并找到将 GitHub Copilot 与其他插件和扩展相结合的新方法。
使用 GitHub Copilot 的缺点
与所有技术一样,GitHub Copilot 也有潜在的缺点。 根据您的编程语言,它可能不准确或生成不一致的结果。 其培训和反应也存在道德问题。
使用 GitHub Copilot 时,请记住这些潜在的陷阱。
响应不准确或有问题
由于 GitHub Copilot 是根据公开可用的代码进行培训的,因此它可能反映了其知识库中的一些缺陷。 例如,其响应可能包含错误、引用过时的 API 或包含安全漏洞。 它还可能泄露私有代码(例如 API 密钥)。
此外,生成式人工智能总是有产生攻击性或有偏见的反应的风险。 虽然 GitHub 已经针对攻击性提示和响应实施了保护措施,但它们并不是万无一失的。
最终,您有责任审查代码的准确性、有效性和安全性。 GitHub 提供了多种功能来帮助您评估代码,例如 GitHub Actions、Dependabot、CodeQL 和代码扫描。
编程语言熟练程度
GitHub Copilot 在技术上精通所有公开可用的编程语言。 然而,对于某些人来说,其答复的质量要好于其他人。
根据 Github 的说法,以下是它最擅长的语言:
- Python
- JavaScript
- 打字稿
- 红宝石
- 去
- C#
- C++
这些语言往往是公共存储库上最受欢迎的语言,因此 GitHub Copilot 在使用它们时表现最佳。 如果您使用公共论坛中不常讨论的语言,则更有可能得到不准确的信息和更少的回复。
道德问题
与所有人工智能一样,GitHub Copilot 使用公共代码及其输出版权的能力存在道德问题。 GitHub Copilot 的开发人员表示,使用公共数据进行训练属于合理使用的保护范围。
批评者表示,GitHub 的训练数据实际上受到 Copyleft 或自由开源软件 (FOSS) 许可证的保护,这要求您遵循特定的归属指南。 借助 Copyleft 许可证,作者可以决定如何使用他们的作品。 一些专家表示 GitHub 违反了这些原则。 其他人说 GitHub Copilot 没有做任何违法的事情,但我们需要就人工智能及其对开源数据的使用进行更广泛的对话。
最终,监管机构和法院将做出决定。 这并不是避免使用 GitHub Copilot 的理由,但需要注意。 如果您广泛将 GitHub Copilot 用于商业项目,您可能需要与专家讨论您面临的法律风险。
GitHub Copilot 和其他 AI 编码助手的下一步是什么?
GitHub Copilot 可以帮助您更快地编码、鼓励使用编程最佳实践并扩展您的编码知识。 其广泛的功能,从建议下一行代码到编写测试用例,简化了编码中许多更手动、更乏味的方面。 从新开发人员到经验丰富的开发人员,每个人都可以利用 GitHub Copilot 的功能并向其庞大的用户社区学习。
尽管如此,它仍然无法替代人类知识。 您应该检查其响应以确保它们准确且安全。 您可能还更喜欢将它用于某些编程语言而不是其他语言,因为它的结果可能会有所不同。
那么 GitHub Copilot 和其他生成式 AI 平台的下一步是什么? 生成式人工智能正在以闪电般的速度发展,保持最新工具、应用程序和法规的更新是为未来做好准备的最佳方式。