清華系「自然語言編程神器」上新!支持100+種編程語言,效率upup
本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。
清華和智譜AI聯(lián)合打造的多語言代碼生成模型CodeGeeX,更新了!
它支持的編程語言種類從原來的20種增加到100多種。
通過IDE中的插件,可以輕松實(shí)現(xiàn)「無縫自然語言編程」。
圖片
由于使用了新版基礎(chǔ)模型,CodeGeeX2的功能更加強(qiáng)大。
據(jù)了解,這次的新版本,精度和速度分別是原來的兩倍和三倍,內(nèi)存消耗卻只有1/5。
代碼生成、解釋、翻譯、糾錯(cuò)和編程問答等工作,效率都比以前有顯著提高。
作為「課代表」,我們把CodeGeeX的更新概括成了下面這幾個(gè)方面:
- 代碼能力更強(qiáng)了
- 模型特性得到了優(yōu)化
- AI編程助手功能更全面了
- 用戶協(xié)議更加開放
插件版本也將全面更新
模型用起來太繁瑣?沒關(guān)系,除了模型本身的更新,CodeGeeX的插件版本很快也將全面升級(jí)至新版。
新插件同樣支持超過100種編程語言,說不定比我們知道的還要多。
這之中除了Python、Java等我們耳熟能詳?shù)恼Z言之外,還包括Swift、Kotlin等移動(dòng)端新興勢(shì)力。
甚至像Rust這種系統(tǒng)級(jí)的編程語言,也在CodeGeeX2的能力范圍之內(nèi)。
比如下面這張動(dòng)圖就展示了CodeGeeX2生成Kotlin代碼的場(chǎng)景。
圖片
代碼生成的速度簡(jiǎn)直比人類輸入指令的速度還快。
而且從中我們可以看到,CodeGeeX2添加注釋或debug都能一鍵完成。
不僅是設(shè)計(jì)算法,實(shí)用程序的編寫也是小菜一碟。
補(bǔ)全個(gè)vue.js代碼,搭建出網(wǎng)頁,效率杠杠的!
圖片
除了這些代碼相關(guān)的任務(wù),CodeGeeX2還有很多其他應(yīng)用場(chǎng)景。
比如查詢SQL數(shù)據(jù)庫(kù)。
只要打開問答模式,用自然語言描述想要查詢的內(nèi)容,CodeGeeX2就能自動(dòng)生成SQL查詢語句。
圖片
模型變強(qiáng)之后,會(huì)不會(huì)收費(fèi)呢?不必?fù)?dān)心,新版CodeGeeX插件將繼續(xù)對(duì)個(gè)人用戶免費(fèi)開放。
而6B參數(shù)的CodeGeeX2,也已經(jīng)進(jìn)行了開源,相關(guān)代碼可以到GitHub倉(cāng)庫(kù)中查看。
GitHub Copilot的模型也不是對(duì)手
OpenAI的HumanEval評(píng)測(cè)標(biāo)準(zhǔn)可以很好地評(píng)價(jià)生成代碼的表現(xiàn)。
這個(gè)名字很容易理解:模型生成的代碼質(zhì)量如何將由人類來評(píng)價(jià)。
在HumanEval評(píng)測(cè)中,6B參數(shù)的CodeGeeX2的得分比15B參數(shù)的StarCoder模型還要高,可謂是四兩撥千斤。
而GitHub Copilot中曾使用的Code-Cushman-001模型同樣不是CodeGeeX2的對(duì)手。
不過,CodeGeeX畢竟是一個(gè)多語言模型,而HumanEval卻只支持Python。
所以,為了更加準(zhǔn)確地測(cè)試CodeGeeX的表現(xiàn),智譜團(tuán)隊(duì)在其基礎(chǔ)上增加了Go、C++、Java和JS四種語言的測(cè)試數(shù)據(jù),得到了HumanEval-X數(shù)據(jù)集。
結(jié)果顯示,在多語言方面,新版CodeGeeX2的表現(xiàn)和在Python中一樣優(yōu)異。
相較于第一代,CodeGeeX2的Pass@1指標(biāo)在各個(gè)語言上的平均表現(xiàn)提升了107%。
其中,Rust語言的性能提升顯著,提升了321%;C++和JS語言上的表現(xiàn)也提升了70%以上。
而在代碼翻譯方面,CodeGeeX2的表現(xiàn)同樣碾壓對(duì)手。
「不看廣告看療效」,CodeGeeX不僅測(cè)試結(jié)果優(yōu)異,用戶的認(rèn)可度也是很高的。
在「CodeGeeX是否提高了編程效率」這一問題中,有83.4%的用戶給出了正面的答案。
除了調(diào)查結(jié)果,用戶們也在「用腳投票」。
自第一個(gè)版本發(fā)布以來,CodeGeeX的下載量已達(dá)12萬次,平均每天生成近千萬行代碼。
這是個(gè)什么概念呢?如果只看代碼行數(shù),相當(dāng)于不到一周的時(shí)間就寫出一套Windows XP。
說了這么多,CodeGeeX又該如何體驗(yàn)?zāi)兀?/p>
快速體驗(yàn)
第一種方式就是IDE中的插件,VScode和JetBrains系列IDE的插件倉(cāng)庫(kù)中均有收錄。
除了使用IDE中的插件之外,CodeGeeX也可以在Transformer中快速調(diào)用。
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/codegeex2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/codegeex2-6b", trust_remote_code=True, device='cuda')
model = model.eval()
# remember adding a language tag for better performance
prompt = "# language: python\n# write a bubble sort function\n"
inputs = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(inputs, max_length=256, top_k=1)
response = tokenizer.decode(outputs[0])
>>> print(response)
# language: python
# write a bubble sort function
沒有支持的IDE,Transformer又覺得麻煩,但還是想體驗(yàn)怎么辦?
沒關(guān)系,這里還有個(gè)還有在線版DEMO。
傳送門:https://codegeex.cn/zh-CN/playground
趕快來感受一下「無縫自然語言編程」吧!
論文地址:https://arxiv.org/abs/2303.17568
Github項(xiàng)目頁:https://github.com/THUDM/CodeGeeX2
Hugging Face項(xiàng)目頁:https://huggingface.co/THUDM/codegeex2-6b