什么是Github Copilot
如今,已有超過7300萬開發人員在使用GitHub,Copilot是Github新四大支柱之一,AI編程工具Copilot與網頁版開發環境Codespaces,讓我們看到了軟件開發雲原生(cloud-native)與AI融合的未來。
2021年6月份,GitHub聯合OpenAI,推出了一款"GitHub Copilot"工具,可以根據上下文自動寫代碼,包括文檔字符串、注釋、函數名稱、代碼,只要用戶給出提示,就可以寫出完整的函數。
該工具此前僅支持Visual Studio Code,在GitHub Universe 2021開發者大會上,GitHub官方宣布了Copilot的更新,已支持Neovim
和JetBrains IDE
,包含開發者常用的IntelliJ IDEA、PyCharm等。
要想使用GitHub Copilot,用戶需將IntelliJ IDEA和PyCharm升級到2021.2或以上版本;而Neovim的版本則需為0.6或以上版本,並且需要安裝Node.js v12或以上版本。
GitHub Copilot還增加了對Java中多行補全的支持,並在未來幾個月內支持更多語言。目前,GitHub Copilot支持Python
、JavaScript
、TypeScript
、Java
、Ruby
和Go
等編程語言。
Github內部的應用(>30%)
開源軟件托管平台GitHub近期表示,目前在GitHub網站上多達30% 的新代碼是在該公司的AI編程工具Copilot的幫助下完成的。Copilot可以查看人類程序員編寫的代碼,並執行建議行數和替代代碼的工作,消除了編碼中的一些重復性勞動。
Copilot建立在
OpenAI Codex
算法的基礎上,該算法是經過數TB的公開源代碼訓練出來的,可以將人類語言編譯為編程語言,並作為程序員可使用的一個的自動化完成工具。
GitHub Next的副總裁Oege de Moor表示:
"我們從用戶那里聽到很多聲音,在使用Copilot后,他們的編程過程發生了明顯的變化。"
GitHub將在當地時間10月27日的GitHub Universe會議上宣布,推出對所有流行編程語言的Copilot支持。Oege de Moor表示:
"此舉將會把這項技術帶給更多的人,這是GitHub之前宣稱的‘讓2億下一批開發者學會編程’的一部分。"
Oegede Moor還指表示,Copilot在GitHub社區里很有吸引力,自7月推出Copilot以來,50%嘗試過該產品的開發者就一直在使用它。與OpenAI的大規模文本所生成的自然語言AI模型GPT-3不同,Copilot在改善人類工作方面要更有效。
就和任何算法一樣,Copilot的數據建模依賴於其訓練數據的質量,在一項研究中紐約大學的學者們發現Copilot所撰寫的代碼中還是存在40%的網絡安全缺陷。
給力的結對編程伙伴
GitHub Copilot是結對編程的虛擬版本。結對編程是一種常見的敏捷軟件開發技術——即兩個開發人員在同一個項目上並肩協作,輪流編寫代碼並檢查合作伙伴的輸出。
GitHub表示,相比大多數代碼助手,GitHub Copilot可以理解更大范圍的上下文。因此,無論是文檔字符串、注釋、函數名稱還是代碼本身,GitHub Copilot都可以基於提供的上下文(已輸入的代碼)合成新代碼以進行匹配。
如果真有如此可靠,那么正如GitHub所說,這項功能可以讓程序員丟掉很多的文檔閱讀工作,從而專注於編輯器。
GitHub Copilot還可以將注釋轉換為代碼。只需要寫一條評論,描述想要的邏輯,GitHub Copilot就能自動“理解”並寫出相應功能的代碼。
GitHub Copilot也能自動填充重復代碼。GitHub表示,GitHub Copilot非常適合快速生成樣板和重復代碼模式。對於需要編寫大量相似但難以轉換為循環語句代碼的程序員而言,這項功能非常“香”。
包辦測試也是GitHub Copilot值得注意的亮點,GitHub表示,測試是任何強大的軟件工程項目的支柱,“導入單元測試包,就可以讓GitHub Copilot自動編寫與你的實現代碼匹配的測試。”
對於相同的上下文,GitHub Copilot可以給出多種解決方案,供程序員自主選擇。
專為編程而生
這將極大地提高大多數程序員的日常編程生產力,並且這將是推動全球軟件影響呈指數增長的最重要步驟之一
Brockman介紹說,GitHub Copilot的核心模型Codex借助了GPT-3強大的生成能力。
我們知道,GPT-3是OpenAI推出的超大規模自然語言生成模型,早期訓練GPT-3時,OpenAI無意教它如何幫助編寫代碼,它更像是一種通用語言模型,主要用於文本生成、語法修改等任務。
后來OpenAI向公眾開放API,這個基於文本訓練的模型,被網友們玩出了50多種花樣,其中包括自動生成代碼。OpenAI意識到了GPT-3在編寫代碼方面的潛力,並在其網站上提供了在線“代碼生成”服務。
幾十年來,微軟的研究人員一直在嘗試如何教計算機編寫代碼,但未取得顯著成果。此次與OpenAI合作,微軟將提供了強大Azure雲計算能力和GitHub平台(2018年被微軟收購)的大量語言編程代碼。
關於這款產品的代碼生成質量,Friedman說,GitHub員工已經做了大量嘗試,能夠確保GitHub Copilot生成安全、高質量的代碼。他說:“我們已經在系統中建立了一些安全機制,這些機制在減少各個領域能夠顯著減少出錯幾率。”也就是說,GitHub Copilot並不能保證完全不出錯,它仍然只是一個輔助生成代碼工具。
官網報道說,Copilot的底層技術屬於微軟和OpenAI共有,今年夏天OpenAI將發布Codex模型,供第三方開發者使用。微軟也表示會發布該產品的一個版本,讓企業通過培訓了解自己的編程風格。但目前,微軟只提供公共存儲庫中存儲的代碼的服務。
這不是微軟第一次依靠OpenAI來提供智能軟件。上個月,微軟展示了Power Apps Studio應用程序的更新服務,非技術人員可以使用它來編寫應用程序——用戶輸入他們想要添加的元素單詞,GPT-3可提供一些必要代碼的選項。
體驗Github Copilot
申請體驗資格
目前這個服務還處於技術預覽期,沒有完全對外開放,如果需要體驗的話,得前往官網Github Copilot,點擊Sign Up
,申請體驗資格,和自己的Github賬號綁定並且提交了相關信息之后,等待審批通過即可,通過了,他們會發郵件告訴你的。
安裝Visual Studio Code插件
打開Visual Studio Code的擴展庫,搜索關鍵詞Copilot
,找到Github Copilot這個插件,安裝即可。
然后需要通過你的Github賬號授權來登錄Visual Studio Code哈,這樣關聯一下。
這里安裝了不代表就可用了,前提還是你要完成前面的那個申請資格才行。
如果它處於可用狀態,那么會有個小圖標位於Visual Studio Code的下方。
使用Github Copilot AI助手
前面提到Github Copilot已經支持Javascript語言了,接下來我們可以新建一個JavaScript (.js)
文件。
然后我們只需要寫一個函數的定義部分,看看AI會怎么幫我們推測這個函數的實現。
function calculateDaysBetweenDates(begin, end) {
我們看到Copilot AI會幫助我們自動推薦這個函數的實現,是不是很棒,如果你覺得歐克的話,按Tab鍵就行了。
它會根據你的上下文來推測你要寫什么代碼,這比之前簡單按語法來推測高級多了,Copilot AI完全就是在猜你要實現什么功能,接下來怎么寫,交給它就好了。
如果你覺得默認給你的這段代碼實現,你不是很滿意,你還可以通過Ctrl
+ Enter
要求它給出更多的建議。
另外,還可以從你的代碼注釋來直接生成代碼。
我們先假裝寫個注釋吧
// find all images without alternate text
// and give them a red border
function process() {
接下來看看Copilot AI會有什么反應,驚嘆吧,它能根據你寫的注釋來理解你要表達的功能細節,來組織實現最終的代碼,這簡直是人機對話。
Windows 11 / Github Copilot 愛好者交流群
參考
- https://copilot.github.com
- GitHub AI 編程工具 Copilot 已支持 IntelliJ IDEA、PyCharm 等
- GitHub 換帥:開源大神辭任 CEO,競品 GitLab 剛完成 IPO
- 讓 AI 為你寫代碼 - 體驗 Github Copilot
- GitHub:其網站上 30% 新代碼是在 AI 編程工具 Copilot 幫助下完成的
- 研究人員:由微軟 GitHub Copilot 自動生成的代碼中,有 40% 存在漏洞
- 微軟 GitHub 推出 AI 編程工具 Copilot,自由軟件基金會強烈不滿,質疑其侵犯代碼版權
- OpenAI 與微軟 GitHub 聯手推出 AI 代碼生成工具,實現結對編程