###### tags: `AFS` # AFS MyCoder <sup style="color:gray">V2, 更新時間: 2024/11/07 11:00</b></sup> <sup style="color:red"><b>*</b></sup> <sup style="color:grey">若文件與產品有不一致之處,請以實際產品體驗為準。</sup> ## 簡介 AFS MyCoder 是整合 Coding LLM 的 AI 輔助開發工具,可為開發人員提供即時的程式設計協助,包括編輯或產生程式碼、解釋程式碼、產生註解、除錯及單元測試等,並支援主流的程式語言如 Python、C、Java、PHP、TypeScript(JavaScript)、C# 和 Bash。 ### 核心價值 1. **Accuracy (準確性)** 透過整合企業/團隊的私有程式庫或開源程式庫,在輔助開發上取得更精準且更具參考性的 AI 結果。 2. **Accessibility (可使用性)** 支援多元開發者編輯工具(IDE)的 AI Chat 與 AI Code Generation 功能。 3. **Security (安全性)** 支援地端部署環境以保護企業/團隊最寶貴的私有程式庫資產,有效限制存取的範圍以及提供嚴密的權限控管機制。 4. **Flexibility (彈性)** 模型的運算資源設定配置支援混合機制,可以彈性搭配雲端或地端的運算選擇。 ### 目標使用者 * 開發者 * 軟體/工程團隊 * 企業/團隊管理者 ## 核心功能 AFS MyCoder 最主要的兩大核心功能是 **AI Chat** 以及 **AI Code Generation**。各自又可以分成 **Basic** 以及 **Personalized** 的兩種模式。 ### AI Chat AFS MyCoder 的 AI Chat 功能可以讓使用者在開發編輯工具(IDE)上,透過 Chat 介面與 Coding LLM 根據需求情境進行問答與對話。 * **Basic Chat** 支援使用者透過與 AI 的問答與對話滿足開發相關的需求情境,例如生成程式、生成函式、生成測試、優化程式碼、修正程式碼或程式碼語言轉換等。 * **Personalized Chat** 除了既有的 Basic Chat 功能,可以搭配程式庫管理(企業/開源),透過 RAG(Retrieval-Augmented Generation)相關機制,即時參考程式庫資料以獲得更精準的 AI 生成結果。 |Basic Chat| Personalized Chat| |---|---| |✔️ 內建預設 AI 問答情境|✔️ 內建預設 AI 問答情境| |✔️ 取得 AI 問答|✔️ 取得 AI 問答| |❌ 取得客製化的 AI 問答|✔️ 取得客製化的 AI 問答| |❌ 串整程式庫管理(企業/開源)|✔️ 串整程式庫管理(企業/開源)| |❌ 支援 IDE 插件 Agent @doc|✔️ 支援 IDE 插件 Agent @doc| |✔️ 支援串整 Coding LLM|✔️ 支援串整 Coding LLM| |❌ 支援專案/使用者管理 |✔️ 支援專案/使用者管理| |❌ 支援專案層級 Coding LLM 設定 |✔️ 支援專案層級 Coding LLM 設定| ### AI Code Generation AFS MyCoder 的 AI Code Generation 功能可以大幅提升開發的效率,並有效減少繁瑣工作的時間成本。使用者可以在開發編輯工具(IDE)上,透過撰寫程式碼的需求情境,取得 Coding LLM 根據上下文感知而即時提供的最佳程式碼建議。 * **Basic Generation** 支援使用者透過撰寫程式碼的需求情境,取得 AI 根據上下文參考的程式碼建議,例如提供函式名稱或註解說明,讓 AI 提供實作內容;提供一個 Class 開頭,讓 AI 提供正確的 init 架構內容。 * **Personalized Generation** 除了既有的 Basic Generation 功能,可以搭配程式庫(企業/開源)資料以及 Coding LLM 的訓練微調,取得專屬使用者的客製化 Coding LLM,以獲得更精準的 AI 生成結果。 |Basic Generation| Personalized Generation| |---|---| |✔️ 即時生成程式碼建議|✔️ 即時生成程式碼建議| |❌ 即時生成客製化的程式碼建議|✔️ 即時生成客製化的程式碼建議| |✔️ 可自訂程式碼上下文的參考範圍|✔️ 可自訂程式碼上下文的參考範圍| |✔️ 支援一至多組程式碼建議|✔️ 支援一至多組程式碼建議| |❌ 支援程式庫前處理(企業/開源)|✔️ 支援程式庫前處理(企業/開源)| |❌ 支援 Coding LLM 的訓練微調|✔️ 支援 Coding LLM 的訓練微調| |✔️ 支援串整 Coding LLM|✔️ 支援串整 Coding LLM| |❌ 支援串整客製化 Coding LLM|✔️ 支援串整客製化 Coding LLM| ## 服務架構 AFS MyCoder 由三個模組組成: 1. **[IDE Editor Extension](#1-IDE-Editor-Extension)(開發編輯器之插件)** - 使用者在開發編輯器(IDE)安裝插件,搭配 AFS MyCoder 存取設定,即可進行 AI Chat 及 AI Code Generation。 1. **[AFS MyCoder](#2-AFS-MyCoder)(CPU + 管理)** - 具備專案與使用者權限控管平台。 - 使用者可以註冊企業私有/開源程式庫以獲得更精準的 AI 生成結果。 - 可部署於地端環境或雲端環境。 1. **[AFS Model](#3-AFS-Model)(GPU + 模型)** - 負責提供模型推論服務,有多種開源大語言模型的選擇,包含 AFS MyCoder 所需之 Coding LLM。 - 根據模型規格選擇對應的 GPU 資源需求量,亦可選用地端方案或雲端方案。 ![架構圖](https://hackmd.io/_uploads/ryPkBOb8A.png) ## 1. IDE Editor Extension 使用者在開發編輯器(IDE)安裝插件,搭配 AFS MyCoder 存取設定,即可進行 AI Chat 及 AI Code Generation。目前支援的開發編輯器(IDE)有 Visual Studio Code 以及 JetBrains IDEs(例如 IntelliJ IDEA、PyCharm 或 Android Studio 等)。 ### 安裝 Visual Studio Code Extension * 首先請安裝 [**Visual Studio Code 1.79 或更新版本**](https://code.visualstudio.com) * 開啟 Visual Studio Code 後,點擊側邊欄 **Extensions** 圖示,接著搜尋並安裝 **AFS MyCoder**。 <center><img src="https://hackmd.io/_uploads/SyCMhjGIR.png" width="70%"></center> * 請點選 Extension 右方的 ![Manage](https://hackmd.io/_uploads/H1Cljik1A.png) 圖示,並點選 `Extension Settings`。 <center><img src="https://hackmd.io/_uploads/BJSoRiML0.png" width="70%"></center> * 設定完成後,請點擊右下方的狀態列的 **AFS MyCoder: N.A.** 提示,若狀態變成 **AFS MyCoder: ON**,即可開始使用。 <center><img src="https://hackmd.io/_uploads/HJxJQ_VNR.png" width="200"></center> * **AFS MyCoder - Visual Studio Code 快捷鍵** * 以下為 AFS MyCoder 在 Windows 環境中的常用快捷鍵,若使用 Mac OS,請將 **`Alt`** 換成 **`Option`**。 | 快捷鍵 | 功能 | | -------- | -------- | | **`Alt` + `,`** |啟動 Chat 視窗| | **`Alt` + `.`** |啟動自動生成程式碼建議功能| | **`Tab`** |接受建議的程式碼| | **`Alt` + `[`**|下一個建議| | **`Alt` + `]`**|上一個建議| * 若欲自訂快捷鍵,請參照 IDE 的官方指引進行更改。 ### 安裝 JetBrains IDEs Plugin * 此處以 Intellij IDEA 為例,請安裝 [**Intellij IDEA 2024.2.4 或更新版本**](https://www.jetbrains.com/idea/)。 * 開啟 Intellij IDEA 後, 點擊側邊欄或者 Settings 中的 **Plugins**,接著點擊 **Marketplace**,搜尋並安裝 **AFS MyCoder**。 <center><img src="https://hackmd.io/_uploads/rkZBsSIUR.png" width="70%"></center> * 點擊 Settings 並搜尋 **AFS Plugin Settings**。 <center><img src="https://hackmd.io/_uploads/Sk39sB8U0.png" width="70%"></center><br><br> :::danger :bulb: **提示:** 若使用 **Android Studio**,預設沒有啟用 Chat 畫面的支援。請務必額外進行以下設定並支援 JCEF browser 功能後,才能啟用 Chat Service。 :::spoiler **請展開查看額外的設定步驟** 1. 點擊 **`Help > Find Action...`** ![image](https://hackmd.io/_uploads/BkB1aDGlR.png) 2. 輸入 **`Choose Boot Java Runtime for the IDE...`** ![image](https://hackmd.io/_uploads/Bkuf6vMxC.png) 3. 點擊 **New** 下拉選單並選取對應的 runtime * **Linux 版** 請選擇最新的 `JetBrains Runtime JBR with JCEF (bundled by default)` ![image](https://hackmd.io/_uploads/Sk7uGuGxR.png) * **Windows & MacOS 版** 目前已知只有 Koala - Canary 4 版本能夠支援,並請選擇 `17.0.10b1207.14 JetBrains Runtime JBRSDK with JCEF` ![image](https://hackmd.io/_uploads/Bk4tkuzxC.png) 4. 完成後需 **重啟 Android Studio**。 ::: * **AFS MyCoder - JetBrains IDEs 快捷鍵** * 以下為 AFS JBCoder 在 Windows 環境中的常用快捷鍵,若使用 Mac OS,請將 **`Alt`** 換成 **`Option`**。 | 快捷鍵 | 功能 | | -------- | -------- | | **`Alt` + `.`** |手動生成程式碼建議功能| | **`Tab`** |接受建議的程式碼| | **`Alt` + `,`** |開啟Chat視窗| | **`Alt` + `[`**|下一個建議| | **`Alt` + `]`**|上一個建議| * 若欲自訂快捷鍵,請參照 IDE 的官方指引進行更改。 ### Extension 設定資訊 #### 設定 AFS MyCoder * 若使用者 / 團隊 **已擁有** AFS MyCoder,請填寫下述 2 組設定。 * 填寫設定後即可額外獲得 Personalized Chat 功能。 * 請參考 [**AFS MyCoder - IDE 串整資訊**](#2-6-2-IDE-串整資訊) 章節取得 MyCoder URL 以及 MyCoder API Key。 |設定項目|填寫資訊| |---|---| |AFS MyCoder URL|IDE 串整資訊 > MyCoder URL| |AFS MyCoder API Key|IDE 串整資訊 > MyCoder API KEY| :::spoiler 若 **尚未擁有** AFS MyCoder,請展開 #### 設定 Basic Chat / Code Generation * 若使用者 / 團隊 **尚未擁有** AFS MyCoder ,請填寫下述 6 組設定。 * 請參考 [**AFS Model - API 取得所需資訊**](https://docs.twcc.ai/docs/user-guides/twcc/afs/afs-modelspace/api-and-parameters/api-parameter-information/) 取得 API URL、API Key 以及 API Model。 |設定項目|填寫資訊 <br>(以 AFS ModelSpace 公用模式為例)| |---|---| |Chat API (URL) |`https://api-ams.twcc.ai/api/models/conversation`| |Chat API Key |專屬 API Key| |Chat API Model | 建議選用 `meta-llama31-70b-inst`| |Infill API (URL) | `https://api-ams.twcc.ai/api/models/text_infilling`| |Infill API Key |專屬 API Key| |Infill API Model | 建議選用 `deepseek-coder-6.7b-base`| ::: ## 2. AFS MyCoder ### 2-1. 使用者介面 AFS MyCoder 是個具備專案/帳號管理、程式庫管理以及 IDE 串整資訊的核心平台。 - 具備企業級的專案與使用者權限管控 - 提供主流 IDE 的延伸模組與串整資訊 - 具備程式庫管理介面串整企業私有/開源程式庫 - 可根據使用情境需求部署於地端或雲端環境 - 地端部署:可以確保服務與應用保護於企業內部網路,並限制程式庫的存取。 - 雲端部署:可以彈性配置資源,並快速體驗開源程式庫整合的效果。 #### 2-1-1. 登入平台 * 使用者可前往 AFS MyCoder 平台,透過帳號密碼登入。 <center><img src="https://hackmd.io/_uploads/rkbq-FSs0.png" width="90%"></center><br> #### 2-1-2. 使用者介面 * 使用者登入後,若已有所屬專案則可看見使用者介面;反之,則需向系統/專案管理員提出請求。 * **上方-導覽列** * LOGO 圖示:點擊後會回到首頁的 MyCoder Chat 畫面 * 專案下拉選單:點擊後可以查看或切換不同的所屬專案 * 設定圖示:可以切換深淺背景模式 * 語系圖示:可以切換中文或英文語系 * 帳號資訊: * 若具備系統管理者身份,可以選擇平台管理進行操作 * 若具備專案管理者身份,可以選擇專案管理進行操作 * 使用者可以選擇 **更改密碼** 或 **登出** 的操作 * **左方-功能列** * MyCoder Chat:可以體驗 Basic Chat 與 Personalized Chat 的對話結果 * 程式庫:可以註冊企業私有/開源程式庫,並透過 Personalized Chat 取得最精準的 AI 回答 * IDE 串整 * IDE 延伸模組:提供 Visual Studio Code 以及 JetBrains IDEs 的延伸模組下載方式 * IDE 串整資訊:取得專案的 MyCoder URL 以及使用者的 MyCoder API Key,並於 IDE 延伸模組中設定串整 * 使用文件:提供 AFS MyCoder 的操作說明與常見問題資訊 <center><img src="https://hackmd.io/_uploads/BJS-aprjA.png)"width="90%"></center><br> ### 2-2. 角色權限與管理 #### 2-2-2. 角色權限 AFS MyCoder 平台有三種角色: | 角色 | 權限 | | -------- | -------- | | 系統管理員(Super User) | 管理所有的使用者([使用者管理](#2-3-1-使用者管理))<br> 管理所有的專案([專案管理](#2-3-2-專案管理)) | |專案管理員(Project Admin)|管理該專案的設定([專案管理](#2-3-2-專案管理))<br> 查看並存取該專案的所有程式庫| |專案使用者(Project User)|管理自己的程式庫<br> 查看並存取自己註冊以及被分享的程式庫| ### 2-3. 平台管理(專案 / 使用者) 只有 **系統管理員** 以及 **專案管理員** 可以進入管理介面。進入方式須點擊右上方帳號資訊後,再點擊 **平台管理** 或 **專案管理**,會根據權限的不同而有不同的顯示名稱。 #### 2-3-1. 使用者管理 * **系統管理員** * 使用者管理:可以進行 **新增**、**更改密碼**、**編輯權限** 以及 **刪除**。 * 若有串接企業 AD,可以透過帳號/email 清單(逗號隔開) 的方式填寫,並快速經比對後批次加入系統中。 * 若無串接企業 AD,請逐一新增所需的帳號與預設密碼。 ![使用者管理](https://hackmd.io/_uploads/SyO_JUZvC.png) #### 2-3-2. 專案管理 * **系統管理員** * **專案管理** * 可以對該專案進行 **新增**、**編輯** 以及 **刪除**。 * **新增** 以及 **編輯** 可以設定成員清單與專案所需的模型來源(詳見 [**模型來源設定**](#2-3-3-模型來源設定))。 * **成員管理** * 點擊該專案列,可以查看專案成員並進行 **新增**、**編輯權限** 以及 **刪除**。 * **專案管理員** * **專案管理** * 可以對該專案進行 **編輯**。 * **編輯**可以設定專案所需的模型來源(詳見 [**模型來源設定**](#2-3-3-模型來源設定))。 * **成員管理** * 點擊該專案列,可以查看專案成員並進行 **新增**、**編輯權限** 以及 **刪除**。 * **新增** 成員可以透過帳號/email 清單(逗號隔開) 的方式填寫,並快速經比對後批次加入專案中。 ![專案管理](https://hackmd.io/_uploads/r1YxRTrEC.png =98%x) #### 2-3-3. 模型來源設定 AFS MyCoder 需要藉由 Coding LLM 來提供 AI 的輔助結果,需要參考 [**AFS Model**](#3-AFS-Model) 取得必要的模型資訊:API URL、API KEY 以及 API Model。 此服務需要設定模型來源,填寫完畢後可以使用 **驗證** 按鈕進行測試。 ※注意:**驗證** 的動作會進行 API Request,並會有少量 token 的花費。 專案管理員可以先點擊右上方帳號,再進入 **專案管理**,再點擊專案名稱右方的選項圖示,選擇 **編輯** 即可設定模型來源。 1. **Chat 模型來源** * AFS MyCoder 的 AI Chat(Basic & Personalized)都是採用這個模型來源提供最佳的 AI 問答輔助。 |Chat 模型來源|填寫資訊 <br>(以 AFS ModelSpace 公用模式為例)| |---|---| |名稱 | 建議選用 `meta-llama31-70b-inst`| |Chat API Key |專屬 API Key| |Chat API (URL) |`https://api-ams.twcc.ai/api/`| 2. **Infilling 模型來源** * AFS MyCoder 的 AI Code Generation(Basic & Personalized) 都是採用這個模型來源提供最佳的 AI 生成輔助。 |Infilling 模型來源|填寫資訊 <br>(以 AFS ModelSpace 公用模式為例)| |---|---| |名稱 | 建議選用 `deepseek-coder-6.7b-base`| |Chat API Key |專屬 API Key| |Chat API (URL) |`https://api-ams.twcc.ai/api/`| 3. **Embedding 模型來源** * AFS MyCoder 程式庫註冊的 RAG 機制是採用這個模型來源提供最佳的向量化資訊提供最佳的相似度比對結果。 |Embedding 模型來源|填寫資訊 <br>(以 AFS ModelSpace 公用模式為例)| |---|---| |名稱 | 建議選用 `gte-base-zh` | |Chat API Key |專屬 API Key| |Chat API (URL) |`https://api-ams.twcc.ai/api/`| 4. **Rerank 模型來源** * AFS MyCoder 程式庫註冊的 RAG 機制是採用這個模型來源提供最佳的相似度資訊排序結果供模型參考。 |Rerank 模型來源|填寫資訊 <br>(以 AFS ModelSpace 公用模式為例)| |---|---| |名稱 | 建議選用 `bge-reranker-v2-m3` | |Chat API Key |專屬 API Key| |Chat API (URL) |`https://api-ams.twcc.ai/api/`| ### 2-4. MyCoder Chat #### 2-4-1. AI Chat - Basic * 程式庫下拉選單若無選取,即可取得 **Basic Chat** 的回答 * 根據需求情境與 AFS MyCoder 進行問答 * 例如編寫函式 / 優化程式碼 / 轉換程式語言 / 修正錯誤 / 生成測試等。 * 建議補充足夠的資訊,可以獲得更完整的 AI 回答。 * 例如指定的程式語言或參考的程式碼片段 #### 2-4-2. AI Chat - Personalized * 程式庫下拉選單選取一個或多個欲測試的程式庫,即可取得 **Personalized Chat** 的回答,並根據所選的程式庫給予最適當的指引與實作建議 * 點選左下角 **新對話** 按鈕可以清除對話紀錄重新再開啟對話 * 點選 **程式庫下拉選單** 可以自由選取一個或多個可試用的程式庫,切換時會將對話清除 * 點選右方的 **+** 圖示,即可跳轉到 **程式庫管理** 進行程式庫的新增、查看與管理 * 點選右下角的 **麥克風** 可以透過語音輸入問答內容,並轉為文字送出 ![image](https://hackmd.io/_uploads/Byxa9nrjC.png =98%x) * 下圖範例是選擇 `langchain` 的程式庫,而 Coding LLM 原生模型並沒有很熟悉這個程式庫的函式與內容 |BEFORE<br>無選取任何程式庫<br>模型原生回答不準確|**AFTER<br>選取 `langchain` 程式庫<br>針對程式庫優化回答**| |:---:|:---:| |![image](https://hackmd.io/_uploads/H1dxsbwpa.png)|![image](https://hackmd.io/_uploads/HJJuiWD6T.png)| ### 2-5. 程式庫 #### 2-5-1. 程式庫管理 * 進入 AFS MyCoder 管理頁面後,可以新增程式庫、測試以及查看已註冊的程式庫清單,並可對各自程式庫進行相關管理行為的操作。 ![](https://hackmd.io/_uploads/BJr42TSjR.png =98%x) * 根據使用者的權限角色,有對應的程式庫清單與操作行為。 1. 專案管理員 * 可以 **新增** 程式庫。 * 可以 **查看**、**測試**、**編輯**、**同步程式庫** 以及 **刪除** 專案內 **所有** 的程式庫。 * 若非本人建立的程式庫,編輯模式只支援 **更改名稱** 以及 **選擇成員**。 2. 專案使用者 * 可以 **新增** 程式庫。 * 可以 **查看**、**測試**、**編輯**、**同步程式庫** 以及 **刪除** 專案內 **本人建立** 的程式庫。 * 可以 **查看**、**測試** 以及 **退出** 專案內 **被專案成員分享給自己** 的程式庫。 * 狀態欄位可以查看程式庫註冊的進度狀態,支援以下幾種: * `in-processing`:正在進行註冊,請耐心等待。 * `ok`:註冊成功,可以開始進行問答或測試。 * `failed`:註冊過程有問題,可以移到狀態上方查看錯誤的訊息以及 Error Code 資訊。 |Error Code|名稱|說明| |---|---|---| |10000|LOAD_REPO_ERROR|無法存取指定的程式庫,請重複確認設定資訊。| |10001|NO_DOCUMENTATION|可以正常存取指定的程式庫,但符合設定條件的檔案數量為零,請重複確認設定資訊。| |10002|EMBEDDING_UNAUTHORIZED|無法存取 Embedding 模型來源,請重複確認 API 金鑰資訊。| |10003|EMBEDDING_CONNECTION_FAILED|無法存取 Embedding 模型來源,請重複確認名稱資訊。| |10004|EMBEDDING_MODEL_NOT_FOUND|無法存取 Embedding 模型來源,請重複確認 URL 資訊。| |10005|EMBEDDING_UNEXPECTED_ERROR|可以存取 Embedding 模型來源,但過程中遇到非預期錯誤,請稍後再試或連繫客服。| |10006|INDEX_UNEXPECTED_ERROR|建立程式庫索引的過程中遇到非預期錯誤,請稍後再試或連繫客服。| |10007|DELETE_REPO_NOT_FOUND|欲刪除的程式庫已不存在,請重複確認程式庫是否仍存在或連繫客服。| |10008|DELETE_UNEXPECTED_ERROR|刪除程式庫的過程中遇到非預期錯誤,請稍後再試或連繫客服。| * 管理行為有以下幾種: * **對話**:程式庫狀態顯示 `ok` 之後,即可體驗 **Personalized Chat** 的效果 * **編輯**:程式庫的建立者可以再進行編輯,編輯完成後狀態就會重新變成 `in-processing` * **同步程式庫**:點擊後可立即重新同步程式庫中的設定資訊,通常用於遠端程式庫持續有程式碼更新的情境 * **刪除**:程式庫的建立者可以將程式庫刪除,程式庫會一併從被分享者的清單上移除 * **複製 ID**:若與客服反映問題期間,需要索取程式庫的細節 ID 資訊,可透過此功能取得 #### 2-5-2. 新增程式庫 在 AFS MyCoder 管理頁面點擊 **新增程式庫**,並完成新增程式庫設定: ![image](https://hackmd.io/_uploads/Sk_8oaSjA.png =98%x) * 名稱:只可輸入英文、數字、連字號以及底線,開頭及結尾需為英文或數字,且名稱不可重複。 * 描述:請輸入程式庫的描述。 * 來源:請選擇程式庫來源,目前支援 **GitHub**、**GitLab** 及 **Gerrit**。 * 程式庫 API 金鑰:若為 **PUBLIC** 的公開程式庫,則不用填寫此項;反之,根據不同的程式庫來源,會需要對應的權限金鑰才能存取想要註冊的程式庫。 * GitHub 請參考 [**Personal access tokens**](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)。 * GitLab 請參考 [**Personal Access Tokens**](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)。 * Gerrit 請參考 [**HTTP Password**](https://gerrit-review.googlesource.com/Documentation/user-upload.html)。 * 程式庫 URL:請根據程式庫來源,填寫 HTTPS 的複製路徑,例如: `https://github.com/abc/def.git`。 * 程式庫 Branch:請輸入欲註冊的 Branch 名稱,例如:`master` 或 `main`。 * 程式庫路徑:指定程式庫路徑,可針對特定目錄下的程式庫註冊,例如: `src/tools/example`。 * 程式碼語言:由於不同的程式語言的函式與程式用法各有差異,目前每一個程式庫的註冊僅能選擇一種程式語言。若需註冊多種程式語言,可以分多次註冊。目前支援的程式語言如下: * C/C++ * Python * Golang * TypeScript * JavaScript * Java * C# * 成員:若欲共享程式庫,可點選 **選擇成員**,並勾選想要分享此程式庫的對象。只有建立者可以 **編輯** 或 **刪除** 程式庫的資訊,被分享者只能 **測試** 或 **使用** 此程式庫。 ### 2-6. IDE 串整 #### 2-6-1. IDE 延伸模組 * 下載 AFS MyCoder Extention 並安裝在 IDE,解鎖 AFS MyCoder 完整體驗。 * [**Visual Studio Code Extension**](https://marketplace.visualstudio.com/items?itemName=TWSC.afs-mycoder):詳見 [**安裝說明**](#安裝-Visual-Studio-Code-Extension) 章節 * [**JetBrains Plugin**](https://plugins.jetbrains.com/plugin/24383-afs-mycoder/versions/stable):詳見 [**安裝說明**](#安裝-JetBrains-IDEs-Plugin) 章節 #### 2-6-2. IDE 串整資訊 AFS MyCoder 提供兩個資訊:`MyCoder URL` 以及 `MyCoder API KEY`,讓使用者輕鬆串整到開發用的 IDE Editor Extension 設定之中。串整成功後,在 IDE 上的 AI Chat 以及 AI Code Generation 都可以透過所屬專案的模型來源設定,獲得精準的 AI 輔助回答。 * 上方可以複製該專案的 **MyCoder URL**。 * 點選 **建立**,可以新建一組使用者的專屬 **MyCoder API KEY**。 * 建立後,請務必 **下載** 檔案並 **開啟** 才能查看 **MyCoder API KEY** 的金鑰內容。 * 請將 **MyCoder API KEY** 金鑰內容妥善保存。 * 事後若遺失金鑰內容或者有外洩疑慮,請將舊金鑰刪除並重建新的一組。 * **MyCoder URL** 以及 **MyCoder API KEY** 在 IDE Extension 的設定步驟請詳見 [**設定 AFS MyCoder**](#設定-AFS-MyCoder)。 <center><img src="https://hackmd.io/_uploads/Bk4dupBj0.png" width="95%"></center><br> <center><img src="https://hackmd.io/_uploads/BkbPOaHsR.png" width="60%"></center><br> ## 3. AFS Model AFS MyCoder 需要整合 Coding LLM 才能提供 AI Chat 以及 AI Code Generation 的功能,因此需要搭配負責提供 GPU 運算的推論服務。AFS Model 提供多種開源大語言模型的推論服務,包含 AFS MyCoder 所需之 Coding LLM。使用者可以根據需求情境,參考 [**AFS 產品系列**](https://tws.twcc.ai/afs-product/) 並選擇使用雲端的方案或者地端部署的方案。 ### 雲端方案 - [**AFS ModelSpace - 公用模式**](https://docs.twcc.ai/docs/user-guides/twcc/afs/afs-modelspace/public-mode/create-service) - 操作便捷:可快速在雲端部署與啟動原生大語言模型 AI 服務。 - 成本透明:用多少付多少,計價方式單純,易於評估及控制成本。 - 雲端託管:自動化工具和管理服務,簡化大語言模型的管理工作。 - 計費模式:以使用 Token 數計費,依需選用。 - [**AFS ModelSpace - 私有模式**](https://docs.twcc.ai/docs/user-guides/twcc/afs/afs-modelspace/private-mode/create-service) - 操作便捷:可快速在雲端部署與啟動原生大語言模型 AI 服務。 - 成本透明:用多少付多少,計價方式單純,易於評估及控制成本。 - 雲端託管:自動化工具和管理服務,簡化大語言模型的管理工作。 - 計費模式:以模型建立時間計費,依需選用。 ### 地端方案 - [**AFS Appliance - 地端部署模式**](https://tws.twcc.ai/afs-product/) - 資料儲存好安全:符合企業地端的安全性、合規性和可用性,輸入、輸出皆在企業自己的推論環境,保障用戶與資料的安全和隱私,減少資安風險。 - 機密資訊不外洩:企業可直接在自己的伺服器上落地部署自有大模型,不須與他人用戶共享環境,無須擔心機敏資料外洩,隱私有保障。 - 方案彈性享優惠:提供不同規格方案,滿足各種需求,最高(DGX H100)可提供每分鐘 3.4 萬個 Tokens 的文字生成效能。 ## 在 IDE 上開始使用 如 [**核心功能**](#核心功能) 的章節介紹,AFS MyCoder 最主要的兩大核心功能是 AI Chat 以及 AI Code Generation。各自又可以分成 Basic 以及 Personalized 的兩種模式。 ### AI Chat - Basic 使用 Basic Chat 可以根據開發上的需求情境與 AFS MyCoder 進行問答或請教,例如協助程式碼撰寫、解釋或優化程式碼、轉換程式語言、除錯、產生文件或產生測試等。 #### Chat 視窗直接問答 * 點擊左側方欄的 AFS MyCoder 圖示可 **顯示/隱藏** Chat 視窗。按下快捷鍵 **`Alt` +`,`** 可快速啟動 AFS MyCoder Chat 對話視窗。 <center><img src="https://hackmd.io/_uploads/rJoVNGjNR.png" width="200"></center><br> * 在訊息框輸入情境需求的提示,AFS MyCoder 會產生對應需求的回答。使用者可以根據回答內容決定是否套用、重新調整提問或重新生成。 |圖示|圖示說明| |---|---| |![image](https://hackmd.io/_uploads/r1HzDUENA.png)|若回答包含範例程式碼,點擊程式碼範例右上角的 **`Copy`** 圖示,可將程式碼範例複製。| |![image](https://hackmd.io/_uploads/HJOXvIVV0.png)|若回答包含範例程式碼,點擊程式碼範例右上角的 **`Insert at Cursor`** 圖示,可將程式碼範例自動插入至正在編輯文件的游標所在處。| |![image](https://hackmd.io/_uploads/SJz_ULEV0.png)|AFS MyCoder正在回答期間,點擊右下角的 **`Stop generating`** 按鈕,可立即中止回答。| |![image](https://hackmd.io/_uploads/Sk9xmLN40.png)|點擊右下角的 **`Regenerate`** 按鈕,可重新生成回答。| |![image](https://hackmd.io/_uploads/rJA2MIN4A.png)|點擊右上角的 **`New Session`** 按鈕,可開啟新的對話。| |![image](https://hackmd.io/_uploads/HkZSX8EN0.png)|滑鼠移動到曾送出過的提示文字後,點擊浮現的 **`Edit`** 按鈕,可重新編輯提式文字並重新送出。| * 範例:**程式碼撰寫** <center><img src="https://docs.twcc.ai/assets/images/write-code-717c9237a951f5c057a2518731341919.gif" width="85%"></center><br> #### 標記程式碼問答 * 在編寫程式碼的區域中,可以任意標記一段程式碼區塊,並針對區塊內容進行專注的問答。一種方式是任意的對標記區塊輸入提示需求,另一種方式是透過右鍵點擊 AFS MyCoder 內建的問答情境。 <center><img src="https://hackmd.io/_uploads/Hkk33UNV0.png" width="85%"></center><br> * 內建的問答情境 |標記程式碼的問答情境|說明| |---|---| |Chat with AFS MyCoder|針對標記區塊任意輸入提示需求。| |Explain This|請求針對標記區塊提供說明解釋。| |Fix This|請求針對標記區塊提供修正後的程式碼或者解法說明。| |Generate Docs|請求針對標記區塊提供適合的 docstrings 或 comments 等。| |Generate Tests|請求針對標記區塊提供測試腳本的範例程式碼。| |Refactor This|請求針對標記區塊提供優化過的範例程式碼。| * 範例:**除錯** <center><img src="https://docs.twcc.ai/assets/images/debug-38cf9d8715394d807648626099da9d0a.gif" width="85%"></center> * 範例:**產生測試** <center><img src="https://docs.twcc.ai/assets/images/generate-test-8c5193b52607653c0eac89f1001e3487.gif" width="85%"></center><br> ### AI Chat - Personalized 使用 Personalized Chat 需要事先完成 AFS MyCoder 的程式庫註冊。可於開發編輯工具(IDE)中使用 @doc 的 Agent 呼叫程式庫清單,並取得更精準的 AI 回答。 * 在 IDE 的 Chat 對話視窗中輸入 **`@`** 開頭,點選 **`@doc`**。 <center><img src="https://hackmd.io/_uploads/BJicatSap.png" width="85%"></center><br> * 接著會列出所有可選取的註冊程式庫選單。 <center><img src="https://hackmd.io/_uploads/SJfe2PVVC.png" width="85%"></center><br> * 選擇一個或多個目標程式庫後,按下 `Enter` 即可開始進行問答。 <center><img src="https://hackmd.io/_uploads/S1dO3wENC.png" width="85%"></center><br> * Personalized Chat 快捷鍵 |快捷鍵|說明| |---|---| |`Up Arrow` + `Enter`|在程式庫清單向上逐一切換目標,`Enter` 確定選用。| |`Down Arrow` + `Enter`|在程式庫清單向下逐一切換目標,`Enter` 確定選用。| |`Space` + `Enter`|若欲選擇數個程式庫,`space` 可以勾選數個目標,`Enter` 確定選用。| ### AI Code Generation Basic Generation 以及 Personalized Generation 在 AFS MyCoder 中專案設定的 `Infilling 模型來源` 有所不同,其他使用方式都相同。 * **自動模式**:當編寫程式碼時,模型會自動產生上下文感知的即時建議,若欲接受整行建議可按下快捷鍵 **Tab** 接受。 <center><img src="https://docs.twcc.ai/assets/images/auto-mode-299291d100c69c1afbbddc687246c9ee.gif" width="85%"> </center><br> * **手動模式**:點擊 **`Alt` + `.`** 可啟動程式碼建議功能(灰色),產生一至數個建議的程式碼片段(預設為兩個)。使用快捷鍵 **`Alt` + `[`** 或 **`Alt` + `]`** 可快速切換下一個或上一個建議。 <center><img src="https://docs.twcc.ai/assets/images/manual-mode-1-30313eb6a200fffe10ded80bfbd54aa7.gif" width="85%"></center><br> * 模型會根據使用情境、程式語言及檔案格式自動產生符合需求的程式碼。 <center><img src="https://docs.twcc.ai/assets/images/manual-mode-2-3571df110f5d595072347b4ebfd2e19e.gif" width="85%"></center><br> ## 常見問題 ### 1. 服務無法使用 * 如果遇到系統或設定發生錯誤,在狀態列會顯示相關的錯誤提示,請依照提示檢查 **Extension Settings** 中的 API KEY、API URL、模型設定等資訊是否正確,網路連線及服務是否正常。 ### 2. AI Chat - 對話紀錄太長,無法顯示完整回覆 * 當對話紀錄太長,無法顯示完整回覆時 * 可將 `Chat Api Output Max Tokens` 數字調小,再 Regenerate 一次 AI 回答。 * 若仍然超過模型可接受的長度限制,請點擊 Chat 視窗右上角的 **`New Session`** 圖示開啟新的對話,再試一次。 ### 3. AI Code Generation - 如何調整上下文感知的範圍 * 若欲調整上下文感知的範圍,可調整 `Lookup Context Line` 的數值,此數值代表向上以及向下各自參考多少列數。 ### 4. AI Code Generation - 如何調整提供的程式碼建議組數 * 若欲調整預設提供的程式碼建議組數,可調整 `Manual Suggestions Count` 的數值,此數值即代表一次性取得幾組 AI Code Generation,可以設置 1~5 之間的數值。 ## AFS MyCoder 部署資訊 #### 環境需求 |項目 |最低需求 |建議需求 | |------------|------------------|------------------| | CPU | 4 vCPU | 8 vCPU | | Memory | 8G | 32G | | Storage | 100G HDD | 500G SSD | | OS | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS | | Kubernetes | 1.25.6 | 1.25.6 | | Helm | 3.12.3 | 3.12.3 | #### Storage Size 評估方法 Storage Size 大約等於純文字程式碼 size 的 1.5 倍,故 30G 空間可以註冊最多共 20G 的純文字程式碼大小。 #### 安裝步驟 1. 下載安裝檔 mycoderinstaller.zip (URL 待補) ``` curl https://xxx.xxx.xxx/mycoderinstaller.zip ``` 2. 解壓縮 mycoderinstaller.zip ``` unzip mycoderinstaller.zip ``` 3. 透過 Helm 安裝 MyCoder ``` helm install mycoderinstaller -n mycoderapp mycoderinstaller/ --create-namespace ``` #### 更新步驟 1. 下載新版安裝檔 (URL 待補) ``` curl https://xxx.xxx.xxx/mycoderinstaller.zip ``` 2. 解壓縮 mycoderinstaller.zip ``` unzip mycoderinstaller.zip ``` 3. 透過 Helm 升級 MyCoder ``` helm upgrade mycoderinstaller -n mycoderapp mycoderinstaller/ ```