对于许多用户来说,生成式人工智能,无论是代码、文本、图像还是其他用例,都像是一个神奇的黑盒子。用户通常会浏览一个网站、安装一个应用程序或设置一个扩展,然后开始看到人工智能工具的结果。但是,你有没有想过,这个神奇的黑盒子里到底装了什么,或者它到底是如何工作的?

在这篇文章中,我们将为您揭开 Cody 代码 AI 完成的神秘面纱,Cody 是我们的代码 AI 助手,它了解您的整个代码库。利用大型语言模型(LLM)生成代码 AI 响应是一件非常简单的事情,但在生产级应用程序中这样做,既要服务于许多不同的用例、编码语言、工作流和其他变量,又要实现高水平的完成接受度和开发人员的满意度,则完全是另外一回事了。我们将介绍底层 LLM 的重要性,并将实施扩展到一个功能齐全的人工智能工程系统,其中包括各种前处理和后处理步骤,讨论上下文的作用和如何检索上下文,以及探索代码人工智能完成的生命周期。让我们深入探讨!

代码补全 101

代码自动补全请求的最基本形式是在编辑器中获取当前代码,并要求 LLM 将其补全。你也可以在 ChatGPT 中这样做!请看下面的例子:

// sort.js

function bubbleSort(array) {

 |

}

从这个有限的文件中,我们已经掌握了很多信息:

光标位于函数体内部,因此用户很可能会在这个位置继续编写代码

我们知道文件名是 sort.js

光标之前的代码(我们称之为前缀)对我们要编写的代码有很强的提示作用

光标之后的代码(后缀)是空的,只有一个结尾括号。