GitHub 的 AI 編程工具漏洞高達(dá) 40% ,再次陷入爭(zhēng)議……
在近日發(fā)表的一篇論文中,研究人員對(duì) GitHub Copilot 人工智能編程輔助工具進(jìn)行了深入調(diào)查。結(jié)果發(fā)現(xiàn),仍處于測(cè)試預(yù)覽階段的 Copilot 具有高達(dá) 40% 的錯(cuò)誤代碼率,意味著開(kāi)發(fā)者必須在使用時(shí)對(duì)其保持清醒的認(rèn)知。此外在多場(chǎng)景測(cè)試項(xiàng)目中,約 40% 都被發(fā)現(xiàn)包含了安全漏洞。
AI 編程神器 GitHub Copilot
此前,GitHub 和 OpenAI 推出一種新人工智能自動(dòng)編程工具 Copilot ,能自動(dòng)生成代碼,供開(kāi)發(fā)者參考使用。
官方宣傳語(yǔ)為“你的 AI 結(jié)對(duì)編程助手”。
什么是結(jié)對(duì)編程呢?
結(jié)對(duì)編程(英語(yǔ):Pair programming)是一種敏捷軟件開(kāi)發(fā)的方法,兩個(gè)程序員在一個(gè)計(jì)算機(jī)上共同工作。一個(gè)人輸入代碼,而另一個(gè)人審查他輸入的每一行代碼。輸入代碼的人稱作駕駛員,審查代碼的人稱作觀察員(或?qū)Ш絾T)。兩個(gè)程序員經(jīng)?;Q角色。
在結(jié)對(duì)編程中,觀察員同時(shí)考慮工作的戰(zhàn)略性方向,提出改進(jìn)的意見(jiàn),或?qū)?lái)可能出現(xiàn)的問(wèn)題以便處理。這樣使得駕駛者可以集中全部注意力在完成當(dāng)前任務(wù)的“戰(zhàn)術(shù)”方面。觀察員當(dāng)作安全網(wǎng)和指南。結(jié)對(duì)編程對(duì)開(kāi)發(fā)程序有很多好處。比如增加紀(jì)律性,寫出更好的代碼等。
那么AI結(jié)對(duì)編程就是人機(jī)結(jié)對(duì)編程的升級(jí)版,具體來(lái)說(shuō) GitHub Copilot 由 OpenAI Codex 提供支持,可以從開(kāi)發(fā)者已經(jīng)編寫的代碼和注釋中提取上下文,試圖理解開(kāi)發(fā)者意圖,生成需要添加的一行、多行代碼或整個(gè)函數(shù),當(dāng)程序員接受或拒絕建議時(shí),模型就會(huì)學(xué)習(xí)越來(lái)越適應(yīng)和匹配開(kāi)發(fā)者的編程風(fēng)格。
這使得程序員無(wú)需在寫代碼時(shí)去查閱大量文檔或搜索相關(guān)示例,更加聚焦于開(kāi)發(fā)工作本身。
正如 OpenAI 員工 Harri Edwards 所言:“用一種不熟悉的語(yǔ)言編寫代碼,用谷歌搜索所有東西,就像用一本短語(yǔ)手冊(cè)去瀏覽一個(gè)外國(guó)國(guó)家。而使用 GitHub Copilot ,好比雇傭一名翻譯。”
GitHub 首席執(zhí)行官在 6 月 29 日的一篇博客文章中稱:
OpenAI Codex 對(duì)人們?nèi)绾问褂么a有著廣泛的了解,且在代碼生成方面較 GPT-3 強(qiáng)大得多,部分原因是其在包含大量公共源碼的數(shù)據(jù)集上展開(kāi)了訓(xùn)練。
GitHub Copilot 適用于多種語(yǔ)言框架,但現(xiàn)階段的技術(shù)預(yù)覽版本更側(cè)重于 Python、JavaScript、TypeScript、Ruby 和 Go 語(yǔ)言。
然而 Copilot 很快引發(fā)了多方爭(zhēng)議,尤其涉及代碼質(zhì)量、法律與道德考量、替換人類開(kāi)發(fā)者的可能性、以及引入安全漏洞的可能性。
GitHub Copilot 的代碼質(zhì)量如何呢?
近日,康奈爾大學(xué)的研究人員公布了一項(xiàng)數(shù)據(jù),為了對(duì) Copilot 的實(shí)際價(jià)值做出量化,他們?yōu)?GitHubCopilot 生成了 89 個(gè)不同的場(chǎng)景,生成了 1692 個(gè)程序。其中,大約 40% 的程序存在安全漏洞。
具體說(shuō)來(lái)是,這項(xiàng)研究從三個(gè)維度展開(kāi)了考量,分別是缺陷的多樣性、prompt 的多樣性、以及領(lǐng)域的多樣性。
總體而言,頭部 39.33% 和總體 40.48% 的項(xiàng)目易受攻擊。從安全角度來(lái)看,Copilot 在測(cè)試場(chǎng)景中的表現(xiàn)也有好有壞。
對(duì)于新手來(lái)說(shuō),Copilot 借鑒的高質(zhì)量代碼還是相當(dāng)值得推薦的。但若開(kāi)源存儲(chǔ)庫(kù)中的某些錯(cuò)誤相當(dāng)明顯,Copilot 也會(huì)更加頻繁地重現(xiàn)。
研究人員表示,由于 Copilot 是利用 GitHub 上提供的開(kāi)源代碼進(jìn)行訓(xùn)練的,因此可以推斷,代碼安全質(zhì)量取決于 GitHub 社區(qū)的開(kāi)源代碼質(zhì)量。
在 GitHub Copilot 推出后,有關(guān)于它的負(fù)面消息這并不是第一次。
就在其發(fā)布不到一周的時(shí)間里,GitHub Copilot 就被推上了侵權(quán)的風(fēng)口浪尖,引發(fā)了前所未有的爭(zhēng)議。
原因是有位程序員嘗試了一下平方根倒數(shù)速算法(Fast Inverse Square Root),結(jié)果只是打出來(lái)這四個(gè)關(guān)鍵詞。
floatQ_rsqrt( float number ) { long i; float x2, y; constfloat threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; // evil floating point bit level hacking i = 0x5f3759df - ( i >> 1 ); // what the fuck? y = * ( float * ) &i; y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration // y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed return y; }
GitHub Copilot 就逐行“完美復(fù)刻”了當(dāng)年那段神奇的算法,甚至連當(dāng)時(shí)的原版注釋都被保留下來(lái)。
甚至GitHub Copilot連當(dāng)年那句“what the fuck”的注釋也用上了。
這種現(xiàn)象引起了大量開(kāi)發(fā)者的不滿,這不禁讓人細(xì)思極恐:難道這不侵犯版權(quán)嗎?
結(jié) 語(yǔ)
關(guān)于 GitHub Copilot 代碼的事情,在 Hacker News 論壇上引起熱議。
一家科技公司的產(chǎn)品安全負(fù)責(zé)人明確表示:禁止員工使用GitHub Copilot。
不過(guò),也有程序員表示,我用 AI 寫的程序關(guān)我什么事,有責(zé)任那也是 GitHub 母公司微軟的。
盡管 AI 編程有很多爭(zhēng)議,但腳步從未停止。今年八月,OpenAI 宣布開(kāi)發(fā)一種將自然語(yǔ)言轉(zhuǎn)換為編程代碼的人工智能系統(tǒng) —— Codex。
Codex 是建立在 Copilot 之上,Codex 通過(guò)接收用英語(yǔ)編寫的句子并將它們翻譯成可運(yùn)行的代碼,換句話說(shuō),它是可以將自然語(yǔ)言轉(zhuǎn)換為代碼的 AI 系統(tǒng),這意味著 AI 編程的概念又往前進(jìn)了一步。
對(duì)此,OpenAI 稱 Codex 讓計(jì)算機(jī)能夠更好地理解人們的意圖,從而讓每個(gè)人都可利用計(jì)算機(jī)來(lái)實(shí)現(xiàn)更多目的。
那么,AI 寫代碼究竟可行不可行呢?
參考鏈接:
https://news.ycombinator.com/item?id=27710287
https://github.com/id-Software/Quake
https://arxiv.org/abs/2108.09293
https://www.techradar.com/news/github-autopilot-highly-likely-to-introduce-bugs-and-vulnerabilities-report-claims
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。
塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理