GitHub Copilot四成代碼有漏洞,AI生成代碼你還敢用?

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"日前,研究人員發現,"},{"type":"link","attrs":{"href":"https:\/\/copilot.github.com\/","title":null,"type":null},"content":[{"type":"text","text":"GitHub Copilot"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" 工具提供的代碼建議中"},{"type":"link","attrs":{"href":"https:\/\/www.techradar.com\/news\/github-autopilot-highly-likely-to-introduce-bugs-and-vulnerabilities-report-claims","title":null,"type":null},"content":[{"type":"text","text":"有接近 40% 存在 bug"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。爲了對 Copilot 的實際價值做出量化,研究人員創建了 89 個測試場景以考查其代碼建議質量,編寫出了 1600 多個程序。經過全面審查,研究人員發現其中近四成存在安全漏洞。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"研究人員指出,造成這種問題的主要原因有兩個:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"1、GitHub Copilot 參考的開源代碼良莠不齊。GitHub 的代碼量雖然龐大,但大部分都是未經審查的,源代碼就有問題,GitHub Copilot生成的代碼也會出現問題;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"2、GitHub Copilot 分不清新代碼和舊代碼。我們常常提起“最佳實踐”,但曾經的“最佳實踐”,極有可能在幾年後變成反面典型。GitHub Copilot 目前還分不清這種區別,照單全收,自然有問題。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"AI編程神器GitHub Copilot"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"作爲一款 AI 結對編程工具,GitHub Copilot 的主要定位是提供代碼補全與建議功能。它是 Visual Studio Code 的一個插件,可根據當前文件的內容和當前光標位置爲你自動生成代碼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"首先我們要理解"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"什麼是AI結對編程"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"結對編程用來代指兩個程序員在一個計算機上共同工作。通常來說,會有一個人輸入代碼,而另一個人審查他輸入的每一行代碼。輸入代碼的人稱作駕駛員,而審查代碼的人稱作觀察員。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"那麼AI 結對編程,可以簡單理解爲人機結對編程的升級版。具體來說GitHub Copilot 由 OpenAI Codex 提供支持,可從代碼中提取上下文,並立即對單行代碼甚至整個函數給出建議。而 OpenAI Codex 接受過公開源代碼和自然語言的培訓,能理解編程語言和人類語言。在工作時,GitHub Copilot 編輯器的擴展插件將程序員的註釋和代碼發送到 GitHub Copilot 服務,然後該服務使用 OpenAI Codex 來生成對代碼的建議。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"跌落神壇只用了不到一週"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在GitHub Copilot推出後,有關於它的負面消息這並不是第一次。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"就在其發佈不到一週的時間裏,GitHub Copilot就被推上了侵權的風口浪尖,引發了前所未有的爭議。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"原因是有位程序員嘗試了一下平方根倒數速算法(Fast Inverse Square Root),結果只是打出來這四個關鍵詞,GitHub Copilot就逐行“完美復刻”了當年那段神奇的算法,甚至連當時的原版註釋都被保留下來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"這種現象引起了大量開發者的不滿,他們認爲,GitHub Copilot 宣稱的基於公開代碼訓練其實是在未遵循開源許可證的情況下,肆意“抄襲”開源代碼,事情愈演愈烈,甚至個別比較激進的人爲了抗議 GitHub 未經授權和許可便使用受版權保護的源代碼作爲 GitHub Copilot 的訓練數據,宣佈棄用 GitHub。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"在爭議中前行的AI編程"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"儘管AI編程有諸多爭議,但它的腳步仍未停止。當人們開始關注GitHub Copilot背後的技術支撐OpenAI Codex後,今年八月,"},{"type":"link","attrs":{"href":"https:\/\/openai.com\/","title":null,"type":null},"content":[{"type":"text","text":"OpenAI"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"宣佈開發一種將自然語言轉換爲編程代碼的人工智能系統——Codex。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Codex 更像是 OpenAI 的下一步產品。它建立在 Copilot 之上,前文說到Copilot 是一種與 Microsoft 的 GitHub 代碼存儲庫一起使用的工具,使用它可有助於完成代碼行。但Codex通過接受用英語編寫的句子並將它們翻譯成可運行的代碼,換句話說,它是可以將自然語言轉換爲代碼的AI系統,這意味着AI編程的概念又往前進了一步。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"對此,OpenAI 稱 Codex 可讓計算機能夠更好地理解人們的意圖,從而讓每個人都可利用計算機來實現更多目的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"那麼,"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"AI寫代碼究竟可行不可行呢"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"雖然對於開發者們來說,重複性的任務佔據了軟件開發的大部分時間,並且很容易出錯,研究人工智來改進軟件開發的確令人興奮,但是我們也不難從GitHub Copilot身上看到,就目前來看,這個工具仍舊不建議大家使用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"第一,GitHub Copilot既然可以逐行“完美復刻”平方根倒數速算法,那麼我們又能如何判別它給我們的代碼一定是沒有受版權保護的呢?這種可能性,同樣容易讓我們背上“侵權”的法律風險。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"第二,就連GitHub自己都表示GitHub Copilot建議的代碼並不完美,有時候它提供的代碼甚至毫無意義。因此,對於GitHub Copilot建議的代碼來說,我們仍要小心其編碼錯誤,還需要付出精力去審查,才能得到正確有效的代碼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"因此總的來說,原則上,讓AI學會寫程序的確能爲軟件工程帶來一次巨大的變革,但是就目前來看,現有的技術水平遠遠達不到預期。當前的GitHub Copilot已經是人工智能領域的一項重大的突破,但同時也存在諸多障礙,這一點還需要引起我們的注意。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"參考鏈接:"},{"type":"link","attrs":{"href":"https:\/\/www.solidot.org\/story?sid=68736","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/www.solidot.org\/story?sid=68736"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.techradar.com\/news\/github-autopilot-highly-likely-to-introduce-bugs-and-vulnerabilities-report-claims","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/www.techradar.com\/news\/github-autopilot-highly-likely-to-introduce-bugs-and-vulnerabilities-report-claims"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章