CodeGeeX能打过Copilot吗?

9,744 阅读4分钟

写在前面

CodeGeex是一个类似于Github Copilot的、拥有130亿参数的多编程语言代码生成的预训练模型,是由清华大学、智谱AI等机构共同研发的。

当前CodeGeex是开源免费使用的CodeGeex开原地址,相对于Copilot的使用方式没有那么陡峭,CodeGeex使用文档还是比较简单的。

GeexCode无需VPN,可以直接在vscode插件平台安装使用,上手简单。

CodeGeex的4种使用模式

CodeGeex包含4种使用模式,分别是:

  • 隐匿模式
  • 交互模式
  • 翻译模式
  • 提示模式

隐匿模式

CodeGeex处于激活状态时,停止输入内容后,就会从光标处开始生成内容,生成待选内容后会以灰色显示,按Tab键即可插入生成结果。(这一点和Copilot一致)

交互模式

Ctrl+回车键激活交互模式,可以在右侧窗口显示生成的x个候选片段(x数量可以在设置的Candidate Num中修改,最多可以生成3个候选项,数目越多生成越慢),点击候选片段上的use code即可插入使用。(这一点是有点困惑,在实际使用中只生成了一个候选项)

翻译模式

Windows系统是Ctrl+Alt+T,Mac系统是Ctrl+Option+T激活翻译模式,CodeGeeX会把该代码翻译成匹配您当前编辑器语言的代码。点击翻译结果上方的use code插入。还可以在设置中选择您希望插入的时候如何处理被翻译的代码,您可以选择注释它们或者覆盖它们。(这个翻译模式相比较Copilot是不友好的,没有结合上下文生成匹配语言的代码,反而要进行二次交互)

当选择的内容是纯注释,点击Ctrl+Option+T可以选择待翻译的目标语言,一次性生成代码,个人体验比隐匿模式更直接:

提示模式

官方demo

可以对需要处理的代码进行选择,按Alt/Option + t触发提示模式,此时会出现预定义模板列表(默认的是只有Java和Python语言模板):

可以根据自己的需求在配置文件中的Prompt Templates,进行模板内容添加和编辑:

模板内容:

实际使用:

这个模式还需要探索,没有达到预期。

额外功能(个人认为可以归纳为编程语言转译)

可以点击在侧边栏的CodeGeex插件,在input框输入待处理代码和选择语言,在output框选择目标语言点击Translate按钮进行转译:

CodeGeex使用过程发现的问题

1、上下文结合能力不强,编码能力较弱

CodeGeex对上下文的识别能力不是很好,当我要它在ts文件中写一个贪心算法解决股票买卖问题时,它给我的是c++语言的头部引入:

我们看到官方给出的demo,也是如此,至少我没想明白。

在重新让它生成代码时,它会给我补充注释,但是补充的是英文,没有结合上下文内容:

翻译模式下,这个引入的内容不知道从哪儿来的:

明确要求使用ts语言生成代码片段,还是直接候选的是c++头部文件:

2、生成的内容累赘,不够简洁,还标注了模型训练代码来源(属实没想到)

当要它写出一个快排算法示例时,万万没想到还注释了模型训练的代码片段来源:

3、代码生成较慢

简单的代码不能够一次性给出,还要一小句一小句给出:

4、对JS/TS的支持不友好

在使用隐匿模式时,在py文件可以根据上下文生成代码,在ts或js文件却生成的是c#代码。

写在最后

在实际开发中,CodeGeeX的使用体验是远差于Copilot,但是CodeGeeX是清华实验室的开源免费项目,在算力支撑和数据量而言是远低于OpenAI。基于CodeGeeX项目的基础上,可以进行私有部署,对算法模型进行改进优化,还是需要支持蹒跚前行的国产开源模型的。

总之,还有许多需要做的。

学而知不足,水平有限,还望诸君多多指教。觉得文章不错的读者,不妨点个关注,收藏起来上班摸鱼的时候品尝。

欢迎关注笔者公众号「前端一码平川」,助你技术路上一码平川。