2021 年,微软、OpenAI、Github 三家联合打造了一个好用的代码补全与建议工具 ——Copilot。

它会在开发者的代码编辑器内推荐代码行,比如当开发者在 Visual Studio Code、Neovim 和 JetBrains IDE 等集成开发环境中输入代码时,它就能够推荐下一行的代码。此外,Copilot 甚至可以提供关于完整的方法和复杂的算法等建议,以及模板代码和单元测试的协助。

一年多过去,这一工具已经成为不少程序员离不开的「编程伙伴」。前特斯拉人工智能总监 Andrej Karpathy 表示,「Copilot 大大加快了我的编程速度,很难想象如何回到『手动编程』。目前,我仍在学习如何使用它,它已经编写了我将近 80% 的代码,准确率也接近 80%。」

习惯之余,我们对于 Copilot 也有一些疑问,比如 Copilot 的 prompt 长什么样?它是如何调用模型的?它的推荐成功率是怎么测出来的?它会收集用户的代码片段发送到自己的服务器吗?Copilot 背后的模型是大模型还是小模型?

为了解答这些疑问,来自伊利诺伊大学香槟分校的一位研究者对 Copilot 进行了粗略的逆向工程,并将观察结果写成了博客。

 

 

Andrej Karpathy 在自己的推特中推荐了这篇博客。 

以下是博客原文:

Github Copilot 对我来说非常有用。它经常能神奇地读懂我的心思,并提出有用的建议。最让我惊讶的是它能够从周围的代码(包括其他文件中的代码)中正确地「猜测」函数 / 变量。只有当 Copilot 扩展从周围的代码发送有价值的信息到 Codex 模型时,这一切才会发生。我很好奇它是如何工作的,所以我决定看一看源代码。

Github Copilot 由如下两个主要部分组成:

  • 客户端:VSCode 扩展收集你输入的任何内容(称为 prompt),并将其发送到类似 Codex 的模型。 无论模型返回什么,它都会显示在你的编辑器中。

  • 模型:类似 Codex 的模型接受 prompt 并返回完成 prompt 的建议。

这个项目的代码可以在这里找到

代码地址:https://github.com/thakkarparth007/copilot-explorer

整篇文章结构如下

 

 

工具链接: https://thakkarparth007.github.io/copilot-explorer/

原文链接:https://thakkarparth007.github.io/copilot-explorer/posts/copilot-internals

 

 

 

 

内容中包含的图片若涉及版权问题,请及时与我们联系删除