本文將比較GitHub Copilot和Amazon CodeWhisperer兩個AI編碼助手。
微信搜索關注《Python學研大本營》,加入讀者群,分享更多精彩文章來源:http://www.zghlxwxcb.cn/news/detail-764014.html
1、簡介
GitHub Copilot和Amazon CodeWhisperer是采用人工智能技術驅(qū)動的編碼助手,它們將自動完成編碼功能提升到一個全新的水平。在最佳狀態(tài)下,它們可以根據(jù)開發(fā)者提供的簡短描述性文本編寫功能完整、可運行的代碼塊。這可以讓開發(fā)者更高效,而且還能讓開發(fā)變得更有趣!
接下來跟隨本文開始了解最佳AI編碼助手吧!
2、什么是人工智能編碼助手?
GitHub Copilot和Amazon CodeWhisperer是與代碼編輯器集成的服務,可以幫助開發(fā)者更快地編寫代碼。但與常見的自動完成工具(如“IntelliSense”)不同,Copilot和CodeWhisperer利用的是在源代碼和自然語言上都經(jīng)過訓練的機器學習模型,因此它們既能理解編程語言,也能理解人類語言。這使它們能夠理解用簡單英語編寫的注釋,根據(jù)開發(fā)者的意圖生成代碼,并匹配開發(fā)者的模式和風格。當開發(fā)者輸入時,它們甚至會提供完成初始注釋本身的建議。可以接受頂部的建議,也可以查看更多建議,或者繼續(xù)編寫自己的代碼。
節(jié)省創(chuàng)建模板代碼和重復代碼模式的時間,將更多時間投入到重要的事情上:構建優(yōu)秀的軟件(GitHub Copilot)。
2.1 什么是GitHub Copilot?
【GitHub Copilot】:https://github.com/features/copilot/
GitHub Copilot是由GitHub和OpenAI共同開發(fā)的,它由OpenAI的Codex模型提供支持,該模型是在公開源代碼(包括GitHub上的公共源代碼庫)上進行訓練的。Copilot在2022年6月正式宣布“退出技術預覽”。
開始輸入描述性注釋或函數(shù)名稱,Copilot會嘗試自動補全其余內(nèi)容。
Copilot非常易于使用,并與所有主要的代碼編輯器進行了簡化集成。GitHub Copilot針對七種主要的編程語言進行了優(yōu)化(詳見下表),但也可以生成其他語言和各種框架的建議。
Copilot在預覽階段是免費的,但GitHub在2022年宣布轉(zhuǎn)向訂閱模式。開發(fā)者仍然可以獲得為期60天的免費試用,而且對于經(jīng)過驗證的學生和熱門開源項目的維護者,它將保持免費。
Copilot的建議是上下文相關的。請注意它是如何“學會”開發(fā)者想要使用常量的,以及它是如何正確命名和填充對象的。
2.2 什么是Amazon CodeWhisperer?
【Amazon CodeWhisperer】:https://aws.amazon.com/cn/codewhisperer/
Amazon CodeWhisperer是由亞馬遜開發(fā)的。它的機器學習模型是在各種數(shù)據(jù)源(包括亞馬遜的內(nèi)部代碼和開放源代碼)上訓練出來的。
CodeWhisperer可以完成注釋,并根據(jù)注釋提供代碼建議。開發(fā)者可以在不同的代碼實現(xiàn)之間切換,選擇最合適的代碼。
CodeWhisperer與GitHub Copilot相比,它支持的語言和主要代碼編輯器都較少。不過,廣泛的語言和IDE支持并非CodeWhisperer的主要吸引點。相反,CodeWhisperer專注于為AWS API提供一流的支持,為包括亞馬遜彈性計算云(EC2)、AWS Lambda和亞馬遜簡單存儲服務(S3)在內(nèi)的最流行服務提供代碼建議。
根據(jù)亞馬遜官網(wǎng)的介紹,用戶只需編寫“將文件上傳到S3。(upload a file to S3.)”,CodeWhisperer將自動確定最適合指定任務的云服務和公共庫,即時構建具體代碼,并直接在IDE中推薦生成的代碼片段。
【Amazon CodeWhisperer簡介】:https://aws.amazon.com/cn/blogs/machine-learning/introducing-amazon-codewhisperer-the-ml-powered-coding-companion/
個人開發(fā)者可以免費使用CodeWhisperer。
3、比較
GitHub Copilot與Amazon CodeWhisperer的比較。
3.1 哪個更受歡迎?
由于CodeWhisperer的發(fā)布時間較短,GitHub Copilot憑借其一年的先發(fā)優(yōu)勢,目前占據(jù)著主導地位。根據(jù)GitHub自己的數(shù)據(jù),在預覽階段的12個月里,超過120萬開發(fā)者使用了Copilot的技術預覽版。他們自己的研究表明,用戶平均接受了GitHub Copilot提供的所有補全內(nèi)容的26%,并且高達40%的開發(fā)者的代碼文件是由GitHub Copilot生成的。
3.2 隱私如何保護?
為了提高性能,Copilot和CodeWhisperer都會收集用戶的數(shù)據(jù)。在工作中使用這些工具是否會危及企業(yè)的代碼庫或數(shù)據(jù)?這是一個重要的問題,對于大多數(shù)公司來說可能是一個潛在的決定因素。
為了提供代碼建議,GitHub Copilot會將開發(fā)者的代碼和注釋發(fā)送到GitHub Copilot服務。該服務依賴于文件內(nèi)容的上下文,包括正在編輯的文件以及項目中的相鄰或相關文件。它還可能收集存儲庫的URL或文件路徑以識別相關的上下文。某些數(shù)據(jù)收集部分可以在遙測設置中禁用。但是其他部分,如使用信息,則是使用Copilot所必需的,無法關閉。其中可能包括個人數(shù)據(jù),詳見GitHub隱私聲明。
【GitHub隱私聲明】:https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement
GitHub還表示,根據(jù)他們的內(nèi)部測試,他們發(fā)現(xiàn)GitHub Copilot的建議中很少包含直接從訓練集中提取的個人數(shù)據(jù)。然而,其中一些建議可能只是看起來像個人數(shù)據(jù)(電子郵件地址、電話號碼等),但實際上是從訓練數(shù)據(jù)中的模式合成的虛構信息。
Amazon CodeWhisperer也會收集某些信息,如上下文信息(包括文件內(nèi)容)、反饋、遙測指標和用戶環(huán)境信息。在其服務條款中,亞馬遜表示在預覽階段會向開發(fā)者提供打開或關閉內(nèi)容共享的選項。
3.3 風險和漏洞如何處理?
這兩個助手都是在可能包含不安全編碼模式、錯誤或過時的API或習慣用語引用的公共代碼上進行訓練的。報告《Asleep at the Keyboard? Assessing the Security of GitHub Copilot’s Code Contributions》研究發(fā)現(xiàn),在使用Copilot的測試場景中多達40%的代碼存在漏洞。
【報告】:https://arxiv.org/pdf/2108.09293.pdf
GitHub承認Copilot有時可能會建議使用舊的或已棄用的庫和語言,并且它可能會合成包含不良模式的代碼。為了減少這種情況,他們建議將其與GitHub Actions、Dependabot和CodeQL等工具結合使用,以幫助提高代碼質(zhì)量。
亞馬遜也是如此,不過值得稱贊的是,亞馬遜已經(jīng)采取了很好的應對措施,他們提供了安全掃描功能,用于檢測Java和Python項目中的漏洞。
當選擇運行安全掃描時,CodeWhisperer會檢測到此漏洞并顯示問題。(來源:AWS機器學習博客)
話雖如此,開發(fā)者應該始終將AI輔助編碼助手與適當?shù)臏y試、良好的代碼審查實踐、可靠的安全工具以及自己的判斷力結合使用!
3.4 公共代碼的(錯誤)使用情況如何?
關于在訓練集中大量使用公共代碼的問題已經(jīng)引起了人們的關注。理想情況下,助手應該始終生成之前從未見過的代碼。如果助手直接從訓練集中引用代碼,這可能使代碼失去合理使用的資格,并可能侵犯原始所有者的版權。
為了減少這種情況,Copilot內(nèi)置了一個過濾器,試圖檢測和抑制GitHub Copilot建議中包含的代碼與GitHub上的公共代碼相匹配的情況。這個過濾器是可選的,可以關閉。根據(jù)GitHub官方的說法,Copilot大約有1%的情況下會輸出與公共代碼完全相同的超過約150個字符的代碼片段。他們將此歸咎于GitHub Copilot無法從開發(fā)者正在編寫的代碼中獲取足夠的上下文,或者此問題存在一個常見的、甚至是普遍的解決方案。
與Copilot類似,CodeWhisperer還配備了一個引用跟蹤器,可以檢測生成的輸出是否與特定訓練數(shù)據(jù)相似。關于用戶編寫的代碼收集,亞馬遜表示他們不會在預覽階段使用任何開發(fā)者編寫的代碼來進一步訓練其模型。然而,CodeWhisperer確實會存儲與開發(fā)者對代碼建議的響應(如接受或拒絕建議)相關的用戶活動數(shù)據(jù)。該服務使用這些反饋來提高其機器學習模型的準確性,從而使CodeWhisperer能夠改進未來的建議。
4、勝出者是誰?
在語言和集成開發(fā)環(huán)境(IDE)支持方面,GitHub Copilot是勝者。它正式推出的時間更長,這就給了GitHub工作人員更多的時間來修復錯誤和解決問題。使用它需要進行少量的資金投入,但開發(fā)者將獲得一個功能齊全、隨時可用的產(chǎn)品。
然而,如果開發(fā)者在AWS環(huán)境中工作,那么Amazon CodeWhisperer可能是更合適的選擇。亞馬遜是第一家提供智能編碼助手的云服務提供商,而且主要是針對自己的產(chǎn)品。此外,其集成的漏洞檢測功能也是考慮使用它的一個很好的理由。最后,它對于個人開發(fā)者是免費的。
推薦書單
《面向移動設備的深度學習—基于TensorFlow Lite,ML Kit和Flutter》
《面向移動設備的深度學習—基于TensorFlow Lite,ML Kit和Flutter》詳細闡述了與移動設備深度學習開發(fā)相關的基本解決方案,主要包括使用設備內(nèi)置模型執(zhí)行人臉檢測、開發(fā)智能聊天機器人、識別植物物種、生成實時字幕、構建人工智能認證系統(tǒng)、使用AI生成音樂、基于強化神經(jīng)網(wǎng)絡的國際象棋引擎、構建超分辨率圖像應用程序等內(nèi)容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現(xiàn)過程。
本書適合作為高等院校計算機及相關專業(yè)的教材和教學參考書,也可作為相關開發(fā)人員的自學用書和參考手冊。
《面向移動設備的深度學習—基于TensorFlow Lite,ML Kit和Flutter》https://item.jd.com/14001258.html
精彩回顧
《10個提高Web開發(fā)效率的VS Code插件》
《5個實用的Python編程小技巧》
《10個容易被忽視的FastAPI實用功能》
《一文讀懂全新深度學習庫Rust Burn》
《10個必知必會的VSCode實用快捷鍵》
《十分鐘掌握Python集成學習和隨機森林算法》
微信搜索關注《Python學研大本營》,加入讀者群,分享更多精彩
訪問【IT今日熱榜】,發(fā)現(xiàn)每日技術熱點文章來源地址http://www.zghlxwxcb.cn/news/detail-764014.html
到了這里,關于AI編程,詳細比較GitHub Copilot對比Amazon CodeWhisperer的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!