CodeGeeX能打過Copilot嗎?
寫在前面
CodeGeeX是一個(gè)類似于Github Copilot的、擁有130億參數(shù)的多編程語(yǔ)言代碼生成的預(yù)訓(xùn)練模型,是由清華大學(xué)、智譜AI等機(jī)構(gòu)共同研發(fā)的。
當(dāng)前CodeGeex是開源免費(fèi)使用的CodeGeex開源地址,相對(duì)于Copilot的使用方式?jīng)]有那么陡峭,CodeGeex使用文檔還是比較簡(jiǎn)單的。
CodeGeeX無(wú)需VPN,可以直接在vscode插件平臺(tái)安裝使用,上手簡(jiǎn)單。
CodeGeex的4種使用模式
CodeGeex包含4種使用模式,分別是:
- 隱匿模式
- 交互模式
- 翻譯模式
- 提示模式
隱匿模式
CodeGeex處于激活狀態(tài)時(shí),停止輸入內(nèi)容后,就會(huì)從光標(biāo)處開始生成內(nèi)容,生成待選內(nèi)容后會(huì)以灰色顯示,按??Tab鍵?
?即可插入生成結(jié)果。(這一點(diǎn)和Copilot一致)。
交互模式
按Ctrl+回車鍵激活交互模式,可以在右側(cè)窗口顯示生成的x個(gè)候選片段(x數(shù)量可以在設(shè)置的Candidate Num中修改,最多可以生成3個(gè)候選項(xiàng),數(shù)目越多生成越慢),點(diǎn)擊候選片段上的use code即可插入使用。(這一點(diǎn)是有點(diǎn)困惑,在實(shí)際使用中只生成了一個(gè)候選項(xiàng))。
翻譯模式
Windows系統(tǒng)是Ctrl+Alt+T,Mac系統(tǒng)是Ctrl+Option+T激活翻譯模式,CodeGeeX會(huì)把該代碼翻譯成匹配您當(dāng)前編輯器語(yǔ)言的代碼。點(diǎn)擊翻譯結(jié)果上方的use code插入。還可以在設(shè)置中選擇您希望插入的時(shí)候如何處理被翻譯的代碼,您可以選擇注釋它們或者覆蓋它們。(這個(gè)翻譯模式相比較Copilot是不友好的,沒有結(jié)合上下文生成匹配語(yǔ)言的代碼,反而要進(jìn)行二次交互)。
當(dāng)選擇的內(nèi)容是純注釋,點(diǎn)擊Ctrl+Option+T可以選擇待翻譯的目標(biāo)語(yǔ)言,一次性生成代碼,個(gè)人體驗(yàn)比隱匿模式更直接:
提示模式
官方demo:
可以對(duì)需要處理的代碼進(jìn)行選擇,按Alt/Option + t觸發(fā)提示模式,此時(shí)會(huì)出現(xiàn)預(yù)定義模板列表(默認(rèn)的是只有Java和Python語(yǔ)言模板):
可以根據(jù)自己的需求在配置文件中的Prompt Templates,進(jìn)行模板內(nèi)容添加和編輯:
模板內(nèi)容:
實(shí)際使用:
這個(gè)模式還需要探索,沒有達(dá)到預(yù)期。
額外功能(個(gè)人認(rèn)為可以歸納為編程語(yǔ)言轉(zhuǎn)譯)
可以點(diǎn)擊在側(cè)邊欄的CodeGeex插件,在input框輸入待處理代碼和選擇語(yǔ)言,在output框選擇目標(biāo)語(yǔ)言點(diǎn)擊Translate按鈕進(jìn)行轉(zhuǎn)譯:
CodeGeex使用過程發(fā)現(xiàn)的問題
1、上下文結(jié)合能力不強(qiáng),編碼能力較弱
CodeGeex對(duì)上下文的識(shí)別能力不是很好,當(dāng)我要它在ts文件中寫一個(gè)貪心算法解決股票買賣問題時(shí),它給我的是c++語(yǔ)言的頭部引入:
我們看到官方給出的demo,也是如此,至少我沒想明白。
在重新讓它生成代碼時(shí),它會(huì)給我補(bǔ)充注釋,但是補(bǔ)充的是英文,沒有結(jié)合上下文內(nèi)容:
翻譯模式下,這個(gè)引入的內(nèi)容不知道從哪兒來(lái)的:
明確要求使用ts語(yǔ)言生成代碼片段,還是直接候選的是c++頭部文件:
2、生成的內(nèi)容累贅,不夠簡(jiǎn)潔,還標(biāo)注了模型訓(xùn)練代碼來(lái)源(屬實(shí)沒想到)
當(dāng)要它寫出一個(gè)快排算法示例時(shí),萬(wàn)萬(wàn)沒想到還注釋了模型訓(xùn)練的代碼片段來(lái)源:
3、代碼生成較慢
簡(jiǎn)單的代碼不能夠一次性給出,還要一小句一小句給出:
4、對(duì)JS/TS的支持不友好
在使用隱匿模式時(shí),在py文件可以根據(jù)上下文生成代碼,在ts或js文件卻生成的是c#代碼。
寫在最后
在實(shí)際開發(fā)中,CodeGeeX的使用體驗(yàn)是遠(yuǎn)差于Copilot,但是CodeGeeX是清華實(shí)驗(yàn)室的開源免費(fèi)項(xiàng)目,在算力支撐和數(shù)據(jù)量而言是遠(yuǎn)低于OpenAI。基于CodeGeeX項(xiàng)目的基礎(chǔ)上,可以進(jìn)行私有部署,對(duì)算法模型進(jìn)行改進(jìn)優(yōu)化,還是需要支持蹣跚前行的國(guó)產(chǎn)開源模型的。
總之,還有許多需要做的。