GPT-3 這個(gè)自然語言處理 AI 在去年「出圈」了,被公認(rèn)是繼 AlphaGo 之后「人工智能史上又一里程碑」。它在互聯(lián)網(wǎng)上「閱讀」了 5000 億詞,模型達(dá)到 1750 億參數(shù),從而變得通用。但給 AI 硬灌數(shù)據(jù),實(shí)在是燒錢耗力。但好在,GPT-3 正在孕育出能夠?qū)崿F(xiàn)商業(yè)化的后代。 就在剛剛,GitHub、OpenAI、微軟聯(lián)合打造了一個(gè)全新的代碼生成 AI:GitHub Copilot(以下簡稱為 Copilot)。 簡單來說,Copilot 可以根據(jù)程序員的注釋寫代碼,自動(dòng)補(bǔ)全代碼,提供與代碼匹配的測試,還能生成多個(gè)備選方案的代碼供選擇。GitHub 表示,Copilot 生成的代碼大部分是原創(chuàng)的。
目前,Copilot 正在測試專供 Visual Studio Code 的擴(kuò)展,一旦達(dá)到可用狀態(tài),未來會(huì)成為微軟編程產(chǎn)品里的收費(fèi)項(xiàng)目。Copilot 可以說是 OpenAI 接受微軟 10 億美元投資以來的首個(gè)重大成果。 還有行業(yè)人士表示,這代表 AI 開始在編程工作中發(fā)揮作用,軟件開發(fā)領(lǐng)域的「第三次工業(yè)革命」似乎正緩緩揭開序幕。 和你結(jié)對編程的,換成了 AI 在此之前,程序員寫不出代碼,一般會(huì)到軟件開發(fā)領(lǐng)域的問答網(wǎng)站 Stack Overflow「借鑒」,或者求助于一些代碼自動(dòng)補(bǔ)全工具。然而,傳統(tǒng) IDE 基本都使用搜索方法進(jìn)行補(bǔ)全,換句話說,網(wǎng)上有的,才能被抓過去補(bǔ)全。 但 Copilot 是另一種思路,它直接靠 AI 理解程序員的需求。Copilot 不僅僅是模仿以前見過的代碼,它還會(huì)分析文檔中的字符串、注釋、函數(shù)名稱以及代碼本身,從而生成新的匹配代碼,包括之前調(diào)用的特定函數(shù)。
脫胎自 GPT-3 的 OpenAI Codex,接受過公開源代碼和自然語言的培訓(xùn),能理解編程語言和人類語言。所以,Copilot 對語言理解和轉(zhuǎn)換有極高的天賦。 GitHub 給 Copilot 的官方定義是「AI 結(jié)對編程員」?!附Y(jié)對編程」(pair programming)是一種軟件開發(fā)方法,兩個(gè)程序員在一個(gè)計(jì)算機(jī)上共同工作。一個(gè)人輸入代碼,而另一個(gè)人審查他輸入的每一行代碼。輸入代碼的人稱作駕駛員,審查代碼的人稱作觀察員。兩個(gè)程序員經(jīng)常互換角色。GitHub 認(rèn)為 Copilot 是進(jìn)化版的「結(jié)對編程」,在未來幫程序員查缺補(bǔ)漏的,將會(huì)換成 AI。 Copilot 具體的功能如下:
在注釋中用簡單的英語描述一個(gè)函數(shù),Copilot 就可以將其轉(zhuǎn)換為實(shí)際代碼;
Copilot 能根據(jù)程序員給出的例子,快速生成模板和重復(fù)的代碼;
導(dǎo)入單元測試包,Copilot 就可以提供與代碼匹配的測試;
Copilot 可以提供多個(gè)備選方案的代碼供程序員選擇。 此外,Copilot 還能輔導(dǎo)新手寫代碼,可以幫助他們找出錯(cuò)誤、學(xué)習(xí)新框架,省去大量查資料的時(shí)間。 OpenAI 首席技術(shù)官 Greg Brockman 表示,將在今年夏末通過 API 發(fā)布 Codex。 Github CEO Nat Friedman 提到,「OpenAI Codex 對于人們的代碼使用習(xí)慣有著廣泛了解,而且在代碼生成能力上遠(yuǎn)遠(yuǎn)超過 GPT-3,這要?dú)w功于它在訓(xùn)練中接觸到的大量公共源代碼數(shù)據(jù)集。GitHub Copilot 則適用于多種框架和語言,但目前的技術(shù)預(yù)覽版主要面向 Python、JavaScript、TypeScript、Ruby 以及 Go」。具體來說,OpenAI 在 GPT-3 的基礎(chǔ)上生成了 Codex 算法,Codex 在從 GitHub 那里提取出來的 TB(terabyte)級(jí)公開代碼以及英語語言示例中得到訓(xùn)練。基于 Codex 算法,編程 AI Copilot 誕生了。 也就是說,Copilot 比 GPT-3 誕下的專為代碼生成設(shè)計(jì)的后代。在運(yùn)行過程中,Copilot 編輯器的擴(kuò)展插件將程序員的注釋和代碼發(fā)送到 GitHub Copilot 服務(wù)端,然后該服務(wù)使用 OpenAI Codex 來生成對代碼的建議。 目前相比于市面上一些編程輔助工具,Copilot 的上下文理解能力要強(qiáng)大得多。無論是在文檔字符串、注釋、函數(shù)名還是代碼主體中,Copilot 都能根據(jù)編程者已寫出的上下文生成匹配的代碼。 不看廣告,看「療效」 Friedman 說,GitHub 的數(shù)百名開發(fā)者在編碼時(shí),整天都在使用 Copilot 功能,他們中的大多數(shù)人都接受了 AI 的建議,沒有關(guān)閉該功能。 但就目前來看,Copilot 提供建議的準(zhǔn)確率似乎不高。GitHub 對一組 Python 函數(shù)進(jìn)行了基準(zhǔn)測試,測試團(tuán)隊(duì)清除了函數(shù)并要求 Copilot 填充它們。模型在第一次嘗試正確率是 43%,經(jīng)過 10 次嘗試后,正確率達(dá)到了 57%。團(tuán)隊(duì)表示,之后 Copilot 還將進(jìn)行多次訓(xùn)練和測試,準(zhǔn)確率會(huì)進(jìn)一步提升。但據(jù)一些程序員的說法,這種自動(dòng)生成的代碼工具要「好用」有個(gè)前提,就是能精確描述了函數(shù)需要實(shí)現(xiàn)的功能,不然后續(xù)的調(diào)試會(huì)是更耗時(shí)的工作。 另外,GitHub 表示,Copilot 提出的代碼可能會(huì)無法編譯或運(yùn)行,而且 Copilot 還可能會(huì)使用舊的或已棄用的庫和語言。 此外,在試圖理解開發(fā)人員的意圖時(shí),Copilot 建議的代碼可能并不總是有效或有意義的,因此程序員還是像往常一樣仔細(xì)測試和審查所有代碼。 對于代碼安全,GitHub 表示,并不是所有使用的代碼都經(jīng)過了漏洞、不安全實(shí)踐或個(gè)人數(shù)據(jù)的審查。因此,他們也設(shè)置了一些過濾器來防止 Copilot 生成攻擊性的語言,目前效果并不完美,需要后續(xù)完善。
技術(shù)社區(qū)也不可避免地對這款工具可能引發(fā)的代碼所有權(quán)、許可證、利益沖突以及其他現(xiàn)實(shí)問題展開了討論。 Friedman 回應(yīng)稱,「總體來說:在公共數(shù)據(jù)上訓(xùn)練機(jī)器學(xué)習(xí)系統(tǒng)屬于合理的使用方式;輸出結(jié)果的所有權(quán)歸于操作者,跟傳統(tǒng)的編譯器沒什么區(qū)別。具體到訓(xùn)練問題上,大家也可以看到 OpenAI 向美國專利商標(biāo)局做出的承諾。我們預(yù)計(jì) Copilot 項(xiàng)目的知識(shí)產(chǎn)權(quán)與 AI 成果將很快在世界范圍內(nèi)掀起關(guān)于政策的討論熱潮,我們自己也希望能夠參與進(jìn)來?!?/p> 提前下班,提早下崗 擊敗 Stack Overflow 的,不是下一個(gè)代碼問答社區(qū),而是編程 AI。那么,現(xiàn)在還是「協(xié)助編程」的 AI,未來會(huì)不會(huì)成為能「自動(dòng)編程」 的 AI? Friedman 在 Hacker News 寫道:「軟件開發(fā)正迎來自己的『第三次工業(yè)革命』。第一次革命是編譯器、調(diào)試器、垃圾收集器以及語言等工具的出現(xiàn),極大提升了開發(fā)者的工作效率;第二次革命則以開源為契機(jī),全球開發(fā)者社區(qū)得以匯聚起來,并在彼此的開發(fā)成果基礎(chǔ)之上不斷推進(jìn);第三次革命就在現(xiàn)在,業(yè)界嘗試在編程當(dāng)中使用 AI 技術(shù)。在發(fā)展成熟之后,開發(fā)人員的日常工作將有巨大改變——但仍然有很多工作可做、也只能由人類開發(fā)者完成,因此不用太擔(dān)心?!?/p> 即使是高度機(jī)械化的工廠,也需要操作員來發(fā)出初始化指令,所以在未來, IT 行業(yè)可能還會(huì)留下一些操作員類型的程序員,和一些把握高精度操作技巧的工程師。 但也正如 Open AI 的 CEO Sam Altman 所說,程序員的身價(jià)將會(huì)下降:「這是我的預(yù)測:AI 會(huì)讓那些在電腦前工作的人,身價(jià)掉得比在物理世界里工作的人還要快。這和大部分的預(yù)期完全相反?!?/p> 有了 Copilot,程序員就可以提前下班,但在未來,也可能會(huì)提前下崗。
這并不是微軟第一回借力 OpenAI 推出 AI 應(yīng)用。在剛過去的 Build 大會(huì)上,微軟宣布了 GPT-3 的第一個(gè)商業(yè)用例:在 Microsoft Power Apps 中集成 GPT-3 的能力,可將自然語言直接轉(zhuǎn)換為現(xiàn)成代碼。但目前功能相對有限,只支持在微軟 Power Fx 中生成公式。即便如此,對于那些非專業(yè)的操作者,這個(gè)系統(tǒng)也能給出最合適的公式。在過去的工作流中,普通員工要執(zhí)行數(shù)據(jù)分析、構(gòu)建應(yīng)用程序或讓流程自動(dòng)化,一般都需要向 IT 部門提出需求,然后等待數(shù)周或數(shù)月才能完成工作,而借助現(xiàn)在這個(gè)功能,可以更「傻瓜」地開發(fā)符合自己需求的軟件。 微軟嘗到了 OpenAI 技術(shù)的甜頭。但和微軟的獨(dú)家綁定,也給 OpenAI 招來了一些爭議。對此,OpenAI 首席技術(shù)官 Greg Brockman 表示,底層技術(shù)不會(huì)只由微軟來使用,OpenAI 將在今年夏末發(fā)布 Codex 模型,供第三方開發(fā)者編寫他們自己的應(yīng)用程序。 題圖來源:GitHub Copilot 本文由極客公園 GeekPark 原創(chuàng)發(fā)布,轉(zhuǎn)載請?zhí)砑訕O客君(ID:geekparker) |
|