- AI辅助编程Python实战:基于GitHub Copilot和ChatGPT
- (美)利奥·波特 (加)丹尼尔·津加罗
- 674字
- 2025-03-13 18:31:20
1.2.2 一分钟搞懂Copilot的背后原理
你可以把Copilot想象成你与正在编写的程序之间的一个中介层。你不必直接编写Python代码,只须用文字描述你想要的程序功能(这些文字称作“提示词”),Copilot便能生成相应的程序代码。
Copilot的智能引擎是一种精妙的计算机程序,名为大语言模型(Large Language Model,LLM)。这种模型掌握了单词与单词之间的内在联系,包括识别特定语境中最合适的词汇搭配,并基于这些信息预测出一段提示词后面最匹配的单词顺序是什么。
想象一下,我们请你预测这个句子中的下一个单词可能是什么:“The person opened the ________.”你可以想到很多选项,例如door、box或conversation等,但有些单词如the、it或open则显然不合适。LLM会综合考虑当前上下文来生成下一个合适的单词,并持续不断地进行这一过程,直至任务完成。
请注意,我们并没有说Copilot明白它正在做的事情。它仅仅是依靠当前的上下文来持续生成代码。在你今后的编程之路上,要始终铭记:只有我们自己能判断生成的代码是否真正实现了自己的意图。虽然大多数情况下它能够做到,但你仍然应该时刻保持适度的怀疑精神。图1.2描绘了Copilot根据提示词生成程序的过程。

图1.2 Copilot根据提示词生成程序的过程
你或许会好奇,为什么Copilot为我们编写的是Python代码,而不是直接生成机器码。这样的话,Python不就是一个可有可无的中间环节吗?其实不然,我们让Copilot编写Python代码的原因在于它可能会出错。一旦它出错,我们就需要对这些错误进行修正,相比于机器码,处理Python代码无疑要简单得多。
另外,几乎没有必要检查由Python代码转换的机器码是否准确。这在一定程度上归功于Python语言规范的确定性。我们可以畅想,或许未来Copilot已经精准到无须检查它生成的Python代码,但目前我们距离这一目标还有很长的路要走。