和 AI 結伴寫程式!OpenAI 與 GitHub 聯手推出 AI 程式碼產生工具,比 GPT-3 更強大

作者 | 發布日期 2021 年 07 月 02 日 8:00 | 分類 Google , Microsoft , 軟體、系統 Telegram share ! follow us in feedly


6 月 29 日微軟與 OpenAI 共同推出 AI 程式工具 GitHub Copilot,基於 GitHub 及其他網站的原始碼,可根據上文提示為程式設計師自動編寫下文,比 GPT-3 更強大。

GitHub 首席執行長 Nat Friedman 介紹,GitHub Copilot 是結對程式的虛擬版。結對程式是常見的敏捷軟體開發技術──即兩個開發人員在同專案並肩協作,輪流編寫程式碼並檢查合作夥伴輸出。

「它可在編輯器直接提供多行或整個函數的程式碼建議。隨著時間推移和使用量增加,模型會越來越複雜,程式碼品質也會越來高。」

對程式設計師來說,一款程式工具最重要的當然是支援哪些語言。GitHub 預告說,Copilot 支援十幾種語言,與 Python、JavaScript、TypeScript、Ruby 和 Go 等主流程式語言配合效果更佳。

目前 GitHub 官網已透露 Copilot 一些功能介紹,就來了解一下吧。

可靠的結對程式夥伴

GitHub 表示,相比大多數程式碼助手,GitHub Copilot 理解更大範圍的上下文。無論文檔字符串、註釋、函數名稱還是程式碼本身,GitHub Copilot 都可基於提供的上下文(已輸入的程式碼)合成新程式碼配合。如果真這麼可靠,就如 GitHub 所說,這項功能可讓程式設計師丟掉很多文件閱讀工作,專注編輯器。

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

GitHub Copilot 也能自動填充重複程式碼。GitHub 表示,GitHub Copilot 非常適合快速生成樣板和重複程式碼模式。對需要編寫大量相似但難以轉換為循環語句程式碼的程式設計師而言,這項功能非常吸引人。

包辦測試也是 GitHub Copilot 值得注意的亮點,GitHub 表示,測試是任何強大的軟體工程專案支柱,「導入單元測試包,就可讓 GitHub Copilot 自動編寫與程式碼匹配的測試。」

相同的上下文,GitHub Copilot 可有多種解決方案,供程式設計師自動選擇。

看到這裡,工程師是不是躍躍欲試了?可惜 GitHub Copilot 還沒開放,和 GPT-3 一樣,只提供有限用戶試用。總之,先排隊吧。

Copilot,專為程式而生

Brockman 介紹,GitHub Copilot 核心模型 Codex 借助 GPT-3 強大的生成能力。GPT-3 是 OpenAI 的超大規模自然語言生成模型,早期訓練 GPT-3 時,OpenAI 無意教它如何幫忙寫程式,更像通用語言模型,主要用於文本生成、語法修改等任務。

後來 OpenAI 開放 API,基於文本訓練的模型卻被網友玩出 50 多種花樣,包括自動生成程式碼。OpenAI 意識到 GPT-3 編寫程式碼的潛力,並在網站提供線上「程式碼生成」服務。

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

至於程式碼品質,Friedman 說 GitHub 員工已大量嘗試,確保 GitHub Copilot 生成安全、高品質的程式碼。他說:「我們已建立一些安全機制,減少各領域的出錯機率。」也就是說,GitHub Copilot 並不能保證完全不出錯,仍只是輔助工具。

官網報導,Copilot 底層技術為微軟和 OpenAI 共有,今年夏天 OpenAI 將發布 Codex 模型,供第三方開發者使用。微軟也表示會發表版本之一,讓企業經培訓了解自己的程式風格。但目前微軟只提供公共存儲庫存儲的程式碼。

這不是微軟第一次靠 OpenAI 提供智慧軟體。上個月微軟展示 Powerapps Studio 應用程式的更新服務,非技術人員可用來編寫應用程序──用戶輸入想添加的元素單詞,GPT-3 可提供一些必要程式碼選項。

網友討論

GitHub Copilot 在 Reddit 引發熱烈討論,不少網友看好編碼自動化趨勢,網友 @markbowick 說:

毫無疑問,這將大大提高大多數程式設計師的日常程式生產力,且(我認為)這將是推動全球軟體影響呈指數增長的最重要步驟之一。

值得注意的是,GPT-J(GPT-3 較小模型之一的開源實現)在大量 GitHub 和 StackExchange 查詢儲存庫訓練,並在特定程式相關任務表現明顯優於 OpenAI 其他模型。接下來幾個月,我預期看到性能更好更大的類似模型。

也有人質疑,網友 @laprika0 表示,GitHub Copilot 的測試方法令人擔憂,「讓 GitHub Copilot 建議與你的程式碼配對測試,但人們並不應該以這種方式測試。」不少網友表示同意,並補充,「如果應用程式碼有錯,那 GitHub Copilot 將把錯誤引入測試,影響測試效果。」

還有人注意到程式碼所有權的問題,OpenAI 發聲明,表示用戶使用 GitHub Copilot 寫程式碼時,程式碼片段和建議結果將與 GitHub 和 OpenAI 共享,並用於診斷目的和改進建議。同時為保護隱私,GitHub Copilot 不會使用用戶的私有程式碼為 GitHub Copilot 其他用戶推薦程式碼。

網友 @touristtam 感到困惑,「他們是否擁有用戶啟用 GitHub Copilot 時編寫的程式碼?」

(本文由 雷鋒網 授權轉載;首圖來源:pixabay