前言
前面專門寫了一篇針對Github Copilot、Codeium、Tabnine、Replit Ghostwriter和Amazon CodeWhisperer五款主流AI程式設計工具的綜合評估的文章。五大AI程式設計工具(Copilot、Tabnine、Codeium)綜合評估分析。
今天将單獨對其中的GitHub Copilot來進行深入的體驗評估,後續對于剛推出的Copilot X也會陸續進行分析介紹。
GitHub Copilot 通過在你編寫代碼時提供内聯建議,為你的工作提供幫助。
GitHub Copilot 可以通過具有 GitHub Copilot for Individuals 的個人賬号或通過具有 GitHub Copilot for Business 的組織賬号進行管理。
GitHub Copilot 供經過驗證的學生、教師和熱門開源項目的維護人員免費體驗。 如果你不是學生、教師或熱門開源項目的維護人員,可以在 30 在試用版中免費體驗 GitHub Copilot。 免費體驗後,需要付費訂閱才能繼續使用。
一、GitHub Copilot産品介紹
1.1、GitHub Copilot簡介
GitHub Copilot是由GitHub開發的AI輔助程式設計工具,它使用的是OpenAI Codex技術,這是一個由OpenAI建立的通用預訓練語言模型。GitHub Copilot可以根據代碼和注釋的上下文提供個性化的代碼建議。要使用它,您可以在以下內建開發環境(IDE)中安裝GitHub Copilot擴充程式:
- Visual Studio
- Visual Studio Code
- Neovim
- JetBrains IDEs(如IntelliJ、PyCharm、WebStorm等)
1.2、GitHub Copilot能獨自完成編碼工作?
GitHub Copilot不能獨自完成編碼工作,它需要開發人員的參與。在GitHub,我們将其稱之為“AI結對程式員”、“AI助手”和“Copilot”,因為這個工具離不開開發人員!實際上,AI系統隻能執行開發人員程式設計要求它們執行的任務,并且它們沒有自由意志或獨立決策的能力。在這種情況下,GitHub Copilot會利用您編寫的代碼和注釋上下文來提供即時的代碼建議!通過GitHub Copilot,您可以将注釋轉換為代碼、自動填充重複代碼并展示備選建議。
1.3、GitHub Copilot是如何運作的?
在底層,GitHub Copilot從代碼和注釋中提取上下文,并即時建議單個行或整個函數。其背後使用OpenAI Codex技術,這是一種能夠将自然語言翻譯成代碼的機器學習模型,為GitHub Copilot提供支援。
1.4、GitHub Copilot收費模式?
GitHub Copilot是一項付費功能,需要按月或按年訂閱。GitHub Copilot 訂閱可以通過 Copilot for Individual GitHub.com 上的個人帳戶進行支付和管理,也可以通過 GitHub Copilot for Business 的組織帳戶集中支付和管理。
GitHub 上經過驗證的學生、教師和流行開源項目的維護人員有資格免費體驗 Copilot for Individual。如果您符合個人版免費 Copilot 訂閱的條件,則當您通路 GitHub Copilot 訂閱頁面時,将自動收到通知。如果您不符合個人版免費 Copilot 訂閱的标準,您将獲得 30 天的免費體驗期,之後需要付費訂閱才能繼續使用。
1.5、GitHub Copilot Labs簡介
目前,GitHub Copilot Labs由一個VS Code側邊欄組成,它獨立于(并依賴于)GitHub Copilot擴充,其中包含不同的功能。目前有四種:代碼解釋、代碼翻譯、自定義提示和生成測試用例。安裝 Copilot Labs 擴充後,您将在側邊欄中看到一個 Copilot 圖示。單擊該按鈕将顯示側邊欄,每個實驗都在單獨的面闆中。
二、GitHub Copilot賬号注冊
2.1、個人賬号注冊
在開始使用 GitHub Copilot 之前,需要為個人帳戶設定免費體驗或訂閱。
注意:如果你參加了 2021 年 7 月至 2022 年 6 月期間運作的免費 GitHub Copilot 技術預覽活動,則你沒有資格進行為期 30 天的試用。
- 在任何頁面的右上角,單擊個人資料照片,然後單擊“設定”。
- 在左側欄的“Code, planning, and automation”部分中,單擊“ Copilot”。
- 在 GitHub Copilot 設定頁面上,單擊“啟用 GitHub Copilot”。
- 選擇要按月還是按年付款,然後單擊“繼續通路 Copilot”。
- 如果個人帳戶符合免費 GitHub Copilot 訂閱(而不是試用或付費訂閱)的條件,将自動轉到步驟 6。
- 按照步驟确認付款詳細資訊,然後單擊“送出”。
- 選擇Preferences,然後單擊“儲存并開始”。
- 可以稍後通過傳回到 GitHub Copilot 設定來更改這些Preferences。
- 注冊成功後如下圖所示,接下來可以安裝IDE擴充進行GitHub Copilot程式設計了。
三、擴充安裝
3.1、Visual Studio Code
如果使用 Visual Studio Code,可以直接在編輯器中檢視并合并來自 GitHub Copilot 的建議。 本文将示範如何在适用于 macOS、Windows 或 Linux 的 Visual Studio Code 中使用 GitHub Copilot。
- 打開 Visual Studio Code 擴充搜尋“copilot”,轉到 GitHub Copilot 擴充頁,然後單擊“安裝”。
- 如果以前未在 GitHub 帳戶中授權 Visual Studio Code,系統會提示你在 Visual Studio Code 中登入到 GitHub。
- 如果以前已在 GitHub 上的帳戶中授權 Visual Studio Code,系統将會自動授權 GitHub Copilot。
- 在浏覽器中,GitHub 将請求 GitHub Copilot 所需的權限。 若要準許這些權限,請單擊“授權 Visual Studio Code”。
- 要确認身份驗證,請在 Visual Studio Code 的“Visual Studio Code”對話框中單擊“打開”。
- 為了體驗到GitHub Copilot新推出的實驗性功能,我們可以安裝“GitHub Copilot Labs”擴充,因為GitHub Copilot Labs是獨立于GitHub Copilot,是以插件安裝及注冊登入都是單獨的,安裝完插件需要登入單獨注冊。
3.2、JetBrains IDEs
若要在 JetBrains IDE 中使用 GitHub Copilot,需要先安裝 GitHub Copilot 擴充。 以下過程将指導你在 IntelliJ IDEA 中安裝 GitHub Copilot 插件。 在另一個受支援的 IDE 中安裝插件的步驟可能有所不同。
- 在 JetBrains IDE 中,在 Windows 的“檔案”菜單或 IDE 名稱 (Mac) 下(例如 PyCharm 或 IntelliJ),單擊“設定”(Windows) 或“Preferences”(Mac)。
- 在“Setting/Preferences”對話框的左側菜單中,單擊“插件”。
- 在“Setting/Preferences”對話框頂部,單擊“市場”。 在搜尋欄中,搜尋“GitHub Copilot”,然後單擊“安裝”。
- 安裝 GitHub Copilot 後,單擊“重新開機 IDE”。
- JetBrains IDE 重新開機後,單擊“工具”菜單。 單擊“GitHub Copilot”,然後單擊“登入到 GitHub”。
- 在“登入到 GitHub”對話框中,若要複制裝置代碼并打開裝置激活視窗,請單擊“複制并打開”。
- 裝置激活視窗将在浏覽器中打開。 粘貼裝置代碼,然後單擊“繼續”。
- GitHub 将請求 GitHub Copilot 所需的權限。 若要準許這些權限,請單擊“授權 GitHub Copilot 插件”。
- 權限獲得準許後,JetBrains IDE 将顯示确認。 要開始使用 GitHub Copilot,請單擊“确定”。
四、GitHub Copilot程式設計實戰
4.1、自動代碼提示
GitHub Copilot 為多種語言和各種架構提供建議,但尤其适用于 Python、JavaScript、TypeScript、Ruby、Go、C# 和 C++。 以下示例使用的是 Java,但其他語言的工作方式類似。
可以在注釋中使用自然語言描述要執行的操作,GitHub Copilot 會提供代碼建議來實作你的目标。
1、若要接受建議,請按 Tab。若要拒絕所有建議,請按 Esc。
2、打開包含多個附加建議的新頁籤。
- 在 macOS 上,按 Command+Shift+A,然後單擊“打開 GitHub Copilot”,或按 Command+Shift+\ 立即打開新頁籤。
- 在 Windows 或 Linux 上,按 Ctrl+Enter,然後單擊“打開 GitHub Copilot”。
4.2、解釋代碼
每個開發人員都知道編寫新代碼隻是軟體開發的一部分。通常,開發人員面臨的困難的工作是閱讀和了解代碼。無論是因為它是一個不熟悉的代碼庫,還是有問題的代碼是否使用了您可能不知道的庫,那麼需要先大緻了解發生了什麼,這樣您就可以跳入并使用代碼,或進行一些更改。
此功能允許您突出顯示代碼塊,并要求 GitHub Copilot 用通俗易懂的語言對其進行解釋:
4.3、建立自定義提示語
GitHub Copilot提供了幾個預設的提示語來幫助您入門:其中三個解釋了特定代碼塊的作用,另一個則生成了調用函數的示例代碼。
您可以自定義查詢的提示語和停止序列,以便提出使用 Codex 解釋代碼的新應用程式。建立這些可能更像是一種藝術而不是科學!提示語和停止序列的微小變化可能會産生非常不同的結果。三個不同的“解釋”示例展示了傾向于從模型中産生有用響應的政策,但這是未知的領域。我們很興奮地看到您将其用于什麼。
如果您想制作自己的預設,這些關于提示語設計和停止序列的文章是一個很好的起點。
4.4、代碼翻譯
語言翻譯的工作方式類似于解釋功能:突出顯示一段代碼,選擇要将該代碼翻譯成的語言,然後點選“詢問Copilot”按鈕。雖然翻譯并不驚豔,但我們認為它們可以作為開發人員的良好起點。
4.5、生成測試用例
TestPilot 是一款工具,它可以幫助您編寫單元測試,而不需要您自己編寫測試代碼。它使用了 GitHub Copilot 的人工智能技術,可以根據您現有的代碼和文檔為您建議測試。與其他工具不同的是,TestPilot 生成的測試代碼易于了解和閱讀,而且可以根據您的回報進行改進。這樣,您就可以更輕松地測試您的代碼,確定它的品質和穩定性。
五、總結
5.1、保持良好的程式設計習慣
雖然 GitHub Copilot 可以為生成代碼建議提供強大的工具,但重要的是要記住,它不能替代您自己的程式設計技能和專業知識。AI 模型隻有在它們被訓練的資料良好的情況下才能發揮作用,是以重要的是将這些工具用作輔助,而不是完全依賴它們。鼓勵 GitHub Copilot 的每個使用者:
- 檢查代碼
- 運作單元測試、內建測試和任何其他程式化的測試代碼
- 手動測試代碼以確定它按照預期工作
- 使用良好的程式設計實踐,因為 GitHub Copilot 将遵循您的編碼風格和模式作為其建議的指南。
5.2、GitHub Copilot綜合評估
整體來看,GitHub Copilot的體驗還是不錯的,代碼提示響應速度快,推薦結果也比較準确,對于Copilot Labs推出的功能可以比肩Bito,提供了解釋、翻譯、調試、測試、記錄和重構代碼等核心功能。
如果有條件推薦大家試試GitHub Copilot,另外GitHub新推出的Copilot X包含的新功能将會經驗到我們,它完全脫離IDE
- Copilot for Docs - 使開發人員無需搜尋大量文檔。
- Copilot for Pull Requests - 幫助您編寫更好的 PR 描述,并幫助您的團隊更快地審查和合并 PR/
- Copilot Chat - 通過 GitHub Copilot 聊天在您的編輯器中提供類似 ChatGPT 的體驗。
- 适用于 CLI 的 Copilot - 幫助您記住 shell 指令和标志,以更快地在終端中運作指令。
- Copilot Voice - 編寫和編輯代碼,導航代碼庫,并使用語音控制Visual Studio Code。