ai寫程序代碼_寫代碼寫程序_代碼寫程序成功的視頻

來源 |新智元

憑借著自動生成代碼這個強有力的噱頭,推出之后就成為了討論的焦點。

建立在全新的算法之上,其中接受了從中提取的TB級公開代碼以及英語語言示例的訓練。

因此,聲稱可以做到分析文檔中的字符串、注釋、函數名稱以及代碼本身,從而生成新的匹配代碼,包括之前調用的特定函數。

同時,支持多種編程語言:、、、Ruby和Go。

發布之后就有人把拉去刷的題庫,并對這位「AI程序員」的表現十分滿意。

代碼寫程序成功的視頻_ai寫程序代碼_寫代碼寫程序

經過數個題目的驗證,每次都能通過的測試。鑒于幾乎是實時的生成速度,博主表示,AI可能比我們更會編寫代碼。

不過網友懷疑已經在數據庫上進行過了訓練,因為生成的注釋和給的模板幾乎一模一樣。

針對這點,表示,雖然可能有0.1%的直接引用,但是生成的代碼大部分都會是原創的。

「復制-粘貼」成實錘

在發布的第二天,就有網友質疑 是把免費開源的代碼清洗之后,搖身一變成了賺錢的工具。

而這些代碼本應該受到GPL(通用公共許可證)的保護,從而防止它們被用在商業項目中。

代碼寫程序成功的視頻_ai寫程序代碼_寫代碼寫程序

不出所料,這個懷疑沒過兩天就變成了實錘,有網友發現,直接「復制-粘貼」了最有名的「平方根倒數速算法」。

寫代碼寫程序_代碼寫程序成功的視頻_ai寫程序代碼

「生成」的這段代碼不僅用到了至今都沒有人能理解的 :,同時還包含了對這段代碼的吐槽:what the f***?。

寫代碼寫程序_代碼寫程序成功的視頻_ai寫程序代碼

源代碼

這么看來,做的只是把訓練集中別人寫好的代碼重新組裝了一下而已。

我們的AI不「背誦」代碼

不過方面似乎早就已經做了應對的準備,一位名叫 的團隊成員表示,截止2021年5月7日,他把對于的條建議都進行了收集,其中這些數據來自于300名員工在日常工作中的使用。

針對這個數據集進行了分析整理,并寫了一篇看似十分完備的博客進行討論。

在文章的一開始,便讓 背誦了一篇眾所周知的文章,顯然,已經牢牢記住了文章的內容。

不過認為,記住訓練集的內容不是什么問題,畢竟他自己也背誦過詩歌,而這并不會使他在日常的交流中被這些背誦的內容帶跑偏。

ai寫程序代碼_代碼寫程序成功的視頻_寫代碼寫程序

案例分類

類別1:有時會在某個被采納的建議之后,由于程序員新編寫的注釋,又提出了一個非常相似的建議。

認為第二次只不過是重復了之前「成功」的案例,因此把它們從問題分析中刪除了出去。

類別2:可能會提出長的、重復的序列。比如下面這個例子,其中重復的'

'最后在訓練集中被發現了。

代碼寫程序成功的視頻_寫代碼寫程序_ai寫程序代碼

類別3:給出比如自然數、素數、希臘字母表這種類似于標準清單的建議。有些建議可能是有幫助的,也可能是沒有幫助的。

不過表示,這些并不符合他對「背誦」代碼的假設。

代碼寫程序成功的視頻_ai寫程序代碼_寫代碼寫程序

類別4:在做一些自由度很低的任務時,會給出的一些常見、或者普遍的解決方案。

例如,下面的中間部分可以算做是使用包來解析維基百科列表的標準方法。

表示,在訓練數據中發現的最佳匹配片段就是使用這樣的代碼來解析不同文章的。同樣,這不符合他對「背誦」代碼的定義。

ai寫程序代碼_寫代碼寫程序_代碼寫程序成功的視頻

類別5:最后這些案例符合對「背誦代碼」的設想,其中,這些代碼或注釋中至少有一些具體的重疊。

測試結果

ai寫程序代碼_寫代碼寫程序_代碼寫程序成功的視頻

對于 的大部分建議,表示并沒有發現與訓練用的代碼有任何明顯的重疊。在去掉第一個類別后,可以得到了185條建議。

在這些案例中,有144個被分到了第2-4個類別中。這就在最后一個類別5里留下了41個案例,作者表示,這就是他心目中的代碼 「背誦」。

在缺乏具體語境時的引語

在人工標注時挑出的41個主要案例中,沒有一個出現在少于10個不同的文件中。大多數(35個案例)出現超過一百次。

有一次, 建議從一個空文件開始,它在訓練期間甚至看到了超過700,000次的東西--那就是GNU通用公共許可證。

下面的圖表顯示了第5個類別的結果(每個結果底部有一個紅色標記)與第2-4個類別中的匹配文件數量。

代碼寫程序成功的視頻_ai寫程序代碼_寫代碼寫程序

推斷出的分布圖顯示為一條紅線;它在100和1000個匹配之間達到峰值。

主要在一般情況下引證

隨著時間的推移,每個文件都變得獨一無二。但 會將在你的文件非常通用時提供解決方案。

而此時,在沒有任何具體內容的情況下,它更有可能從其他地方引用。

寫代碼寫程序_ai寫程序代碼_代碼寫程序成功的視頻

當然,軟件開發者大部分時間都在復雜的代碼中間,那里的上下文足夠獨特, 會提供獨特的建議。

相比之下,一開始的建議就比較中規中矩,因為 無法知道程序會是什么。

不過,在獨立的腳本中,適度的上下文就足以讓人合理地猜測出用戶想要做什么。

而有時,上下文仍然過于普遍,以至于認為它熟知的某個解決方案看起來很有希望。

代碼寫程序成功的視頻_寫代碼寫程序_ai寫程序代碼

上面這個例子就是直接取自被上傳的機器人課的課件。

結論

認為,雖然 可以逐字逐句地引用一組代碼,但它很少這樣做,而且當它這樣做時,多數也都是所有人都會引用的代碼,而且大部分是在文件的開頭。

表示,理想狀態下,當一個建議包含從訓練集復制的片段時,用戶界面應該簡單地告訴你它是從哪里引用的。然后,你可以包括適當的署名或決定不使用該代碼。而他的團隊也將努力去做到這一點。