自從2022年11月30日,OpenAI 推出的人工智慧聊天機器人ChatGPT之後,無論是政府、公司、學校、組織或個人,應該都在思考一個問題,那就是如何在安全無虞的情況下,使用人工智慧工具來幫助解決目前手頭上的難題或提升工作效率。
大綱
2023年算是生成式人工智慧工具大爆發的一年,各種文本、語音、圖片、視頻的生成式人工智慧工具紛紛出現,幾乎每天都有新的運用與發現,琳瑯滿目的功能與產品讓人目不暇給,然而,身負維持金融穩定、社會安全與民眾信心的金融機構在使用新的科技與技術時都會非常小心謹慎,究竟要從哪裡著手使用生成式人工智慧工具? 想必是個頭痛問題,從風險評估角度來看,從GitHub Copilot開始入門,相對是比較安全的。
一、GitHub Copilot是啥?
GitHub Copilot 為 GitHub 與 OpenAI 共同開發的服務,其底層技術為 OpenAI 開發的人工智慧系統 OpenAI Codex,以自然語言與大量開源程式碼進行訓練,可同時理解程式及人類語言,並根據工程師所撰寫的程式碼提出整行或整個函式的撰寫建議。
GitHub Copilot擅長多種程式語言(如Java、Python、C#、C++等),能夠在給定開發環境中的當前程式碼的情況下產生綜合註釋,闡明程式碼的目的和功能;GitHub Copilot與一系列的整合開發環境(IDE)相容,包括Visual Studio Code、Neovim、JetBrains套件和GitHub Codespaces。
GitHub的公共存儲數據庫中匯集了全球頂尖程式高手的精華在其中,GitHub Copilot得天獨厚的利用此數據庫進行訓練,這可讓初學者使用此工具可立即提升寫程式的功力。
2021 年 6 月 29 日,GitHub 宣佈在 Visual Studio Code 開發環境中推出 GitHub Copilot 技術預覽免費版;2022 年 6 月 21 日,GitHub 宣布 Copilot 取消“技術預覽免費版”,並開始向個人開發者收取訂閱服務費。
大多數生成式人工智慧工具的收費,個人每月大約10美金,GitHub Copilot也是這個水準,企業使用收費較高,基礎版為19美元/每月每人;進階版為39美元/每月每人。(2024/2/26官網價格)
產品類別 | 企業-基礎版 | 企業-進階版 | 個人版 |
費用/每人每月 | 19美金 | 39美金 | 10美金 |
功能 | 1.代碼完成 2.在 IDE 和 Mobile 中聊天 3.CLI 幫助 4.安全漏洞過濾器 5.代碼參考 6.公共代碼過濾器 7.智慧財產權賠償 8.企業級安全、保障和隱私 | 1.除了基礎版所有功能外,還有以下功能 2.根據程式碼庫進行個人化聊天 3.文件搜尋和摘要 4.Pull Request摘要 5.程式碼審查技巧 6.微調模型 |
二、使用GitHub Copilot的好處
(一)GitHub 團隊自己的研究
當 GitHub Copilot 技術預覽免費版推出一年多後,GitHub想知道一件事:這個工具是否可以幫助開發人員? GitHub Next 團隊結合調查和實驗進行了研究,在2022年9月7日在官網公布一篇名為”Research: quantifying GitHub Copilot’s impact on developer productivity and happiness”(量化 GitHub Copilot 對開發人員生產力與幸福感的影響)的文章中說明了研究結果。
該團隊對 2,000 多名開發人員進行了調查,大規模了解他們使用 GitHub Copilot 的體驗。研究發現
1. 開發人員滿意度提高
60-75% 的開發人員表示,使用 GitHub Copilot 時,他們對工作感到更滿足,編碼時感到更少沮喪,並且能夠專注於更令人滿意的工作。對於對自己所做的事情感到滿意的開發人員來說,這是一個勝利!
2. 節省腦力
73%的開發人員表示,GitHub Copilot 幫助他們保持思路流暢 ;87%的開發人員表示在重複性任務中可節省腦力 。 這兩種好處可讓開發人員產生幸福感,相信很多開發人員有這樣的經驗,在上下文切換和思路中斷可能會毀掉開發人員的一天,甚至某些類型的工作會讓人筋疲力盡
從上述調查結果可知,使用 GitHub Copilot 來從事枯燥且重複的開發工作可以減少開發人員的負擔。這讓開發人員享受更有意義的工作的空間,從而帶來更大的幸福和滿足。
3.開發速度
使用 GitHub Copilot 可以更快完成任務,尤其是重複性任務。
GitHub團隊,將95個開發人員隨機分為兩組,其中45人使用GitHub Copilot執行任務,而其他50人則不使用該工具。(任務是用 JavaScript 寫 Web 伺服器)
實證結果顯示:
- 在任務完成度方面: 使用工具的小組,有78%的人完成任務;而沒用工具的小組有70%的人完成任務。使用工具的小組任務完成率明顯高於未用工具者。
- 在開發速度方面 使用工具的小組完成任務的平均時間為71分鐘;而未用工具小組完成任務的平均時間為161分鐘。換言之,使用工具執行任務平均可節省90分鐘,(162-71=90分鐘);大約可節省55%的時間((91/162)*100%=55.56%)
(二)ANZ澳盛銀行使用GitHub Copilot的實證研究
1. ANZ澳盛銀行進行GitHub Copilot實驗研究的緣由
生成式人工智慧透過營運效率和更快的明智決策釋放下一波生產力。 在軟體工程領域,研究表明開發人員使用生成式人工智慧(AI)作為結對程式設計師來增加高品質程式碼的輸出。 透過增強員工的能力,可以將更多的時間和資源分配給創新。 然而,人工智慧在智慧財產權、資料安全和隱私方面帶來了固有的風險、不確定性和意外後果。 因此,在大規模採用之前衡量人工智慧工具的定量和定性效益至關重要。
澳盛銀行為評估GitHub Copilot的實用性,從2023年6月中旬到2023年7月底,進行了為期六週(包括兩周的準備工作和四周的實驗測試)。
ANZ澳盛銀行將GitHub Copilot實驗結果寫成研究論文(The Impact of AI Tool on Engineering at ANZ Bank An Emperical Study on GitHub Copilot within Coporate Environment),並在第十屆國際軟體工程研討會(SEC 2024, 10th International conference on Software Engineering)發表,同時經過同行評審並被接受。某種程度來看,此報告的可參考度還是相當高的。
金融機構對於一些研究成果往往會視為機密,不太願意分享,難得ANZ銀行願意將GitHub Copilot實驗結果公布並發表論文,詳細介紹內容,分享同業及大眾,值得掌聲鼓勵鼓勵。
(Financial institutions often treat some research results as confidential and are reluctant to share them. However, ANZ Bank is willing to publish the results of the GitHub Copilot experiment and publish a paper to introduce the content in detail and share it with peers and the public, which deserves applause and encouragement.)
由於該銀行樂於分享的行為,對整個金融行業都有注意,所以在此將論文作者的介紹詳述如下:
2. GitHub Copilot實驗研究論文作者介紹
Ching Louis Liu 博士獲得博士學位 墨爾本大學軟體工程專業,專注於人工智慧。 他目前擔任澳新銀行工程部門人工智慧和數據分析高級經理。 除了在 IT 行業的角色之外,劉博士還深入學術追求和教育。 他透過在皇家墨爾本理工大學教授和開發數據科學和軟體工程各個研究生學位的課程,為學術界做出貢獻。 此外,劉博士在英國巴斯大學指導碩士生,進一步體現了他對培養該領域下一代專業人士的承諾。
根據同為這篇論文作者之一的ANZ銀行技術長**Tim Hogarth**在LinkedIn的介紹內容,Louis Liu應該是這篇論文的主要貢獻者。技術長是這樣描述Louis Liu, “非常幸運能有一位才華橫溢的資料科學家,在劉路易斯的工作中具有非凡的、有條理的學術基礎”。
身為澳新銀行的資料架構師,他擁有傑出的學術背景,並獲得了墨爾本大學的資料科學碩士學位和什布爾印度工程、科學與技術學院的工程學士學位。 他的職業生涯超越了傳統學術界,為印度統計研究所 (ISI) 和可變能量迴旋加速器中心 (VECC) 的研究計畫做出了積極貢獻。 具體來說,他擅長在企業環境中應用大型語言模型 (LLM),展現出對如何利用這些尖端技術來增強資料架構和決策流程的細緻入微的理解。
Gareth (Ieuan) Rowland, ANZ 工程與平台主管
Gareth 在科技業工作了近 40 年,最初開發嵌入式製造設備控制器和企業資源規劃解決方案。 隨後,他獲得了英國特許會計師資格,並將其技術知識與強大的商業頭腦相結合,透過畢馬威會計師事務所提供了近 15 年的諮詢服務。 在過去的十年中,Gareth 一直在企業中致力於轉變其持續交付能力並為工程團隊建立協作環境。 並制定可以幫助這些團隊的措施。 Gareth 對資料科學(包括分析、機器學習和 Gen-AI)有著濃厚的興趣,最近完成了資料科學策略和領導力 (RMIT) 碩士學位。 他正在應用這項研究來研究軟體工程在未來可能因這些新技術而發生的變化。
Tim Hogarth, ANZ 技術長 |企業架構、工程 IT 策略
Tim Hogarth 是 ANZ 的首席技術官,負責銀行的架構、工程標準,並在技術規劃和優先排序中發揮關鍵作用。 蒂姆與業務團隊密切合作,協助制定路線圖並調整技術投資。 他也與 ANZ 的架構和工程團隊密切合作,透過專注於實用標準、通用平台和卓越工程來提高銀行的技術實力。 Tim 的主要驅動力和興趣在於人工智慧、雲端遷移、更好的數據管理以及使用複雜的工程來提高彈性並降低複雜性。 他曾在北美、英國和澳洲的其他銀行工作過,擁有二十多年的技術交付記錄。 蒂姆是一位務實且深思熟慮的領導者,他花費大量時間思考如何利用新興科技產業的轉變,在大型組織中實現更大的企業價值。
3. GitHub Copilot實驗對象
此實驗超過100名工程師參與測試,工程師主要來自於軟體工程師、雲端工程師及資料工程師。
該銀行要求工程師以Python完成多項任務,並將工程師分為兩組,Copilot Group組可以使用GitHub Copilot,另一組則為對照組(Control Group),僅能搜尋網路資料,或使用Stack Overflow。
4. 資料檢查
(1)資料點: 該研究共蒐集了200個資料點,其中6個資料點重複;22個資料點沒有解決任務;故有172個資料點可用於分析。
(2)常態分佈檢測: 使用Quantile-Quantile (QQ) plot繪圖法來檢測資料是否為常態分布。從圖一可觀察172個資料點的分布,兩組人員的資料點分布都不能呈現一直線(藍線),故推論為”非常態分布”。
(3)無母數檢定: 由於資料點呈現”非常態分布”,需使用無母數檢定來看兩組人員的各種數值差異是否具統計顯著性。一般無母數檢定有兩種方法,分別是Mann-Whitney U 檢定和 Wilcoxon 符號等級檢定,因為 Mann-Whitney U 檢定是測試兩個獨立樣本,而 Wilcox 符號等級檢定是測試兩個相關樣本。
此研究的兩組樣本具相關性(第三周與第四周兩組人員互相對調),故採用 Wilcoxon 符號等級檢定來檢測兩組的差異性。
無母數檢定 1.無母數檢定的使用情況: 母群體未知且非常態分布的類別資料與等級資料,或是用於樣本數較小時。 2.Wilcoxon 符號檢定: 用於一組樣本(檢定母體中位數是否等於某特定值)或成對樣本(兩組母體的中位數是否相等)在同一個變項的分佈狀況的檢驗。
圖一,解決任務的總時間QQ 圖 (Total_Time-Spent)
Q-Q Plot 全名是 Quantile-Quantile Plot,是一種視覺化比較兩項數據的分佈是否相同的方法。將某數據與理論上的完美常態分佈比較,從有無差異看出該數據是否為常態分配。換言之,把研究的數據,以及(相對應分位數的)理論常態分佈值,畫出散佈圖。如果呈現一直線,該數據就是常態分佈。
5. 統計顯著性(兩組在各方面表現是否有明顯差異)
此實驗從”生產力”、”程式碼品質”及”程式碼安全性”等三個類別來檢視兩群之差異。其中包含了五個指標,其中評估”生產力”的指標是「花費時間」,即完成任務所花費的總時間;評估程式碼品質有三個指標,包括「單元測試成功率」、「Bugs」、「程式碼異味」,這三個指標很重要,因為寫程式的速度再快,若沒有品質,也是零分;最後,評估程式碼安全性的指標是「漏洞」。
從p-value可知,若該值小於0.05表示兩組有統計意義上的明顯差異,從下表可知,有兩個指標「花費時間」、「程式碼異味」能明確區分使用GitHub Copilot組與對照組的差異,
表2,Wilcoxon Signed Rank Test results
類別 | 評估指標 | 樣本數 | p-value |
---|---|---|---|
生產力 | 花費時間 | 22 | 0.001 |
程式碼品質 | 單元測試成功率 | 17 | 0.06 |
程式碼品質 | Bugs | 17 | 0.033 |
程式碼品質 | 程式碼異味(Code_Smells) | 17 | 0.007 |
程式碼安全性 | 漏洞(Vulnerabilities) | – | 無足夠資料點可檢測 |
何謂程式碼異味 (Bad Smell / Code Smell)
1.程式中需要進行重構的部分,被稱為壞味道或程式碼異味 (Bad Smell / Code Smell),程式碼異味是由糟糕或錯誤的程式設計造成的。當程式出現”難以理解”、”難以修改”、”難以擴張”、”重複過多”、”程式太長”、,表示可能出現Code Smell。 2.程式碼異味可能並不總是表明存在特別嚴重的問題,但追蹤它們通常會導致發現程式碼品質下降、應用程式資源耗盡,甚至應用程式程式碼中嵌入的關鍵安全漏洞。
6. 各類別評估結果
(1)生產力比較
a.整體生產力提升情況
研究發現,Copilot 可將ANZ 工程師的工作效率平均提高了 42.35%。 Copilot 組在每個任務上花費的整體平均時間比「對照組」短。
若將python熟練程度分為三種(初、中、高),初級工程師生產力提升程度最高,達52.27%。若分為五類則結果則大不相同。
表3,不同Python熟練程度下生產力提升比較(Productivity increase across different proficiency levels)
Python熟練程度 | 對照組: 每題平均花費總時間(分鐘) | Copilot組: 每題平均花費總時間(分鐘) | 生產力改進 |
---|---|---|---|
初級工程師(新手+初級) | 20.07 | 9.58 | 52.27% |
中級工程師 | 28.60 | 16.70 | 41.61% |
高級工程師(高級+專家) | 39.82 | 23.70 | 40.48% |
全體工程師 | 30.98 | 17.86 | 42.35% |
*初級工程師生產力提升程度: ((20.07-9.58)/20.07)*100%=52.27%
*中級工程師生產力提升程度: ((28.60-16.70)/28.60)*100%=41.61%
*高級工程師生產力提升程度: ((39.82-23.7)/39.82)*100%=40.48%
**全體工程師生產力提升程度: ((30.98-17.86)/30.98)**100%=42.35%
b.不同python熟練程度下生產力提升比較
研究發現,不同python熟練程度的工程師,使用Copilot都能提升工作效率,令人意外的是,Copilot對於“專家”的工作效率提升的幅度最大。對於”新手“反而提升最小。
這種情況有可能是”新手”及”專家”的樣本資料點較少的原因所造成。盡管如此,此結果仍具參考性。
圖一,不同Python熟練程度之平均花費時間
c.不同任務難度水準下生產力提升比較
不同任務難度水準的任務,使用Copilot都能提升工作效率,Copilot對於“困難”任務的工作效率提升的幅度最大。對於”非常簡單“任務的提升最小。
圖二,不同任務難度水準之平均花費時間
(2)程式碼品質
根據表1,此研究以三個指標來分析程式碼品質,分別是”單元測試成功率”、”Bugs”及”程式碼異味”,有一個指標不具統計顯著性,有二個指標具備統計顯著性,整體來看,Copilot 組的程式碼品質相當不錯,詳細說明如下。
- ”單元測試成功率”指標,雖然Copilot 組的”單元測試成功率”高於對照組。但這個結果在統計上並不顯著,p-value為0.06。
- ”Bugs”指標,Copilot 組的”Bugs”少於對照組,且在統計上具備顯著性,p-value為0.033。
- ”程式碼異味”指標,Copilot 組的”程式碼異味”少於對照組,在統計上也具備顯著性,p-value為0.007。
(3)使用GitHub Copilot的體驗評估
此研究以7個問題來分析受測者使用GitHub Copilot的體驗。 在所有問題上,受測者都對 GitHub Copilot 做出了積極回應。 他們認為這有助於他們審查和理解現有程式碼、建立文件並測試他們的程式碼; 他們認為這可以讓他們花更少的時間調試程式碼並減少整體開發時間; 他們認為它提供的建議有些幫助,並且與他們專案的編碼標準非常一致。
表4,使用GitHub Copilot的體驗評估
評估內容 | 整體感知效果 |
---|---|
使用 Copilot 調試程式碼所花費的時間 | A bit less time,時間少一點 |
在沒有 Copilot 的情況下產生相同程式碼所需的時間 | A bit more time,時間多一點 |
Copilot提出的建議與專案編碼標準的一致性 | Well, 出色地 |
收到的Copilot建議的品質 | Somewhat helpful, 有些幫助 |
對審查和理解現有程式碼的能力的影響 | Positive effect, 正面影響 |
對為程式碼建立單元測試的能力的影響 | Positive effect, 正面影響 |
對創建程式碼文件的能力的影響 | Positive effect, 正面影響 |
(4)程式碼安全性檢視
此研究使用 SonarQube 的靜態程式碼分析,掃描受測者在 A/B 測試階段收到的問題的解決方案中的漏洞。 SonarQube 將漏洞定義為「代表攻擊者後門的安全相關問題」。
在執行過程中,SonarQube 程式碼審查僅針對漏洞產生了 1 個非零資料點。 由於沒有足夠的資料點,故無法測試安全性指標。
SonarQube 是一個開源的程式檢測平台,旨在幫助軟體開發團隊提升代碼品質和可持續性。 它通過靜態代碼分析,識別代碼中的技術債務、缺陷和安全漏洞,並提供即時反饋和詳細報告。 支援多種主流程式語言,如 Java、C#、JavaScript 等,該平台的核心功能包括代碼質量評估、缺陷檢測、安全漏洞掃描、測試覆蓋率分析等。 透過 SonarQube 團隊可以持續監控和改進代碼質量,降低技術債務,增加軟體的可維護性和穩定性,為開發團隊提供了優質代碼的保證,促進軟體項目的成功交付和持續發展。
三、結論
- GitHub Copilot是一款專為工程師提供服務的卓越助理,對於不同專業程度的工程師都有幫助。
- GitHub累積多年的公共程式碼庫,匯集了全球工程師的經驗與精華,可讓工程師快速學習應有的知識。
- 澳盛銀行在進行此實驗之前,先由法律和安全團隊一起評估與智慧財產權、資料安全和隱私相關的風險,並建立一套指導方針,此舉將有助於後續GitHub Copilot工具的使用。
- GitHub Copilot的每個建議,都需要工程師人工確認是否有問題,可即時檢查錯誤,安全性相對提高。
- GitHub Copilot在生成式人工智慧中算是入門款的工具,金融機構從這個工具入門,相信是一個不錯的選擇。
相關文章推薦
生成式人工智慧(Generative AI)掀起AI相關工作需求的熱潮