GitHub AI驅動的編程輔助工具Copilot將對學生免費開放
去年6月,微軟旗下的GitHub和OpenAI推出了Copilot,這項服務為微軟Visual Studio等開發環境中的整行代碼提供建議。Copilot作為一個可下載的擴展,由一個名為Codex的人工智能模型提供支持,該模型是在數十億行公共代碼上訓練出來的,可以根據現有代碼的上下文建議額外的代碼行和功能。Copilot還可以利用其知識庫和當前環境,針對開發者想要完成的描述浮現出一種方法或解決方案。
微軟在Build 2022大會上宣布,雖然Copilot以前是技術預覽版,但從今年夏天的某個時候開始,這一輔助工具將全面發售。Copilot也將免費提供給學生和”經過驗證的”開源貢獻者。關於後者,GitHub說它將在晚些時候分享更多信息。
Copilot的使用體驗不會有太大變化。和以前一樣,開發者可以循環瀏覽Python、JavaScript、TypeScript、Ruby、Go和其他幾十種編程語言的建議,接受、拒絕或手動編輯它們。Copilot將適應開發人員的編輯,匹配特定的編碼風格,自動填充模板或重複的代碼模式,並推薦與實施代碼相匹配的單元測試。
除了Visual Studio Code之外,Copilot擴展將可用於Noevim和JetBrains,或者在GitHub Codespaces的雲端。
與Copilot的全面發布相吻合的一個新功能是Copilot Explain,它可以將代碼翻譯成自然語言描述。這被描述為一個研究項目,目的是幫助新手開發者或那些不熟悉代碼庫的人。
“今年早些時候,我們推出了Copilot Labs,這是一個單獨的Copilot擴展,作為機器學習實驗應用的試驗場,以改善開發者的體驗,”GitHub的產品副總裁Ryan J. Salva在一次電子郵件採訪中表示。”作為Copilot實驗室的一部分,我們推出了’解釋這些代碼’和’翻譯這些代碼’。這項工作符合我們正在測試的一類實驗性能力,讓你窺見各種可能性,並讓我們探索用例。也許通過’解釋這段代碼’,一個開發者正在權衡一個陌生的代碼庫,並希望快速了解正在發生的事情。這個功能可以讓你高亮顯示一個代碼塊,並要求Copilot用簡單的語言解釋它。同樣,Copilot實驗室的目的是實驗性的,所以可能會出現問題。實驗室的實驗可能會也可能不會發展成Copilot的永久功能。”
不過,由於人工智能模型的複雜性質,Copilot仍然是一個不完美的系統。GitHub警告說,它可能會產生不安全的編程模式、錯誤和對過時的API的引用,或反映其訓練數據中不太完美的代碼的教學。Copilot建議的代碼可能並不總是可以完成編譯、運行,甚至根本沒有意義,因為來自人工智能的代碼實際上並沒有實際測試這些建議。此外,在極少數情況下,Copilot的建議可能包括個人數據,如姓名和電子郵件,逐字逐句地來自其訓練集–更糟糕的是,”有偏見的、歧視性的、辱罵性的或攻擊性的”文本。
GitHub說,它已經實施了過濾器,當以標準格式和攻擊性詞語顯示時,可以阻止它,而且它正在建立一個過濾器,以幫助檢測和抑制從公共存儲庫中重複的代碼。Copilot網站上的免責聲明寫道:”雖然我們正在努力使Copilot變得更好,但由Copilot建議的代碼應該像其他代碼一樣被仔細測試、審查和審核。”
雖然Copilot自去年推出技術預覽版以來可能已經有所改進,但目前還不清楚改進的程度。底層模型Codex–OpenAI的GPT-3的後代–的能力已經被DeepMind的AlphaCode和開源的PolyCoder等系統所匹配(甚至超越)。
“我們看到Copilot在生成更好的代碼方面取得了進展……我們正在利用我們在[其他]工具方面的經驗來提高Copilot建議的質量–例如,通過對CodeQL掃描的訓練數據給予額外的權重,或者在運行時分析建議,我們致力於幫助開發者提高生產力,同時也提高代碼質量和安全性。從長遠來看,我們相信Copilot編寫的代碼會比一般的程序員更安全”。Salva表示。
缺乏透明度似乎並沒有抑制對Copilot的熱情,微軟今天說,在技術預覽中,開發者生成的Java和Python等語言的代碼中,約有35%是由Copilot提示的。該公司稱,在整個預覽過程中,有數万人經常使用該工具。