長久以來,軟體開發的工具與技術推陳出新,持續且大量地進入市場,目標都是為了協助開發者用更少的心力完成更多的工作,但迄今未能達成令人驚艷的成果。然而,由GitHub與OpenAI共同開發的GitHub Copilot服務,從2021年首度發布技術預覽版累積至今的使用回饋與比對數據,不僅顯示了生成式AI在開發工作的適用性,也預見了軟體開發工具與技術已經邁向全新世代。
事實上,早在ChatGPT面世之初,就被實測發現程式碼除錯能力比其他現有的商業軟體更強大,導致大家紛紛轉往ChatGPT問問題,程式設計問答網站Stack Overflow的使用率因而驟降。但直接將ChatGPT應用於企業開發環境,除了缺乏相對應的輔助功能,還會面臨兩大問題,首先是無法避免上傳的程式碼未來被用於模型訓練的可能性,其次是問答內容必須在兩個介面之間來回切換而影響工作效率。
已經推出兩年的GitHub Copilot正是微軟解決上述疑慮,針對開發人員及團隊所研發的生成式AI工具。目前GitHub Copilot Chat已升級為GPT-4,藉由大量開源式碼和自然語言的訓練,發展出同時理解程式及人類語言的能力,因此可針對工程師撰寫的程式碼提出整行或整個函式的修改建議。
GitHub Copilot的設計初衷是提升開發者的效率,但創造的效益超越預期。舉例來說,GitHub Copilot同步增進了開發者的速度和滿意度,73%的受訪者表示工作得以保持流暢,87%的受訪者認為在執行重複性任務時可免於勞神費力,換言之,最會影響開發者工作滿意度的特定類型工作,以及情境切換和中斷的狀況,都能因為GitHub Copilot而大幅改善。
用「說」的寫程式,連COBOL都能讀
以自然語言和數十億行程式碼進行訓練的GitHub Copilot,支援包括Python、C#、SQL、Java在內的十多種程式語言。但根據微軟團隊在客戶端的實測,就連古老的程式語言COBOL也能透過OpenAI Codex模型轉為Java,再從Java轉回COBOL,原因就在模型訓練過程已經將各種程式語言都納入在內。
除了程式語言的轉換,GitHub Copilot的功能還包括將文字評論轉為程式碼、根據上下文來執行自動完成功能或下一行、知識搜尋、記錄程式碼、重構、撰寫單元測試等。
根據測試,GitHub Copilot可正確回答開發者常用的刷題平台LeetCode的演算法題目、自動生成井字遊戲的程式碼而且通過執行測試。而在除錯功能,將錯誤程式碼傳給GitHub Copilot後,它會精準指出錯誤位在哪一行程式碼,若是更為複雜的問題,它也能協助縮小範圍並找出問題所在。
GitHub Copilot還能在看完程式碼後生成文件,而且支援包括中文在內的多國語言。針對效能調校,它能以時間複雜度和空間複雜度進行分析,並列出最佳和最差的範例;而在單元測試,它可涵蓋不同層級的覆蓋度和各種測試情境的複雜度來自動撰寫程式碼。
事半功倍的GitHub Copilot獲得75%高滿意度
不同於ChatGPT,GitHub Copilot由微軟確保企業資料不會被回傳、儲存或用以訓練模型。推出已經兩年的GitHub Copilot獲得上百萬開發者的使用,根據經驗分享,由AI生成的程式碼比人力撰寫快了55%,75%的受訪者滿意GitHub Copilot輔助的程式撰寫過程。
-
以持續互動來輔助及加速開發過程。以新架構改寫舊程式為例,開發者對新架構的掌握程度或許仍不足夠,但可透過與GitHub Copilot的互動來加速開發過程。AI會在開發者撰寫程式碼時持續互動,當開發者寫完一行註解後,AI會隨即提供相對應的程式碼,而且可提供多達十個答案,而不是只有單一答案。
-
高度整合的單一使用介面。以ChatGPT對談,必須在對話和開發兩個使用介面交互剪貼資料;相對地,GitHub Copilot則提供了整合介面,在一分為二的畫面裡,開發者在右半邊螢幕撰寫程式碼卻在訊息列出現錯誤提示時,直接點選後就會在左半邊螢幕由GitHub Copilot解釋錯誤原因並提供修改建議,開發者只要按一個鈕,就能將GitHub Copilot提供的修改程式碼貼回右半邊螢幕,重新執行並確認無誤。
-
自動生成程式碼的多元化能力。GitHub Copilot的功能還包括將註釋轉換為程式碼、自動填充重複的程式碼、顯示多種替代選項。未來規劃在GitHub Copilot進一步落實的功能包括重構程式碼、程式碼轉換、程式碼解釋、文件編寫,以及單元測試、尋找程式碼錯誤、除錯、程式碼審查。
上百家企業與金融業標竿實證技術領先
GitHub Copilot目前已支援的整合開發環境包括Visual Studio、Neovim、VS Code與JetBrains,幾乎可涵蓋開發團隊的使用需求。善用GitHub Copilot亦可加速實現敏捷開發的目標,目前已有上百家企業已導入GitHub Copilot做為開發輔助工具,就連最為重視監管與法遵的台灣大型金融業也在其中。
以永豐銀行為例,GitHub Copilot實際使用經驗以程式碼解讀(83%)、程式語法與框架生成(81%)、程式碼重構與優化建議(72%)三項的滿意度分數最高,永豐銀行看準GitHub Copilot有效且安全合規的優勢,希望藉此加速應用開發,更能即時回應用戶需求,提供投資人和客戶更便捷的優質服務。
台灣微軟技術中心(MTC)技術架構師周其衡表示:「在向客戶展示GitHub Copilot的功能時,總會有幾項功能打中客戶的特定需求,認為可對他們的日常工作帶來極大的幫助,GitHub Copilot持續推出領先競爭對手的新功能也廣獲好評。」
舉例來說,GitHub Copilot已可支援本地工作區全域RAG (retrieval-augmented generation) 和指定檔RAG,甚至未來將與自訂的外部資料來源互動以產生回應。
此外,即將發布的新功能也備份各方期待,包括將納入對支援自訂協力廠商代理程式;而在更高階的企業版,則可指定儲存庫進行模型調校。
GitHub Copilot版本選擇及發展藍圖
現行的GitHub Copilot為Business版本,訂閱價格為每人每月19元。GitHub Copilot Business主要在編碼環境中提供GitHub Copilot功能,包括整合於IDE和CLI,並預計在2024年初納入GitHub Mobile中的功能。
預計於2024年2月推出的全新GitHub Copilot Enterprise版本,訂閱價格則為每人每月39美元。GitHub Copilot Enterprise不僅包含GitHub Copilot Business的完整功能,同時還提供了多項進階功能。
GitHub Copilot Enterprise可將GitHub Copilot整合到GitHub做為聊天介面的功能,允許開發人員對其程式庫進行對話,並在整個平台上添加操作按鈕。
此外,GitHub Copilot Enterprise可以深度分析組織程式庫,開發者可透過語意搜尋迅速找到整個組織的程式庫。此外,在建立提取要求(Pull Request)的過程中,GitHub Copilot Enterprise能夠自動分析程式碼及協助自動生成Pull Request的文字。
值得一提的是,GitHub Copilot Enterprise還支援微調(Fine-tune)功能,企業可量身訂製專用於組織內部的Copilot助手,這個助手將可精通使用組織內的程式庫,進而提供有深度的程式碼生成建議。
Copilot Workspace新功能搶先看
除了伴隨GitHub Copilot Enterprise推出的新增功能,尚未正式問世的GitHub Copilot新功能也精彩可期,Copilot Workspace就是一例,它是全新設計的開發者內部循環體驗。核心概念在於選擇任務、表達意圖,進而與AI協作找到解決方案。
開發者可向Copilot Workspace提出問題,並由Copilot Workspace自動提供解決方案。Copilot Workspace全面了解問題的完整背景,包括所有評論和回應,以及程式碼庫,換言之,它不僅理解開發者想要完成的任務,同時也理解程式碼的細節。如果Copilot Workspace提供的解決方案不夠準確,開發者也能以自然語言編輯解決方案的每個步驟,包括行為、計劃和程式碼。
Copilot Workspace展現了新一代AI開發工具的潛力,晉升為開發者的第二大腦,協助處理更龐大、更複雜的任務。Copilot Workspace以整個儲存庫的粒度運作,能夠橫跨不同程式語言並對多個檔案進行一致的變更;除了處理核心編碼任務,同時也能應對類似「建立一個測試框架」或「編寫一個用於持續整合的GitHub Actions工作流程」等搭建型任務。
【更多資源】