GitHub Copilot:它是什麼、它如何運作以及如何使用它
已發表: 2024-04-25生成式人工智慧正在改變創意協作的面貌,而編碼助理是一些最令人興奮的新應用程式。 這些助手可以理解您的程式碼、建議補全、產生整個函數並提出替代方法。 以下是領先的 AI 編碼助手之一 GitHub Copilot 的概述。
目錄
- 什麼是 GitHub Copilot?
- GitHub Copilot 的工作原理
- 誰創建了 GitHub Copilot?
- GitHub Copilot 是免費的嗎?
- 如何使用 GitHub Copilot
- 最大限度提高效率的技巧
- 使用 GitHub Copilot 的優點
- 使用 GitHub Copilot 的缺點
- 結論
什麼是 GitHub Copilot?
GitHub Copilot 是一個 AI 編碼助手,也稱為 AI 配對程式設計師。 使用它有兩種主要方法:您可以開始編寫程式碼並讓 GitHub Copilot 完成它,或者您可以使用自然語言描述您希望程式碼執行的操作,AI 將為您產生程式碼片段。
GitHub Copilot 可以使用公共儲存庫中出現的所有語言編寫程式碼,包括 JavaScript、TypeScript、Python 和 Ruby。
您可以在整合開發環境 (IDE) 和命令列中使用 GitHub Copilot。 如果您有企業級帳戶,也可以在 GitHub.com 上存取。
GitHub Copilot 的工作原理
程式碼自動完成工具已經存在一段時間了。 GitHub Copilot 更進一步,因為它可以編寫整行程式碼和函數並回答您的問題。 以下是該平台背後機制的概述。
了解生成式人工智慧和大語言模型 (LLM)
GitHub Copilot 是基於大型語言模型 (LLM) 建構。 法學碩士可以分析和處理大量資訊並產生新內容,例如程式碼、文字或圖像。
在 Copilot 的早期階段,GitHub 嘗試了 OpenAI 製作的 LLM GPT-3。 讓我們看看 GPT 模型如何在高層次上運作。
首先,開發人員將大量文字輸入到模型中。 文字可以是網頁、書籍、電影對話或論壇討論。 就 GitHub Copilot 而言,模型被輸入了數十億行開源程式碼。
GPT 模型處理該資料以識別單字和語言結構之間的模式。 他們使用上下文來理解內容的含義,類似於我們如何使用上下文線索來弄清楚新單字的意思。
一旦模型發展出上下文線索和語言模式圖,它就可以對序列中接下來會發生什麼做出有根據的預測。 因此,當您開始在 GitHub Copilot 中輸入程式碼時,它會根據學到的資料預測程式碼的下一部分。 當您提出問題或從頭開始請求新程式碼時,它的回應就像是經過深思熟慮的猜測。 它會一一預測每個單字或程式碼片段。 舉一個基本的例子,當 GitHub Copilot 看到開發人員寫了「if __name__」時,它可以準確地預測該行的其餘部分「__main__」。
初始訓練後,模型根據人類回饋進行微調。 人類會審查其回應並對其準確性、相關性和道德因素(例如偏見和冒犯性)進行評級。 隨著時間的推移,模型會了解人類更喜歡哪種反應。
GitHub Copilot 背後模型的演變
2021 年,GitHub 和 OpenAI 發布了 Codex,這是 GPT-3 的特定編碼分支。 GitHub 完善並訓練了該模型,以提供更相關、更理想的回應。 2023 年,GitHub 宣布正在為 Copilot 使用更聰明、更有效率的模型,但沒有提供名稱或培訓的詳細資訊。
使用 GitHub Copilot 的主要介面
GitHub Copilot 為所有使用者提供兩個主要介面:Copilot Chat 和 CLI 中的 Copilot。
Copilot Chat 在您的 IDE 中運作。 目前它支援 Visual Studio Code、Visual Studio 和 JetBrains IDE 套件。 您可以突出顯示一段程式碼並編寫有關它的提示,而無需離開編輯器。 您也可以編寫函數或程式碼行的開頭,Copilot 會為您建議其餘部分。 Copilot Chat 還可以解釋程式碼片段、建議錯誤修復、描述程式設計概念以及編寫測試案例。
CLI 中的 Copilot 在終端機內提供聊天介面。 該外掛程式可讓您提出有關命令列的問題或執行提示,例如提供解釋或建議。
誰創建了 GitHub Copilot?
GitHub Copilot 是 GitHub、Microsoft 和 OpenAI(該公司生產 ChatGPT 和 DALL-E)之間的合作成果。
GitHub Copilot 最初於 2021 年 10 月作為有限技術預覽版發布。 2022 年 6 月,它透過訂閱向所有開發者廣泛提供。
GitHub Copilot 可以免費使用嗎?
GitHub Copilot 提供三種付費等級:
- 適用於個人用戶的副駕駛個人版
- 組織的副駕駛業務
- Copilot Enterprise 適用於使用 GitHub Enterprise Cloud 的公司,它允許您在一個帳戶下擁有多個組織
所有訂閱均以每位使用者每月定價,但 Copilot 個人版除外,它也提供按年訂閱。 所有關卡都提供 Copilot Chat、GitHub CLI 以及插入程式碼編輯器的功能。 個人層和業務層之間的一些關鍵區別是對審核日誌的存取和增強的策略控制。
如果您想在付費前試用 GitHub Copilot,所有用戶均可享有 30 天的一次性試用。
教師、學生和熱門開源專案的維護者可以免費使用 GitHub Copilot。
使用 GitHub Copilot 的提示和技巧
GitHub Copilot 在理解自然語言和預測您的需求方面令人印象深刻。 但您仍然需要了解一些提示和技巧,才能始終獲得高品質、相關的結果。 讓我們回顧一下一些最佳實踐,這些最佳實踐可以增加您獲得所需答案的機會。
寫出詳細的提示
為了產生有效的回應,GitHub Copilot 需要詳細且準確的提示。 為此,您需要在提示中包含正確的資訊。 例如,如果你想編寫程式碼來繪製一棟房子,你需要詳細說明房子的顏色、層數以及你想要查看它的角度。
提供例子
如果您向 GitHub Copilot 提供程式碼範例,您更有可能獲得所需的結果。 這是一種向提示添加上下文的簡單方法,無需解釋您的設想。 舉個例子,誤解的空間就會減少。
保持一致的命名約定
使用與每個變數或函數的用途相關的特定名稱來幫助 GitHub Copilot 了解上下文。 這種做法也有助於保持 GitHub Copilot 的輸出井井有條,因為它複製了您在程式碼中使用的命名約定。
將事情分解為簡單的步驟
GitHub Copilot 在編寫較短的程式碼片段時效果最佳。 將您的任務分解為簡單的步驟以獲得最佳結果。 例如,如果你想寫一個函數,請清楚地解釋 GitHub 需要遵循的每個步驟。 讓它為每個步驟一一產生程式碼片段。
看 GitHub Copilot 的回复
雖然 GitHub Copilot 擅長產生可用程式碼,但它仍然需要人工監督。 仔細檢查每個回應,確保其準確、符合編碼最佳實踐、遵守您的策略並且不包含安全漏洞。
開啟相關選項卡
透過保持開啟與您的專案相關的其他幾個選項卡,您可以更有效地工作並增加獲得更好回應的幾率。 GitHub Copilot 使用一種稱為相鄰選項卡的技術來獲取有關您的請求的更多上下文。 它會掃描 IDE 中開啟的其他選項卡,以尋找符合的程式碼片段並將它們包含在其回應中。
使用 GitHub Copilot 最大限度提高開發效率的方法
GitHub Copilot 可以透過多種方式簡化您的流程,從產生新程式碼到編寫文件。 以下是該人工智慧結對程式設計師最流行的一些應用程式。
產生新程式碼
GitHub Copilot 可以從頭開始建立程式碼。 您可以透過編寫目標的詳細描述來建立新的函數、類別和其他程式碼結構。 使用 GitHub Copilot 從頭開始編寫最適合起草樣板檔案和基本程式碼。
程式碼建議和自動完成
當您編寫程式碼時,GitHub Copilot 可以根據您正在編輯的文件的上下文提出建議。 有時,它會提供多種建議,您可以切換以找到您喜歡的建議。 您也可以合併多個建議中的程式碼。 如果您不喜歡 GitHub Copilot 產生的第一批建議,您可以要求更多建議。
高效的調試和糾錯
您可以要求 GitHub Copilot 推薦修復程式碼錯誤的策略和解決方案。 在 IDE 中,描述 Copilot Chat 中的錯誤並尋求解決方案。 如果您使用 CLI,則可以使用 /fix 產生潛在的修復。 GitHub Copilot 會考慮錯誤程式碼、周圍程式碼和程式碼語法來產生可能的解決方案。
此外,如果命令未在命令終端機中運行,GitHub Copilot 會建議程式碼失敗的可能原因並提供潛在的解決方案。
自動化測試案例編寫
當您想要驗證程式碼是否按計劃運行時,GitHub Copilot 可以幫助您編寫單元測試案例。 您可以選擇一段程式碼並要求 GitHub Copilot 建立單元測試或描述您想要測試的內容。
互動式程式碼討論
您可以使用自然語言與 GitHub Copilot 進行交互,提出問題並獲得有關編碼挑戰的指導。 您無需搜索論壇或挖掘文檔,而是可以直接在編輯器中獲得編碼問題的答案。
試著向 GitHub Copilot 詢問以下問題:
- 如何使用特定的編碼語言建立新項目
- 各種軟體架構的優缺點
- 解釋一段程式碼的作用
- 提供與特定語言相關的語法規則
- 討論編碼問題,例如為什麼程式碼未如預期執行
簡化文檔
GitHub Copilot 可以為您的程式碼撰寫文件。 開始編寫您的文檔,它會自動為您完成。 就像編碼自動完成一樣,您可以循環瀏覽建議以找到適合您的程式碼的建議。 然後,您可以選擇正確的文字並進行編輯,以使文件完整且準確。 它還可以建議測試、使用和貢獻者指南等小節。
程式碼優化和重構
您可以使用 GitHub Copilot 讓您的程式碼更有效率、可讀或可維護。 突出顯示一段程式碼並提示它對其進行最佳化。 借助此功能,GitHub Copilot 可以幫助您簡化重新組織程式碼區塊、重新命名變數以及使程式碼更加簡潔等工作。
使用 GitHub Copilot 的優點
使用 GitHub Copilot 可協助您更有效率地工作,並且可以成為您的程式設計教育工具包的一部分。 您也可以從與 GitHub 龐大社群分享見解中受益。
讓我們仔細看看使用 GitHub Copilot 的優點。
簡化編碼效率
生成式人工智慧大大提高了開發人員的生產力。 根據一項研究,AI 配對程式設計師可以將程式碼產生時間減少 35-45%。 GitHub Copilot 透過自動化手動重複性任務來加快編碼流程。 這使您可以將更多時間花在更複雜的編碼活動上。
以下是一些可以節省您時間的方法:
- 減少鍵入重複程式碼片段或搜尋特定語法的需要
- 自動化文件編制
- 無需離開編輯器即可提供編碼問題的答案
- 為常見任務編寫樣板程式碼,例如設定函數、類別或錯誤處理
- 節省尋找過時、低效程式碼和尋找改進方法的時間
- 提供程式碼建議以幫助您啟動項目
持續學習的教育資源
GitHub Copilot 可以幫助新手和經驗豐富的程式設計師提高他們的技能。 當與其他編碼教育資源一起使用時,它可以幫助您學習基礎知識。
就是這樣:
- 研究編碼概念和術語
- 取得改進程式碼的方法的建議
- 鼓勵使用編碼最佳實踐
- 了解正確的語法和文件結構,這有助於您識別這些實踐背後的底層模式
- 探索解決編碼問題的多種方法
- 詢問有關程式碼片段的問題,以加深您對它們的含義或原因的理解
社區參與
實驗和探索對於成功使用生成式人工智慧平台至關重要。 由於 GitHub 擁有一個大型、活躍的全球社區,因此您很可能會找到與您有共同點的 Copilot 用戶。 該社群允許用戶互相學習、分享技巧並討論最新更新。 您可以在論壇、社交媒體、播客和 YouTube 上找到有用的相關資訊。
擁有龐大的用戶群也有助於改善 GitHub Copilot。 使用者提供回饋,幫助訓練模型,創建創新用例,並找到將 GitHub Copilot 與其他外掛程式和擴充功能相結合的新方法。
使用 GitHub Copilot 的缺點
與所有技術一樣,GitHub Copilot 也有潛在的缺點。 根據您的程式語言,它可能不準確或產生不一致的結果。 其訓練和反應也存在道德問題。
使用 GitHub Copilot 時,請記住這些潛在的陷阱。
響應不準確或有問題
由於 GitHub Copilot 是根據公開可用的程式碼進行培訓的,因此它可能反映了其知識庫中的一些缺陷。 例如,其回應可能包含錯誤、引用過時的 API 或包含安全漏洞。 它還可能洩漏私有程式碼(例如 API 金鑰)。
此外,生成式人工智慧總是有產生攻擊性或有偏見的反應的風險。 雖然 GitHub 已經針對攻擊性提示和回應實施了保護措施,但它們並不是萬無一失的。
最終,您有責任審查程式碼的準確性、有效性和安全性。 GitHub 提供了多種功能來幫助您評估程式碼,例如 GitHub Actions、Dependabot、CodeQL 和程式碼掃描。
程式語言精熟程度
GitHub Copilot 在技術上精通所有公開可用的程式語言。 然而,對某些人來說,其答覆的品質比其他人好。
根據 Github 的說法,以下是它最擅長的語言:
- Python
- JavaScript
- 打字稿
- 紅寶石
- 去
- C#
- C++
這些語言往往是公共儲存庫上最受歡迎的語言,因此 GitHub Copilot 在使用它們時表現最佳。 如果您使用公共論壇中不常討論的語言,則更有可能得到不準確的資訊和更少的回應。
道德問題
與所有人工智慧一樣,GitHub Copilot 使用公共程式碼及其輸出版權的能力存在道德問題。 GitHub Copilot 的開發人員表示,使用公共資料進行訓練屬於合理使用的保護範圍。
批評者表示,GitHub 的訓練資料實際上受到 Copyleft 或自由開源軟體 (FOSS) 許可證的保護,這要求您遵循特定的歸屬指南。 借助 Copyleft 許可證,作者可以決定如何使用他們的作品。 一些專家表示 GitHub 違反了這些原則。 其他人則說 GitHub Copilot 沒有做任何違法的事情,但我們需要就人工智慧及其對開源資料的使用進行更廣泛的對話。
最終,監管機構和法院將做出決定。 這並不是避免使用 GitHub Copilot 的理由,但需要注意。 如果您廣泛將 GitHub Copilot 用於商業項目,您可能需要與專家討論您面臨的法律風險。
GitHub Copilot 和其他 AI 編碼助理的下一步是什麼?
GitHub Copilot 可以幫助您更快地編碼、鼓勵使用程式設計最佳實踐並擴展您的編碼知識。 其廣泛的功能,從建議下一行程式碼到編寫測試案例,簡化了編碼中許多更手動、更乏味的方面。 從新開發人員到經驗豐富的開發人員,每個人都可以利用 GitHub Copilot 的功能並向其龐大的使用者社群學習。
儘管如此,它仍然無法取代人類知識。 您應該檢查其響應以確保它們準確且安全。 您可能也喜歡將它用於某些程式語言而不是其他語言,因為它的結果可能會有所不同。
那麼 GitHub Copilot 和其他生成式 AI 平台的下一步是什麼? 生成式人工智慧正在以閃電般的速度發展,保持最新工具、應用程式和法規的更新是為未來做好準備的最佳方式。