如何透過 Github Copilot 來增加開發人員生產力

如何透過 Github Copilot 來增加開發人員生產力



前言

從去年開始 ChatGPT 的出現,短短的時間瘋迷全球,許多 AI 取代人類、取代各種工作的資訊與消息不斷湧現,說 2023 是 AI 的元年一點都不為過!連我看見 ChatGPT 3.5 的撰寫程式碼的能力都讓我睜目結舌 & 啞口無言,當下甚至心想,我的工作要被取代了嗎?連 GPT 3.5 撰寫程式碼的速度都比我還快。

圖(一)、最流行的 ChatGPT-4 Plus 付費版 最流行的 ChatGPT-4 Plus 付費版

之前 NVIDA 的執行長曾說過一句態人尋味的話:

- AI 的 iPhone (智慧手機) 時代來臨

我想有經歷過 Pocket PC 的年代應該會知道,比 iPhone 還早,約 2003 年左右,微軟與 Motolora 都有推出所謂現在的智慧手機,只不過在當時是不這麼稱呼,因為它是由所謂的掌上型電腦發展而來,早期部分稱作 PDA (Personal Digital Assistant)

當時的掌上型電腦原型機大概長這樣,這是微軟的 Windows CE 如下圖:

圖(二)、Windows CE Windows CE

圖(三)、早期 HP 推出的 Pocket PC for Windows CE

  早期 HP 推出的 Pocket PC for Windows CE 

上面這張是 HP 推出的 Pocket PC。


HP iPAQ

圖(四)、iPAQ  

這台 iPAQ 是筆者 20 多年前相當嚮往的機型。

回到主題,為什麼說是『AI 的 iPhone (智慧手機) 時代來臨』呢?其實如上方所提,相同的東西 2003 年即出現過,但是紅不起來,一個是 Pocket PC/SmartPhone 的設計理念來自於掌上型電腦,這是敗筆,也可以說,它就是做得太像『電腦』,好似縮小版的 PC,操操作起來也好似 PC 那樣複雜,一般使用者在沒有特別的指導下並無法自我學習並上手,只會覺得這是專業人士才有辦法使用,有距離感,也就是鎖定目標市場太小,這也是最大的敗筆,所以當然也沒有發展出自己的生態,因為所有的應用全由開發商自己去思考,而不是由市場需要來導向,這又是另一個敗筆。因為它鎖定的用戶是商用市場,而但是又不是由市場的生態來去左右應用的發展,而這些都是賈伯斯後來發現的商機與成功的契機。

後來 iPhone 的 UI 重新設計與包裝下,人性化的操作與設計,甚至讓一般不懂電腦的人類用戶也能夠在不需要特別指導下輕易上手,並誕生全新UX,開方式的開發平台與市集,由市場導向的操作與發展,迅速的改變人類的生活,像是有人發現共享車位有商機,商家便可便投入自家 APP 的開發,因為 AppStore 以延然成為一種生態系、相關開發工具與平台也都自定義 & 豎立出一種標準,各廠商只要遵循這個標準,大家都可以在這個平台上發展自己的各種應用,因此也讓 APP 在很短的時間,各種應用充斥全世界與我們周遭的生活,而我們生活、甚至工作目前也都幾乎離不開手機。使用手機,我們可以達到、做到任何我們想要做的事情、舉凡購物、ATM轉帳、投資(股票/基金)、繳費、線上視訊會議、發票兌獎、外送點餐,你能想到應用都幾乎在手機上實現了方便了我們的生活。

AI 元年

回到 AI 的議題,有人認為 GPT (Generative pre-trained transformer) 生成式預訓練模型的出現,所帶動的,對世界的改變會是比智慧手機所帶來的改變還更全面,智慧手機帶來的是足以改變我們的生活的方便性,但是 GPT 的發展,未來對世界帶來的可能是取代性的,其他更全面性的改變,遠遠超過智慧手機所帶來的方便性,雖然基於現有 LLM 模型發展出來的應用,但在未來模型修改趨於完善 + 數據提供也不間斷的修正與完整情況下,一些重複性高的工作、電子類輸出(基本程式碼/圖片設計/網頁切版/..甚至生產線品管機械化有SOP既定工作)這些工作,如果你不是特別專精,那麼極可能讓 GPT 取代,因為透過 GPT 可以在更短的時間(幾秒鐘內)產出原先設計師需要半天才能完成的產出。

什麼是 OpenAI?什麼又是 GPT 又或者 ChatGPT?

所謂的 OpenAI 是一個專門研究 AI 的開放人工智慧研究中心,也是一個美國人工智慧研究實驗室,由非營利組織 OpenAI Inc,和其營利組織子公司 OpenAI LP 所組成。OpenAI 進行 AI 研究的目的是促進和發展友好的人工智慧,使人類整體受益。目前 OpenAI 系統運行在微軟基於 Azure 的超級計算平台上,而所謂的 GPT 就是基於 OpenAI 所訓練出來的 NLG (Natural Language Generation) 的 AI 模型。

而 ChatGPT 則是一種聊天機器人,一種由 OpenAI 基於 Conversational AI 所開發出來的人工智慧聊天機器人程式,約於 2022 年 11 月推出,該程式使用基於 GPT-3.5、GPT-4 架構的大型語言模型並以強化其學習訓練。ChatGPT 除了可以用人類自然對話方式來互動,還可以用於甚為複雜的語言工作,包括自動生成文字(撰寫文章)、翻譯工作、自動問答、自動摘要等多種任務。如:在自動文字生成方面,ChatGPT 甚至可以根據輸入的文字自動生成類似的文字,像是(劇本、歌曲、企劃等),在自動問答方面,ChatGPT可以根據輸入的問題自動生成答案,甚至在電腦資訊軟體相關工作裡,還有編寫和除錯電腦程式的能力。

什麼是 DALL-E

是一個可以通過文本,語言互動描述中生成圖像的人工智慧系統,於2021年1月5日由 OpenAI 所發表,DALL-E通過120億參數版本的GPT-3 Transformer模型來理解自然語言輸入,目前更新的最新版本為 DALL-E 3 它的中文理解能力更好,且 ChatGPT PLUS 即是引入 DALL-E 3,如果想要測試使用 DALL-E 3 可以透過付費方式使用 ChatGPT PLUS 也就是 GPT-4,如下圖:


使用 DALL-E 3 的 GPT-4

圖(五)、使用 DALL-E 3 的 GPT-4

若不想透過付費版的 ChatGPT PLUS 使用 DALL-E 也可以使用 Bing 的 Images Create 如網址:https://www.bing.com/images/create

底下,是之前之前我測試 ChatGPT-4 的圖像理解能力而做的測試,測試的內容是『透過一張 UML Domain Class Diagram』來理解當中有幾個 Domain Class?分別 Class 叫做什麼名子?甚至之間的關聯性(這個就厲害了),測試的結果也沒有讓我失望,因為正確率幾乎可達 90% 以上,我事先並無告知 ChatGPT 我的 Domain Modeling 的主要 Concept 是什麼,但 ChatGPT 居然能夠精準的講出,這應該是一個與音樂會票務和帳戶相關的系統與幾個類別和它們之間的關聯,這讓我相當驚艷。

ChatGPT 4 來解釋我的 Domain Class Diagram

圖(六)、由 ChatGPT 4 來解釋我的 Domain Class Diagram 的內容 ChatGPT解釋我的Class Diagram述說著什麼?

其實 ChatGPT 4 在這裡解釋得非常到位,也讓我非常的驚嘆,它居然能夠精準的判讀這個 Class Diagram 有一個聚合 ConcertTickets Aggregate,其主要的根類別(Aggregate Root)是 Ticket。每張 Ticket 可以與多個 ConcertVenue 和 ShowTime 有關聯,這些被標記為 Value Objects,表示它們不具有唯一身份。天啊,連 Value Object 都精準的判讀出來,也把 Ticket 和 SeatReservation 之間的關聯精準的判讀出來,連 0..1 都讀出來,這讓我太驚訝了,如果能把 code 一起寫出來,那麼以後我就自動化來產生 UML Documents 與程式碼就好了。

底下,我接著就請 ChatGPT 4 請基於 Clean Architecture 的 Domain Layer 將這我張 Domain Class Diagram 以 C# 程式碼撰寫出來。

圖(七)、ChatGTP 4 直接撰寫出程式碼 ChatGTP 4 直接撰寫出程式碼

糟了,談了這麼多,都還沒談到今天的主題 Github Copilot 哈哈

什麼是 Github Copilot?

GitHub Copilot 為 GitHub 與 OpenAI 共同開發的服務,底層技術為 OpenAI 所打造的 OpenAI Codex 人工智慧系統,以公開的大量程式碼及自然語言來訓練 OpenAI Codex,讓該系統夠同時理解程式及人類的語言,並根據工程師所撰寫的程式碼,提出程式的整行或整個函式的撰寫建議,可謂非常強大!!

...先待續~別打我,我會持續的更新 XDDD

留言

  1. GitHub Copilot 的底層技術已經不是 OpenAI Codex 了

    回覆刪除
    回覆
    1. 有更換嗎?印象中,Codex是GitHub Copilot服務所使用的模型

      刪除

張貼留言

這個網誌中的熱門文章

什麼是 gRPC ?

什麼是 gRPC(二)- 來撰寫第一個 Hello World 吧!

常見的程式碼壞味道(Code Smell or Bad Smell)