去年 6 月,微软旗下的 GitHub 和OpenAI 推出了 Copilot ,这是一项为 Microsoft Visual Studio 等开发环境中的整行代码提供建议的服务。 Copilot 作为可下载的扩展程序提供,由一个名为 Codex 的 AI 模型提供支持,该模型经过数十亿行公共代码的训练,可以根据现有代码的上下文建议额外的代码行和功能。 Copilot 还可以利用其知识库和当前上下文,根据对开发人员想要完成的目标的描述(例如,“Say hello world”)提出方法或解决方案。
微软在 Build 2022 上宣布,虽然 Copilot 之前以技术预览版的形式提供,但它将在今年夏天的某个时候开始普遍提供。Copilot 也将免费提供给学生以及“经过验证的”开源贡献者。关于后一点,GitHub 表示将在以后分享更多内容。
Copilot 体验不会随着普遍可用性而发生太大变化。和以前一样,开发人员将能够循环浏览有关 Python、JavaScript、TypeScript、Ruby、Go 和其他数十种编程语言的建议,并接受、拒绝或手动编辑它们。 Copilot 将适应开发人员所做的编辑,将特定的编码样式与自动填充样板或重复代码模式相匹配,并推荐与实现代码匹配的单元测试。
除了 Visual Studio Code 之外,Noevim 和 JetBrains 也可以使用 Copilot 扩展,也可以在 GitHub Codespaces 上的云中使用。
Copilot Explain 是与 Copilot 通用版本相吻合的一项新功能,它将代码翻译成自然语言描述。被描述为一个研究项目,其目标是帮助新手开发人员或那些使用不熟悉的代码库的人。
“今年早些时候,我们推出了 Copilot Labs,这是一个单独的 Copilot 扩展,作为机器学习实验应用程序开发的试验场,可改善开发人员体验,”GitHub 产品副总裁 Ryan J. Salva 在电子邮件采访中告诉 TechCrunch。 “作为 Copilot Labs 的一部分,我们推出了‘解释这段代码’和‘翻译这段代码’。这项工作适合我们正在测试的一类实验功能,可以让您了解可能性并让我们探索用例。也许通过“解释这段代码”,开发人员正在权衡一个不熟悉的代码库并希望快速了解正在发生的事情。此功能可让您突出显示代码块并要求 Copilot 用通俗易懂的语言对其进行解释。同样,Copilot Labs 本质上是实验性的,所以事情可能会破裂。实验室实验可能会或可能不会发展成为 Copilot 的永久功能。”

Copilot 的新功能 Copilot Explain 将代码翻译成自然语言解释。
由于 AI 模型的复杂性,Copilot 仍然是一个不完美的系统。 GitHub 警告说,它可能会产生不安全的编码模式、错误和对过时 API 的引用,或者反映其训练数据中不完美的代码的习语。 Copilot 建议的代码可能并不总是编译、运行甚至有意义,因为它实际上并没有测试建议。此外,在极少数情况下,Copilot 建议可以包括个人数据,例如来自其训练集的姓名和电子邮件——更糟糕的是,“有偏见、歧视性、辱骂性或冒犯性”的文本。
GitHub 表示,它已实施过滤器来阻止以标准格式和冒犯性词语显示的电子邮件,并且它正在构建过滤器以帮助检测和抑制从公共存储库中重复出现的代码。 “虽然我们正在努力使 Copilot 变得更好,但 Copilot 建议的代码应该像任何其他代码一样经过仔细测试、审查和审查,”Copilot 网站上的免责声明写道。
虽然自去年推出技术预览版以来,Copilot 可能已经有所改进,但具体程度尚不清楚。基础模型 Codex(OpenAI 的GPT-3的后代)的功能已被 DeepMind 的AlphaCode和开源PolyCoder等系统匹配(甚至超过)。
“我们看到 Copilot 在生成更好的代码方面取得了进展……我们正在利用我们在 [其他] 工具方面的经验来提高 Copilot 建议的质量——例如,通过对 CodeQL 扫描的训练数据给予额外的重视,或者在运行时分析建议,” Salva 断言——“CodeQL”指的是 GitHub 用于自动进行安全检查的代码分析引擎。 “我们致力于帮助开发人员提高工作效率,同时提高代码质量和安全性。从长远来看,我们相信 Copilot 将编写比普通程序员更安全的代码。”
缺乏透明度似乎并没有削弱对 Copilot 的热情,微软今天表示,大约 35% 的代码由开发人员在技术预览中生成的 Java 和 Python 等语言生成。该公司声称,在整个预览过程中,成千上万的人经常使用该工具。