乘風破浪,遇見下一代編程開發伴侶Github Copilot - 你的AI結對編程助手,編碼自動化產業新趨勢


什么是Github Copilot

如今,已有超過7300萬開發人員在使用GitHub,Copilot是Github新四大支柱之一,AI編程工具Copilot與網頁版開發環境Codespaces,讓我們看到了軟件開發雲原生(cloud-native)與AI融合的未來。

https://copilot.github.com/

image

2021年6月份,GitHub聯合OpenAI,推出了一款"GitHub Copilot"工具,可以根據上下文自動寫代碼,包括文檔字符串、注釋、函數名稱、代碼,只要用戶給出提示,就可以寫出完整的函數。

image

該工具此前僅支持Visual Studio CodeGitHub Universe 2021開發者大會上,GitHub官方宣布了Copilot的更新,已支持NeovimJetBrains IDE,包含開發者常用的IntelliJ IDEA、PyCharm等。

image

要想使用GitHub Copilot,用戶需將IntelliJ IDEA和PyCharm升級到2021.2或以上版本;而Neovim的版本則需為0.6或以上版本,並且需要安裝Node.js v12或以上版本。

GitHub Copilot還增加了對Java中多行補全的支持,並在未來幾個月內支持更多語言。目前,GitHub Copilot支持PythonJavaScriptTypeScriptJavaRubyGo等編程語言。

Github內部的應用(>30%)

開源軟件托管平台GitHub近期表示,目前在GitHub網站上多達30% 的新代碼是在該公司的AI編程工具Copilot的幫助下完成的。Copilot可以查看人類程序員編寫的代碼,並執行建議行數和替代代碼的工作,消除了編碼中的一些重復性勞動。

image

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所說,這項功能可以讓程序員丟掉很多的文檔閱讀工作,從而專注於編輯器。

image

GitHub Copilot還可以將注釋轉換為代碼。只需要寫一條評論,描述想要的邏輯,GitHub Copilot就能自動“理解”並寫出相應功能的代碼。

image

GitHub Copilot也能自動填充重復代碼。GitHub表示,GitHub Copilot非常適合快速生成樣板和重復代碼模式。對於需要編寫大量相似但難以轉換為循環語句代碼的程序員而言,這項功能非常“香”。

image

包辦測試也是GitHub Copilot值得注意的亮點,GitHub表示,測試是任何強大的軟件工程項目的支柱,“導入單元測試包,就可以讓GitHub Copilot自動編寫與你的實現代碼匹配的測試。”

image

對於相同的上下文,GitHub Copilot可以給出多種解決方案,供程序員自主選擇。

image

專為編程而生

這將極大地提高大多數程序員的日常編程生產力,並且這將是推動全球軟件影響呈指數增長的最重要步驟之一

Brockman介紹說,GitHub Copilot的核心模型Codex借助了GPT-3強大的生成能力。

我們知道,GPT-3是OpenAI推出的超大規模自然語言生成模型,早期訓練GPT-3時,OpenAI無意教它如何幫助編寫代碼,它更像是一種通用語言模型,主要用於文本生成、語法修改等任務。

后來OpenAI向公眾開放API,這個基於文本訓練的模型,被網友們玩出了50多種花樣,其中包括自動生成代碼。OpenAI意識到了GPT-3在編寫代碼方面的潛力,並在其網站上提供了在線“代碼生成”服務。

image

幾十年來,微軟的研究人員一直在嘗試如何教計算機編寫代碼,但未取得顯著成果。此次與OpenAI合作,微軟將提供了強大Azure雲計算能力和GitHub平台(2018年被微軟收購)的大量語言編程代碼。

關於這款產品的代碼生成質量,Friedman說,GitHub員工已經做了大量嘗試,能夠確保GitHub Copilot生成安全、高質量的代碼。他說:“我們已經在系統中建立了一些安全機制,這些機制在減少各個領域能夠顯著減少出錯幾率。”也就是說,GitHub Copilot並不能保證完全不出錯,它仍然只是一個輔助生成代碼工具。

image

官網報道說,Copilot的底層技術屬於微軟和OpenAI共有,今年夏天OpenAI將發布Codex模型,供第三方開發者使用。微軟也表示會發布該產品的一個版本,讓企業通過培訓了解自己的編程風格。但目前,微軟只提供公共存儲庫中存儲的代碼的服務。

這不是微軟第一次依靠OpenAI來提供智能軟件。上個月,微軟展示了Power Apps Studio應用程序的更新服務,非技術人員可以使用它來編寫應用程序——用戶輸入他們想要添加的元素單詞,GPT-3可提供一些必要代碼的選項。

體驗Github Copilot

申請體驗資格

目前這個服務還處於技術預覽期,沒有完全對外開放,如果需要體驗的話,得前往官網Github Copilot,點擊Sign Up,申請體驗資格,和自己的Github賬號綁定並且提交了相關信息之后,等待審批通過即可,通過了,他們會發郵件告訴你的。

image

image

安裝Visual Studio Code插件

https://github.com/github/copilot-docs/blob/main/docs/visualstudiocode/gettingstarted.md#getting-started-with-github-copilot-in-visual-studio-code

打開Visual Studio Code的擴展庫,搜索關鍵詞Copilot,找到Github Copilot這個插件,安裝即可。

image

然后需要通過你的Github賬號授權來登錄Visual Studio Code哈,這樣關聯一下。

image

這里安裝了不代表就可用了,前提還是你要完成前面的那個申請資格才行。

如果它處於可用狀態,那么會有個小圖標位於Visual Studio Code的下方。

image

使用Github Copilot AI助手

前面提到Github Copilot已經支持Javascript語言了,接下來我們可以新建一個JavaScript (.js)文件。

image

然后我們只需要寫一個函數的定義部分,看看AI會怎么幫我們推測這個函數的實現。

function calculateDaysBetweenDates(begin, end) {

image

我們看到Copilot AI會幫助我們自動推薦這個函數的實現,是不是很棒,如果你覺得歐克的話,按Tab鍵就行了。

它會根據你的上下文來推測你要寫什么代碼,這比之前簡單按語法來推測高級多了,Copilot AI完全就是在猜你要實現什么功能,接下來怎么寫,交給它就好了。

如果你覺得默認給你的這段代碼實現,你不是很滿意,你還可以通過Ctrl + Enter要求它給出更多的建議。

image

另外,還可以從你的代碼注釋來直接生成代碼。

我們先假裝寫個注釋吧

// find all images without alternate text
// and give them a red border
function process() {

接下來看看Copilot AI會有什么反應,驚嘆吧,它能根據你寫的注釋來理解你要表達的功能細節,來組織實現最終的代碼,這簡直是人機對話。

image

Windows 11 / Github Copilot 愛好者交流群

image

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM