GitHub 正式推出由AI充當開發者結對工程師的GitHub Copilot服務,這是一款新的 AI 配對程序員,可幫助您編寫更好的代碼。GitHub Copilot 從您正在處理的代碼中提取上下文,建議整行或整個函數。它可以幫助您快速發現解決問題、編寫測試和探索新 API 的替代方法,而無需在互聯網上繁瑣地搜索答案。在您鍵入時,它會適應您編寫代碼的方式——幫助您更快地完成工作。

GitHub 推出 Copilot 服務

GitHub Copilot 與 OpenAI 合作開發,由 OpenAI Codex 提供支持,OpenAI Codex 是由 OpenAI 創建的新 AI 系統。OpenAI Codex 對人們如何使用代碼有廣泛的了解,並且在代碼生成方面比 GPT-3 的能力要強得多,部分原因在於它是在一個包含更集中的公共源代碼的數據集上進行訓練的。GitHub Copilot 可與廣泛的框架和語言配合使用,但此技術預覽版尤其適用於 Python、JavaScript、TypeScript、Ruby 和 Go。在經歷過一整年及120萬名開發者的預覽之後,現在的GitHub Copilot可整合到 Neovim、Jet Brains IDEs、Visual Studio與Visual Studio Code 等環境,它不僅能提供下一行的程式撰寫建議,也能推薦完整的方法、範例程式碼、整個單元測試,或是複雜的演算法。

讓程序員專注於解決更大的問題

幫助您快速發現解決問題、編寫測試和探索新 API 的替代方法,而無需在互聯網上繁瑣地搜索答案
經過數十億行代碼的訓練,GitHub Copilot 將自然語言提示轉化為數十種語言的編碼建議

在陌生領域自信地編碼

無論您是使用新語言或框架,還是只是學習編碼,GitHub Copilot 都可以幫助您找到自己的方式。解決錯誤,或學習如何使用新框架,而無需花費大部分時間瀏覽文檔或搜索網絡。

Github Copilot: 在陌生領域自信地編碼

讓程序員專注於解決更大的問題

花更少的時間創建樣板和重複的代碼模式,而將更多時間花在重要的事情上:構建出色的軟件。寫一條評論來描述您想要的邏輯,GitHub Copilot 將立即建議代碼來實現該解決方案。

Github Copilot: 專注於解決更大的問題

這是我見過的最令人興奮的機器學習應用

  • 當我開始使用 GitHub Copilot 編寫 Clojure 時,我驚呆了,它填充了慣用的命名空間需求,就像我要編寫它一樣。
  • 嘗試通過谷歌搜索所有內容以使用不熟悉的語言進行編碼,就像只用一本短語手冊在國外導航一樣。使用 GitHub Copilot 就像僱用一名口譯員。
  • GitHub Copilot 運行得非常好。沒有它,我永遠不會再開發軟件。

GitHub 也表示,他們相信由AI來協助撰寫程式碼將能改變軟體開發的性質,提供開發者一個可更快及更容易撰寫程式碼的工具,並專注在其它更重要的事。

了解更多關於 Github Copilot

#github  #ai  #githubcopilot

Copilot - dont fly solo
$10/month or $100/year per user

FAQ

什麼是 GitHub Copilot?

OpenAI Codex 接受了公開可用的源代碼和自然語言的培訓,因此它適用於編程和人類語言。GitHub Copilot 擴展將您的評論和代碼發送到 GitHub Copilot 服務,它依賴於上下文,如下面的隱私中所述 - 即,您正在編輯的文件中的文件內容以及項目中的相鄰或相關文件。它還可以收集存儲庫的 URL 或文件路徑以識別相關上下文。然後 OpenAI Codex 使用註釋和代碼以及上下文來綜合和建議各個行和整個函數。

GitHub Copilot 是如何工作的?

OpenAI Codex 接受了公開可用的源代碼和自然語言的培訓,因此它適用於編程和人類語言。GitHub Copilot 擴展將您的評論和代碼發送到 GitHub Copilot 服務,它依賴於上下文,如下面的隱私中所述 - 即,您正在編輯的文件中的文件內容以及項目中的相鄰或相關文件。它還可以收集存儲庫的 URL 或文件路徑以識別相關上下文。然後 OpenAI Codex 使用註釋和代碼以及上下文來綜合和建議各個行和整個函數。

GitHub Copilot 訓練了哪些數據?

GitHub Copilot 由 Codex 提供支持,Codex 是由 OpenAI 創建的生成式預訓練 AI 模型。它已經接受了來自公開來源的自然語言文本和源代碼的培訓,包括 GitHub 上公共存儲庫中的代碼。

GitHub Copilot 能寫出完美的代碼嗎?

在最近的一次評估中,我們發現用戶平均接受了 GitHub Copilot 顯示的所有完成的 26%。我們還發現,平均超過 27% 的開發人員代碼文件是由 GitHub Copilot 生成的,而在 Python 等某些語言中,這一比例高達 40%。但是,GitHub Copilot 並沒有編寫完美的代碼。它旨在根據它可以訪問的上下文生成可能的最佳代碼,但它不會測試它建議的代碼,因此代碼可能並不總是有效,甚至沒有意義。GitHub Copilot 只能保存非常有限的上下文,因此它可能無法使用項目中其他地方甚至同一文件中定義的有用函數。它可能暗示圖書館和語言的舊或不推薦使用。將用非英語編寫的註釋轉換為代碼時,與英語相比可能存在性能差異。

與任何其他代碼一樣,GitHub Copilot 建議的代碼應經過仔細測試、審查和審查。作為開發人員,您始終負責。

GitHub Copilot 會幫助我為新平台編寫代碼嗎?

GitHub Copilot 接受過公共代碼培訓。當一個新的庫、框架或 API 發佈時,可供模型學習的公共代碼就會減少。這降低了 GitHub Copilot 為新代碼庫提供建議的能力。隨著更多示例進入公共空間,我們將它們整合到訓練集中,並且建議相關性得到提高。將來,我們將提供方法來突出顯示較新的 API 和示例,以提高它們在 GitHub Copilot 建議中的相關性。

人工監督

GitHub Copilot 能否在其建議中引入不安全代碼?

公共代碼可能包含不安全的編碼模式、錯誤或對過時 API 或慣用語的引用。當 GitHub Copilot 基於這些數據合成代碼建議時,它還可以合成包含這些不良模式的代碼。這是我們在 GitHub 非常關心的事情,近年來我們為開源項目提供了 GitHub Actions、Dependabot 和 CodeQL 等工具,以幫助提高代碼質量。當然,您應該始終將 GitHub Copilot 與良好的測試和代碼審查實踐和安全工具以及您自己的判斷結合使用。

GitHub 是否擁有 GitHub Copilot 生成的代碼?

GitHub Copilot 是一種工具,就像編譯器或筆一樣。GitHub 不擁有 GitHub Copilot 生成的建議。你在 GitHub Copilot 的幫助下編寫的代碼屬於你,你要對它負責。我們建議您在將代碼投入生產之前仔細測試、審查和審查代碼,就像您編寫的任何包含非獨立來源的材料的代碼一樣。

GitHub Copilot 是否背誦訓練集中的代碼?

GitHub Copilot 建議的絕大多數代碼以前從未見過。我們最新的內部研究表明,大約 1% 的情況下,建議可能包含一些長度超過約 150 個字符的代碼片段與訓練集匹配。先前的研究表明,當 GitHub Copilot 無法從您正在編寫的代碼中收集足夠的上下文時,或者當有一個常見的,甚至可能是通用的解決問題的方法時,就會發生許多這樣的情況。

我可以做些什麼來減少 GitHub Copilot 對與公共代碼匹配的代碼的建議?

我們構建了一個過濾器來幫助檢測和抑制 GitHub Copilot 建議包含與 GitHub 上的公共代碼匹配的代碼的罕見情況。您可以在設置過程中選擇打開或關閉該過濾器。啟用過濾器後,GitHub Copilot 會根據 GitHub 上大約 150 個字符的公共代碼檢查代碼建議及其周圍代碼是否匹配或接近匹配(忽略空格)。如果有匹配項,則不會向您顯示建議。我們計劃繼續發展這種方法,並歡迎反饋和評論。

除了過濾器,我還可以採取哪些其他措施來評估 GitHub Copilot 建議的代碼?

您應該採取與您編寫的任何使用非獨立來源材料的代碼相同的預防措施。其中包括嚴格的測試、IP 掃描和檢查安全漏洞。在查看之前,您應該確保您的 IDE 或編輯器不會自動編譯或運行生成的代碼。

廣泛的影響

不同的人會從 GitHub Copilot 體驗到不同的服務質量嗎?

鑑於公共資源主要使用英語,GitHub Copilot 在開發人員提供的自然語言提示不是英語和/或語法不正確的情況下可能效果不佳。因此,非英語使用者可能會體驗到較低的服務質量。

此外,缺乏經驗的開發人員可能難以使用 GitHub Copilot 有效地生成代碼,並且他們缺乏經驗可能會妨礙他們有效審查和編輯 GitHub Copilot 提出的建議的能力。最後,我們正在對 GitHub Copilot 的殘障開發人員易用性進行內部測試,並努力確保所有開發人員都可以訪問 GitHub Copilot。請隨時在我們的反饋論壇中分享您對 GitHub Copilot 可訪問性的反饋。

我們承認代碼生成系統中的公平性和包容性是重要的新興研究領域。我們正在與包括微軟負責任人工智能辦公室在內的專家合作,努力推進 GitHub Copilot 的負責任人工智能實踐。我們還將審查新的研究並從我們收到的反饋中學習,以改進 GitHub Copilot,使其可供廣泛的開發人員使用,並為具有不同背景的人提供類似的服務質量。

GitHub Copilot 等高級代碼生成工具將如何影響開發人員的工作?

引入更智能的系統有可能給開發人員體驗帶來巨大的變化。我們不希望 GitHub Copilot 取代開發人員。相反,我們希望 GitHub Copilot 與開發人員合作,增強他們的能力,使他們更有效率,減少手動任務,並幫助他們專注於有趣的工作。我們也相信 GitHub Copilot 有潛力降低進入門檻,讓更多人探索軟件開發,加入下一代開發者行列。我們正在努力通過內部和外部研究來檢驗這些假設。

隱私

如何控制 Copilot 收集的數據的使用?

GitHub Copilot 為您提供了有關如何使用收集的數據的某些選擇。使用 GitHub Copilot 需要用戶參與數據,包括假名標識符和一般使用數據,並且在您使用 GitHub Copilot 時將繼續收集、處理和與 Microsoft 和 OpenAI 共享。您可以通過調整您的用戶設置來選擇您的代碼片段是否由 GitHub 收集和保留,並進一步處理並與 Microsoft 和 OpenAI 共享。有關 GitHub Copilot 收集和處理的遙測類型的其他信息,請參閱GitHub Copilot 收集哪些數據?以下。

您還可以通過填寫支持票來請求刪除與您的 GitHub 身份關聯的 GitHub Copilot 數據。請注意,未來的數據收集將在繼續使用 GitHub Copilot 的情況下進行,但您可以在Copilot 用戶設置中控制是否在遙測中收集、處理和保留您的代碼片段。

GitHub Copilot 收集哪些數據?

GitHub Copilot 依賴文件內容和其他數據來工作。它收集數據以提供服務並保存一些數據以進行進一步分析並實現改進。有關如何使用和共享遙測數據的更多詳細信息,請參閱下文。

用戶參與數據

當您使用 GitHub Copilot 時,它將收集有關與 IDE 或編輯器交互時生成的事件的使用信息。這些事件包括用戶編輯操作,例如接受和拒絕完成,以及錯誤和一般使用數據,以識別延遲和功能參與等指標。此信息可能包括個人數據,例如匿名標識符。

代碼片段數據

根據您首選的遙測設置,GitHub Copilot 還可能收集和保留以下內容,統稱為“代碼片段”:您正在編輯的源代碼、相關文件和在同一 IDE 或編輯器中打開的其他文件、存儲庫的 URL 和文件路徑。

GitHub Copilot 遙測數據如何使用和共享?


包括代碼片段的遙測,詳見GitHub Copilot 收集哪些數據?, 被 GitHub、Microsoft 和 OpenAI 用於改進 GitHub Copilot 和相關服務,以及對開發人員進行產品和學術研究。

遙測用途可能包括:

  • 直接改進 GitHub Copilot,包括評估處理過程中的不同策略和預測哪些建議用戶可能會覺得有幫助
  • 開發和改進來自 GitHub、Microsoft 和 OpenAI 的密切相關的開發人員產品和服務
  • 調查和檢測對 GitHub Copilot 的潛在濫用
  • 進行與開發人員及其對開發人員工具和服務的使用相關的實驗和研究
  • 評估 GitHub Copilot,例如,通過衡量它對用戶的積極影響
  • 改進底層代碼生成模型,例如,通過提供正面和負面的例子
  • 微調排名和排序算法和提示製作

在處理代碼片段時,我們會採取下文如何保護傳輸的數據?並根據我們的隱私聲明遵循負責任的做法,以便使用您的遙測數據來改進這些模型不會導致這些數據與其他 GitHub Copilot 用戶共享。

如何保護傳輸的數據?

我們知道用戶編輯操作、源代碼片段以及存儲庫的 URL 和文件路徑都是敏感數據。因此,採取了多種保護措施,包括:

  • 傳輸的數據在傳輸和靜態加密
  • 訪問受到嚴格控制。數據只能由 (1) 在 GitHub Copilot 團隊或 GitHub 平台健康團隊工作的指定 GitHub 人員,(2) 在 GitHub Copilot 團隊或與 GitHub Copilot 團隊一起工作的 Microsoft 人員,以及 (3) 在GitHub 副駕駛
  • 訪問代碼片段數據的人員需要基於角色的訪問控制和多因素身份驗證

我的私人代碼會與其他用戶共享嗎?

不會。我們使用數據(包括有關用戶接受或拒絕哪些建議的信息)來改進模型。我們根據我們的隱私聲明遵循負責任的做法,以確保您的代碼片段不會被用作 GitHub Copilot 其他用戶的建議代碼。

在哪裡可以了解有關 GitHub 隱私和數據保護的更多信息?

有關 GitHub 如何處理和使用個人數據的更多信息,請參閱我們的隱私聲明

Share this post