## 使用Copilot提高生產力 --- ### 目錄 - 介紹copilot原理及運作方式 - 使用copilot - CDD - inline suggestion - 使用copilot chat --- ### 什麼是copilot - 基於AI/LLM技術的程式碼助手,用於改善開發者體驗 - 基於**OpenAI**的**GPT-4 Turbo**模型 - 具有一定的推理能力 - 幾乎支援任何語言 Java、PHP、Python、JavaScript、Ruby、Go、C#、C++... - github open source找的到的code幾乎都看得懂 - 越少公開的語言程式範例,產出的程式碼越爛 --- ### 什麼是copilot - 專注在解決問題 - 協助開發人員花更少的時間在重複性的工作上並且保持品質 - Flow - 強調寫code的「心流」不被破壞 --- ### How Does Github Copilot Work ![](https://miro.medium.com/v2/resize:fit:720/format:webp/0*FkEI-48G2fKcC6K-) --- ### copilot限制以及潛在問題 - 可能存**版權**或**隱私**問題 - 產出的程式碼可能來自於github上的open source專案 - 可能產出不合理或不安全的code - 因為他不見得理解你的上下文 - 對開發人員的技能產生影響 --- ### 事前準備 - 訂閱copilot ![github-copilot-setting](https://hackmd.io/_uploads/Bya7tutv6.png) --- ### 事前準備 - vscode extension - github copilot - github copilot chat - vscode 17.6 or later --- ### vscode中enable/disable - vscode右下角有copilot的icon,點擊即可開啟/關閉 ![enable-copilot](https://hackmd.io/_uploads/ry68KOFwT.png) --- ### vscode中enable/disable - inline suggestion ![enable-copilot-inline](https://hackmd.io/_uploads/S14PtuFwT.png) --- ### 使用copilot的方式 - CDD (Comment Driven Development) - 在**註解**中寫下你的需求,copilot會根據需求給出建議 - The Flow - 順著**開發流程**自動產生程式碼 --- #### CDD (Comment Driven Development) - 描述目標 - 建立新檔案或功能時,先寫一些註解,讓copilot知道你的目的 - 靈活描述需求 - 適時修改註解可以讓copilot知道你的需求(ex: 看到他產出的程式碼不是你想要的,換個方式再說一次) - 提供良好範例 - 有時候需要處理資料,可以提供一些範例讓他知道如撰寫 --- #### Prompting - 提示要具體 - 他們更擅長一步一步接受命令 --- #### 透過註解寫code ![copilot-demo-1](https://hackmd.io/_uploads/HkM2ADtwp.png) --- #### 提供範例得到你要的結果 ![copilot-demo-2](https://hackmd.io/_uploads/H1yaRDtwa.png) --- #### The Flow - 命名很重要 ![copilot-demo-3](https://hackmd.io/_uploads/SyPTCPFv6.png) - 滑鼠移到灰底程式碼建議處,可以顯示工具列,可選取更多不同版本的程式碼 ![copilot-demo-4](https://hackmd.io/_uploads/B1TTADKwT.png) --- #### copilot如何分析你的程式碼 - 在提問時的主要來源 - 當前的檔案 - 已經開啟的分頁 --- #### copilot如何分析你的程式碼 - 上下文(context)包含哪些 - 目前**正在編輯的程式** - 鍵盤游標的**前幾行**與**後幾行** - 包含所有**已經開啟的程式碼檔案** - **註解**、**檔案名稱**、**類別名稱**、**函式名稱**、**參數名稱**... --- #### 使用copilot的編寫程式 - **alt+\\** 觸發inline suggestion - **ctrl+enter** 提供額外10組程式碼建議 --- ### Github Copilot Chat簡介 - 以**對話**為基礎的工具 - 對於**對話內容**有一定程度的**短期記憶**能力 - 提問會跟當前的游標所在程式碼自動關聯 - vscode**1.79.0**以上版本使用 - 支援繁體中文 --- #### 三種不同聊天視窗 - 一般聊天室窗(ctrl+alt+i) ![copilot-demo-5](https://hackmd.io/_uploads/S1800DYwT.png) --- #### 三種不同聊天視窗 - 快速聊天室窗(ctrl+shift+i) ![copilot-demo-6](https://hackmd.io/_uploads/SksACvtvp.png) - 內嵌聊天式窗(ctrl+i) ![copilot-demo-7](https://hackmd.io/_uploads/B11JJ_Yvp.png) --- #### 可以跟chatGPT一樣提問 自動產生更完整的程式碼 ![copilot-demo-8](https://hackmd.io/_uploads/ry61JOtw6.png) --- #### 與選取的程式碼進行對話 建立typescript的interface ![copilot-demo-10](https://hackmd.io/_uploads/H17xk_YDp.png) --- #### 與選取的程式碼進行對話 ![copilot-demo-11](https://hackmd.io/_uploads/ryLxkuYDa.png) --- #### 與選取的程式碼進行對話 插入程式碼騙隊到編輯器視窗的游標位置 ![copilot-demo-12](https://hackmd.io/_uploads/HJigyuYva.png) --- #### 與選取的程式碼進行對話 插入程式碼騙隊到編輯器視窗的游標位置 ![copilot-demo-13](https://hackmd.io/_uploads/ryyWkuKvT.png) --- #### 將html轉換成javascript產生dom的程式碼 ![copilot-demo-15](https://hackmd.io/_uploads/HknbkOFwa.png) --- #### 聊天室窗中的slash命令 - **@workspace** 關於當前工作區中的檔案或專案提出問題 - `/explain`: 解釋所選程式碼的工作原理 - `/tests`: 為所選程式碼產生單元測試程式碼 - `/fix`: 提出解決所選程式碼問題的建議 - `/new`: 為新的工作區建立專案架構 - `/newNotebook`: 建立新的Jupyter筆記本 --- #### 聊天室窗中的slash命令 - **@terminal** 如何在終端機執行某些操作 - **@vscode** 提問關於vscode的問題 - `/api`: 有關於vs code擴充套件開發問題 - `/search`: 詢問有關如何在vs code裡面搜尋檔案 --- #### 內嵌聊天的slash命令 - `/doc`: 替游標所在的程式碼**加上文件** - `/explain`: 替目前所選取的程式碼**進行解釋** - `/fix`: 替目前所選取的程式碼**提出修正建議** - `/tests`: 替目前所選取的程式碼**產生單元測試程式碼** --- #### 自動生成commit message vscode v1.84+ ![copilot-demo-14](https://hackmd.io/_uploads/rkrb1uFwa.png) --- #### GitHub Copilot Chat可以完成哪些工作 - 撰寫各種常見的程式邏輯 - 撰寫複雜的正則表示式 --- #### GitHub Copilot Chat可以完成哪些工作 - 撰寫特定演算法的程式碼 - 撰寫各種SQL與句 - 撰寫openAPI spec - 自動生成測試資料 - 產生單元測試程式碼 - 刪除不要的程式碼 - 自動補齊程式碼 --- ### Reference - [GitHub Copilot](https://github.com/features/copilot) - [GitHub Copilot: All you need to know](https://medium.com/analytics-vidhya/github-copilot-all-you-need-to-know-8e6fc1d5ccc) - [Will 保哥的技術交流中心](https://www.facebook.com/will.fans) - [ Code in the Flow with VS Code’s GitHub Copilot Chat ](https://www.youtube.com/watch?v=UqX2hCpgUJ0) --- # Q&A --- # Thank you for being here! ---
{"title":"copiot","description":"copiot","contributors":"[{\"id\":\"e267efcd-ccf5-424e-9762-899bf79ba885\",\"add\":7502,\"del\":3106}]"}
    453 views