2023.12.29 LLM 更新為 GPT-4
套件下載
- Github Copilot:主要開發使用,會提供程式碼建議。
- Github Copilot Lab:解釋或修改現有程式碼。
- Github Copilot Chat:類似使用網頁 ChatGPT,透過聊天視窗與程式碼進行互動,可產生更完整的程式碼內容。
- VS Code Speech:支援在 VS Code 使用英文語音。
簡介
- Copilot 是基於基於 OpenAI 加上 GitHub 上大量的原始碼人工智慧技術的開發助手,可以透過開發者輸入的部分程式碼與註解產生相關的程式碼,支援多種程式語言,目前最多的語言是 JavaScript。
- 底層是用 python。
- 目前所使用的 LLM 模型是 GPT-4。(2023.12.29 更新)
- 可透過上下文判斷自動完成程式碼。
- 沒有足夠的上下文也可以透過註解提供更完整的上下文,但混亂的上下文會導致無建議產生。
- 擅長寫重複的程式碼,減少輸入的時間。
- 可自動建立與單元測試程式碼。
- 可促進程式碼的可讀性與標準化。
- 需要連結 Github 帳戶。
- 官方聲稱可以提升 40% 的效率。
優點
- 可以快速生成程式碼,節省部分時間。
- 可根據上下文提示,幫助提供更好理解的程式碼與問題。
- 提高程式碼品質與效率,「可能」減少錯誤與瑕疵。(但如果提示很爛,回饋程式碼也很爛)
- 會一直學習跟進化,會依照專案中的程式碼提供貼近需求的答案。
問題
- 可能存在版權與隱私問題,因為它是透過 Github 程式碼來訓練跟改進模型。
- 不見得會真正了解上下文,所以會提供不合理或不安全的程式碼。
- 會降低開發人員的手感。
課金的力量
註冊此服務要提供信用卡號,可免費使用 30 天,若時間快到了,會先行通知,等到期會開始收費,有官方認證過的教師、學生身份與熱門專案開源者,可以免費使用。
目前力推商務版跟 Enterprise,使用影片可以參考下方的延伸閱讀第二點。
輔助鍵(會跟原本 VS Code 預設快捷鍵衝突)
- Ctrl + :arrow_right: 可一步一步確認提供的程式碼
- Alt + [ : 選擇上一個建議。
- Alt + ] : 選擇下一個建議。
- Alt +/ : 呼叫建議。
- tab: 同意此建議。
- Ctrl + Enter (提供建議方法)
用嘴巴寫 code?
- GitHub Copilot Voice(目前只有支援英文)
- GitHub Copilot X
- Chinese (Traditional, Taiwan) language support for VS Code Speech
Demo
透過 Github Copliot 可以完成的功能
限制星期六的早上七點到八點才能打卡
移除項目
修復 bug
程式碼中聊天
新建訂便當系統專案
建立 firebase
修改語法或重構
Github Copliot Lab (不能用了)
- READBLE: 增加可讀性(好用功能)
- ADD TYPES: 加入型別定義(適用 TS)。
- FIX BUG: 修復臭蟲(部分好用)。
- DEBUG: 找出臭蟲(沒有很好用)。
- CLEAN: 刪除廢 code(很少使用)。
- LIST STEPS: 列出程式碼執行步驟。
- MAKE ROBUST: 建立更強壯的程式碼(想確認有沒有更好的防呆可用)。
- CHUNK:拆分程式碼。
- DOUMENT: 撰寫文件。
- CUSTOM:自訂修改需求。
GitHub Copilot Chat
VSCode 需要 v1.79.0 以上版本。
功能強大,幾乎可以包辦所有開發的事情。
可透過 prompt 產生對應的程式碼。
新功能:
@workspace
@terminal
,@search
,@api
好的註解提示 (prompt) 需要非常具體,因電腦只做你告訴它的事,避免講一大串的要解決的流程,它更擅長處理一步一步的命令。沒有具體的提示可能會回應錯誤的結果。
移到所選取的程式碼按右鍵也可直接使用。
可直接插入建議後的片段程式碼。
使用
@workspace
產生新專案並且 work。
Copilot Chat 可以完成的工作
撰寫各種常見的程式邏輯
撰寫複雜的正則表示式(Regular Expression)
將 HTML 轉成 JavaScript 產生 DOM 的程式碼
撰寫呼叫函式/方法的程式碼
撰寫特定演算法的程式碼
撰寫各種複雜 SQL 語句
撰寫 OpenAPI Spec
自動生成測試資料
自動生成測試程式碼
刪除不要的程式碼
自動補完程式碼
- 參考現有專案原始碼
- 參考現有專案程式碼樣式
支援「原始檔控制」自動產生 PR commit message
更動程式後,選擇左方工具列的原始檔控制選項,會在輸入 PR Commit 的欄位右側有個類似星號的圖示,點下去之後,會自動偵測開發者所變動的內容,給予與情境相當的 Commit Message,不會 100% 正確,但可以當作參考,至少不用從頭去想。
使用心得
- 大部分的基本功能開發可以透過此套件完成,越訓練會越快速完成。
- 商業邏輯部分仍需要靠自己開發,但可透過詢問問題越來越聚焦。
- 提問的過程會順便幫忙解釋程式碼與提供建議寫法。
- 出入
ctrl+enter
可參考 Copilot 提供的寫法,知道原來還有其他方式,但有時候跑不出來。 - 大推 Copilot Chat 的使用。
- 正確的提問會大大提高想得到的答案,越明確越好。
- 會針對已開啟的檔案交互參考,無法參考整個專案。
- 對變數跟函式命名會使用清楚且一致的規則。
不要這樣用 Copilot
不要完全依賴 Copilot
Copilot 雖然好用,但應視為輔助的開發工具,甚至當一個怎麼問都不會累的同事,不是完全取代開發者,畢竟它只能處理基本跟簡單的程式邏輯,並不能完全代替開發者的知識,因為許多程式牽扯商業邏輯,而且有時候產生的程式碼可能不是最好、最安全的。
有效使用 Copilot 工具
適當地使用 Copilot 的提示功能,避免使用不好的方式,例如直接在註解中提示,雖然 Copilot 會依照註解提供相似的程式碼,但許多時候如果註解寫不好,反而會得到跟預期落差較大的結果,應優先使用內聯對話 (inline chat),也就是在程式碼中下指令 Ctrl + I
叫出對話框, 或側邊面板 (side panel) 使用 chat 對話,根據情境選擇最適合的提示方式。
避免重複創建提示
使用 Copilot 時,利用現有的命令 (斜線命令),也就是如下圖的方式 來快速解決問題,而不是重複創建提示。
考慮上下文資訊
在使用 Copilot 時,提供清晰明確的上下文資訊或程式碼,可以幫助獲得更相關的解決方案。包括清理不相關的對話、選擇相關程式碼段落等。
使用反饋功能
積極使用 Copilot 的反饋 (feedback) 和評分 (rating) 功能,幫助 Copilot 學習並改進,提供更好的代碼建議,如果 Copilot 答對了,也可以讚美它一下。