2022年6月,GitHub Copilot 正式向大众发布。全世界的开发者都欣喜若狂,他们从2021年的测试版发行以来就一直等待着这一天。事实证明这个等待是值得的。 Copilot 实现了帮助开发者减少工作的同时加速他们的编码过程的目标。这近乎完美,除了一点—— Copilot 收费
虽然付费对于绝大多数开发者都不是问题,但依然导致了许多人去寻找可以代替 Copilot 的产品。因此 CodeGeeX 来了。本文将深入 CodeGeeX 并探索他为什么会成为 Copilot 的有效替代品。
跳转目录:
什么是 CodeGeeX
根据官方文档," CodeGeeX 是一个用130亿预训练参数在超过20种编程语言上训练的大规模多语言代码生成模型"。简单来说, CodeGeeX 是一个用人工智能驱动的帮助你快速编写代码的代码生成工具。
CodeGeeX 通过采取你的注释生成适合的代码,或者基于你前面的代码给出下一行的建议。
不同于 Copilot ,由 OpenAI CodeX 驱动。CodeGeeX 在昇腾 910 AI 处理器集群上训练 (可以说是世界上最强大的AI处理器)来驱动他们的软件。众所周知,昇腾 910 AI 处理器的功能是如此强大,以至于与Mindspore结合使用,它们的功能是其他AI训练卡(例如TensorFlow)的两倍。
昇腾 910 AI加速器由华为商标政策保护,CodeGeeX 使用 Apache License 2.0来保护他们的版权。Apache 许可证是 Apache 软件基金会的免费开源软件(FOSS)许可协议。
在性能和易用性方面,CodeGeeX 和 GitHub Copilot 相当。它甚至具有一些独特的功能,使其成为一个绝佳的替代选择,我们将在下面一一介绍。
CodeGeeX 代码生成工具
CodeGeeX 代码生成工具是今年在开发者中发生的最神奇的事情之一。它允许用户仅仅通过输入他们想要的注释生成代码块。 CodeGeeX 读取注释并且按行输出用户想要的代码。
CodeGeeX 生成的代码是可编辑的。如果你想要进行一些特定的修改,可以直接进行编辑。代码生成工具同时还有候选选项,它允许你针对同样的行级代码去生成多个版本的候选并且你可以选择一个你想要的。
这里是一个例子。我们想要用代码生成器创建一个JS的猜谜游戏。所有我们要做的仅仅是输入下面的注释:
// Create a number guessing game to generate a number between the range of 1 and 2.
// The game should prompt users for their username.
// Set range as function parameter and prompt the player to predict the generated number between the given range.
// At a correct guess, the player a point and move them to stage 2 by increasing the range limit value by 1
// At a wrong guess, the player loses a point, and the game ends
紧接着,我们要写第一个函数名或者任何你想要的函数名,并且生成器会完成剩下的,下面是 CodeGeeX 用我们输入的注释生成的代码:
function ilegal_number(range) {
range = range || 2;
var username = prompt('What is your name?');
for (var i = 1; i <= range; i++) {
if (i === range) {
return i;
}
if (i > range) {
alert('Your number must be lower than'+ range);
break;
}
var guess = prompt('Guess'+ i + ': ');
if (guess === null) {
alert('You should input the number');
break;
}
if (guess === 'exit') {
alert('Thanks for playing!');
return null;
}
if (guess === i) {
alert('You guessed it!');
alert('You scored:'+ (i * 2));
break;
}
}
alert('You tried too many times, try again!');
alert('You scored:'+ (i * 2));
return null;
}
CodeGeeX 代码翻译工具
CodeGeeX 翻译工具对于每一个开发者来说都是很棒的工具。就如字面意思所示,它可以翻译你写的语言的代码到另一个你选择的语言中去。
目前代码翻译功能只支持八种语言:
- Python
- Go
- Java
- JavaScript
- C++
- C#
- PHP
- TypeScript
使用代码翻译工具,选择你想要写的语言,在输入框写入或粘贴你要的代码。然后选择你想要翻译的语言,最后点击 翻译。
为了测试,我们使用先前猜谜游戏生成的结果并将其从 JavaScript 转成 C#
这里是生成的代码:
using System;
class IlegalNumber {
static int ilegal_number(int range) {
range = range == 0? 2 : range;
string username = Console.ReadLine("What is your name?");
int i;
for (i = 1; i <= range; i++) {
if (i == range) {
return i;
}
if (i > range) {
Console.WriteLine("Your number must be lower than " + range);
break;
}
string guess = Console.ReadLine("Guess " + i + ": ");
if (guess == null) {
Console.WriteLine("You should input the number");
break;
}
if (guess == "exit") {
Console.WriteLine("Thanks for playing!");
return null;
}
if (guess == i.ToString()) {
Console.WriteLine("You guessed it!");
Console.WriteLine("You scored: " + (i * 2));
break;
}
}
Console.WriteLine("You tried too many times, try again!");
Console.WriteLine("You scored: " + (i * 2));
return null;
}
public static void Main() {
Console.WriteLine("Welcome " + username);
Console.WriteLine("1 - 2147483647");
Console.WriteLine(ilegal_number(0) == null? "exit" : ilegal_number(1));
}
}
如你所见, CodeGeeX 可以以高精度的形式翻译所有你的代码片段到另一个语言
CodeGeeX vscode 插件
CodeGeeX 同样拥有 vscode 插件,不同于 GitHub Copilot 他是免费的。 GitHub vscode 插件在技术上是免费的,但是只针对认证的学生,老师和相关开源项目的维护者。对于其他用户则是以月租10d或年租100d的形式订阅付费。
CodeGeeX 插件不需要任何上述条件。你所需的仅仅是进入插件商店进行下载就行。
CodeGeex 有三种模式
隐匿模式
此模式的工作方式与代码生成工具相同。它查看你以前的代码或代码注释,并为你生成下一行代码。最好的部分是它不会干扰你的代码。它仅在你上次键入以来已有3秒钟的情况下建议代码,而建议的代码则以占位符的形式,仅在您按 Tab 键时才实现。
这里有个例子:
上述图片中,头文件 <stdio.h> 是 CodeGeeX 生产的。但在我按下 Tab 键前它仅仅以占位符的形式存在。此外, CodeGeeX 插件仅一次生成一行,所以它便于编辑。
交互模式
CodeGeeX 插件的交互式模式也具有代码生成的元素。载入该模式仅需要按下 Control+Enter ,你的 vscode 会分成两个版面。一个版面编写正常代码,另一个版面显示建议的代码片段。
提示词 (Prompt) 模式
提示词 (Prompt) 模式是 CodeGeeX 里更高级的模式。他会给你一些像代码解释,代码总结,甚至生成特定风格代码的功能。
使用提示词 (Prompt) 模式,你需要高亮你要解释的代码,然后按下 ALT+T 触发提示词 (Prompt) 模式。如果你选择解释,他会按行逐级解释你高亮的代码:
如果你想获取更多的关于 CodeGeeX vscode 插件的信息。这里有个说明
总结
鉴于 CodeGeeX 具有的功能,再加上它是免费的,我们一致认为 CodeGeeX 确实可以成为 GitHub Copilot 的合适替代品。它易于使用,多项支持,并且 AI 引擎足够聪明,可以作为你编码的助手。如果你仍在考虑是否使用它,可以尝试一下。这不会对你造成任何损失。
原文:Using CodeGeeX as a GitHub Copilot alternative
译者:innovation64(李洋)