作者 | 深度999
「人人都是開發者」的時代終於要來臨了!
ChatGPT 的出現,引領了科技公司追逐 AI 的浪潮。相比初代 GPT-3,最新基於 GPT 3.5 的模型之所以受到更加廣泛的關注,主要原因之一便是它在加入了程式碼作為訓練資料後,徹底顛覆了傳統模型較弱的思維鏈推理能力,大大地提升了模型的推理能力。因此,這也催生了多款針對開發者的輔助和革命性工具。

GPT 3.5加入了程式碼作為訓練資料後,大大地提升了推理能力
為給廣大開發者推薦更多好用的輔助(Ti Dai)工具,CSDN 重磅發起「CSDN AI 程式設計榜單」,定期針對業界主流的 AI Coding 產品進行評測。本期榜單中,我們共選擇了六款 AI Coding 產品,分別是:ChatGPT、GPT 3.5、CodeBBT、GitHub Copilot、CodeGeeX、aiXcoder。
話不多說,我們先看評測得到的關鍵性結論:
ChatGPT 以幾乎接近滿分的成績,摘得榜首,成為開發者輔助編碼的最佳神器;
目前尚未有任何一款產品達到 C4(高度自動程式設計)級別,即,想要在沒有任何的人工干預下,生成理想中的程式碼也還存在一定的困難,正因此,至少就當前階段而言,「程式設計師即將被 AI 所取代」的傳言也並不可信;
C++ 和 Java 在各模型的 3 分佔比高於 Javascript、Python 及 Shell,這意味著各大模型對 C++ 和 Java 語言支持要優於其他幾種語言。
注:本次評測為了快速獲取評測結論,從生成任務資料集到評分/評級若有遺漏和不足之處,望各位大佬斧正。也歡迎本次沒有覆蓋到的產品聯繫我們(kefu@csdn.net),加入評測。

AI 程式設計究竟哪家強?我們一起來評測
首先,根據流行度、發佈時間、智慧化等維度,我們選取了如下六款產品作為評測對象:
GPT-3.5,是 OpenAI 在GPT-3 基礎上微調出來的版本,它採用了與 GPT-3 不同的訓練方式,所產生出來不同的模型,比起 GPT-3 來的更強大。
GitHub Copilot(https://github.com/features/copilot),是 GitHub 和 OpenAI 於 2021 年 6 月推出的人工智慧工具,它可以根據命名或者正在編輯的程式碼上下文為開發者提供程式碼建議。
GPT-3.5-Turbo(ChatGPT)(https://openai.com/blog/chatgpt),是 OpenAI 於 2022 年 11 月推出的人工智慧聊天機器人程序。該程序使用基於 GPT-3.5-Turbo 架構的大型語言模型並以強化學習訓練。ChatGPT 目前仍以文字方式互動,而除了可以用人類自然對話方式來互動,還可以用於甚為複雜的語言工作,包括自動生成文字、自動問答、自動摘要等多種任務。
CodeGeeX(https://github.com/THUDM/CodeGeeX/blob/main/README_zh.md),是智譜 AI 聯合清華、華為發佈的程式碼生成模型,它是一個具有 130 億參數的多程式語言程式碼生成預訓練模型。採用華為 MindSpore 框架實現,在鵬城實驗室「鵬城雲腦II」中的 192 個節點(共 1536 個國產昇騰 910 AI 處理器)上訓練而成。
CodeBBT,是超對稱技術公司近期發佈的 BBT-2 大模型系列中的程式碼模型。繼 2022 年 6 月發佈 10 億參數的 BBT-1 金融大模型後,超對稱公司接續研發了 120 億參數的通用語言大模型 BBT-2,並在 BBT-2 的基礎上訓練中英文程式碼資料,推出面向中文開發者的程式碼模型 CodeBBT。
aiXcoder(https://www.aixcoder.com),是矽心科技研發的國內首款基於深度學習的智慧化軟體開發工具,利用 AI 技術實現程式碼⾃動⽣成、程式碼⾃動補全、程式碼智慧搜尋等功能,提升開發者開發效率與程式碼質量。
基於以上 AI 輔助程式碼工具,在生成任務的選取中,生成任務語言以中文自然語言環境為主。測試集包含了 C++、 Java、 Javascript 、Python 和 Shell 5 種主流的開發語言。另外,以開發者在 CSDN 平臺上的 Text→Code(Code→Text)、Troubleshooting、命令列等高頻需求為生成任務。評測同一個 Query 在不同模型搜尋返回結果的效果,並選擇 50 個 CSDN 搜尋高頻 Query。

CSDN 發佈 C1-C5 級自動程式設計評測方法與標準
為了更直觀地看出不同產品之間的區別,我們模仿自動駕駛的 L1-L5 級別劃分,將自動程式設計分成了 C1-C5 級別。

倘若能夠達到 C5 級別,那麼也可以暢想一下未來:產品經理能夠直接用自然語言寫成的需求文件作為輸入,自動生成程式碼、自動化測試、自動化部署上線等。
當然,自動駕駛也分路況,自動化程式設計也會分「路況」,在此,我們也將每一檔劃分了相應的分值:

*說明:評分涉及的程式語言指主流程式語言 Java、C/C++、Javascript、Python和Shell
單條 Query→內容打分規則
3 分:有正確輸出,能直接解決問題
2 分:有錯誤輸出,不能直接解決問題,但輸出可參考
1 分:有輸出但不能解決問題,輸出不可參考
0 分:無輸出

評測三步走
本次的測試集主要是 CSDN 上使用者主要在 AI Coding 上的高頻需求同時兼顧對主流程式語言的覆蓋,可能不能完全體現各個產品/模型的性能,並且上述產品是針對不同的場景來設計的,所以在不同的「路況」下,表現會有差別,例如 Copilot 和 CodeGeex 就是專門為 IDE 環境設計的輔助開發工具,所以在程式碼生成方向很強,但是 Troubleshooting 上就會差一些,可能不是沒有這個能力,而是針對性設計的結果。
因為所有產品均未達到 C4,故所選的測試集均為 C4 級別以下的資料。同時我們以真實的使用者需求為評估方向,因此我們以 C3 程式碼生成和程式碼調試展開評估以及闡述。
具體評測步驟按下面評分對各項打分求和即是模型最終得分,再根據模型檔位對應的分數範圍將模型劃分到對應檔位。
1. 函數級別的程式碼生成、程式碼分析的評分,對應分數作為在 C3 等級的評分
單條評分加和,具體單條評分如下,其評分規範參見上文第二部分:
在遵循此步驟的基礎上,我們以生成一個「 Python 愛心程式碼」為例,不妨先看看每種模型的表現情況:
模型:GPT-3.5-Turbo(ChatGPT)
得分:3 分
輸出內容如下:

模型:GPT 3.5
得分:2 分
輸出內容如下:

模型:CodeBBT(超對稱)
得分:3 分
輸出內容如下:

模型:Copilot(vscode外掛)
得分:3 分
輸出內容如下:

模型:CodeGeeX(智譜)
得分:1 分
輸出內容如下:

模型:aiXcoder
得分:1 分
輸出內容如下:

那麼,生成程式碼和捉 Bug 能力是否相一致?
為了證明不同模型之間的能力,我們又從 Troubleshooting 類入手,如用 java.lang.illegalstateexception: failed to load applicationcontext 異常的程式碼問題,進行評測:
模型:GPT-3.5-Turbo(ChatGPT)
得分:3 分
輸出內容:

模型:GPT 3.5
得分:2 分
輸出內容如下:

模型:CodeBBT(超對稱)
得分:1 分
輸出內容如下:

模型:Copilot(vscode外掛)
得分:1 分
輸出內容如下:

模型:CodeGeeX(智譜)
得分:1 分
輸出內容如下:

模型:aiXcoder
得分:0 分
無輸出

評測結果出爐:ChatGPT 一馬當先,國產化 AI 工具還有較大的差距!
幾經測試之後,最終得出各產品檔位得分(150 分制)情況如下:

*說明:GitHub Copilot(vscode外掛)的 VSCode 版本為:1.75.1 ;GitHub Copilot:v1.76.9071
各產品分項得分(150 分制)
本次評測結果中,ChatGPT 名列前茅,aiXcoder 排名最末位,其他幾個產品水平相差無幾。


各產品的分數分佈

不同測試集的分數分佈

不同程式語言類型的分數分佈

主要結論:
各產品得分最高為 GPT-3.5-Turbo(ChatGPT),得分最低為 aiXcoder,因此在提供輔助程式碼的智慧化方面,ChatGPT 的表現最佳;
0 分佔比最多為 aiXcoder,3 分佔比最多為 GPT-3.5-Turbo(ChatGPT);
程式碼生成類型的 Query 得分高於 troubleshooting 類型的 Query;
C++ 和 Java 在各模型的 3 分佔比高於 Javascript、Python 及 Shell;
CodeBBT(超對稱)對比 GPT-3.5-Turbo(ChatGPT)的 GSB(GOOD、SAME、BAD)條數為:0:10:40,這意味著國產的 AI 程式設計工具和領先的 ChatGPT 之間還存在一定的差距,有不少的上升空間。

寫在最後
本次評測中,ChatGPT 出類拔萃,幾乎接近滿分,大家追趕 ChatGPT 的步伐任重而道遠。有些遺憾的是,所有的產品都均未達到 C4 級別,離 C5 也還有很長的路要走。
然而,AI 一旦踏上了這個方向,必然勢不可擋,人人都是開發者的時代也許就在不遠的將來。作為開發者社區,CSDN 也將持續致力於 AI 編碼工具的研究與關注,敬請期待下期評測內容。