AFS
Draft Version
* 若文件或圖片與產品有不一致之處,請以實際產品體驗為準。
使用 JavaScript 語言開發的命令行界面(CLI),可使用 LLama AI(Code LLama, Llama 2)自動撰寫 Git 提交訊息或生成簡潔的程式碼審查摘要,亦可輕鬆設定 Git Hooks 以準備提交。
目前提供使用 npm 或執行檔案安裝的方式:
URL
(請勿複製以下的範例)。npm install @twsc/coder@latest
npm uninstall -g @twsc/coder
您可以使用 prepare-commit-msg
hook 將 GitCoder - CLI-Coder 整合到 Git 中,這可讓您正常使用 Git,並在提交之前編輯提交訊息。
q!
或 :wq
,都會強制提交訊息。如果您想中止訊息,請使用 git reset HEAD^
。
安裝
解除安裝
您可以直接呼叫 GitCoder - CLI-Coder 來為您的變更生成一條提交訊息。
--preview
:預覽 AI 模型中生成的摘要--diffUnifed
:生與 <n>
行的差異--excludeList
:可以忽略暫存文件--promptOnly
:顯示提示,不發送請求給 GPT--amend
:替換當前提交--maxTokens
:設定生成的最大 tokens 數(預設為 1000)--templateFolder
:設定 Git 提交訊息的自定義格式--promptFolder
:設定自定義系統提示--language
:更改提交訊息語言(en, tw, cn)--files
: 指定變更的檔案--parse
: coder 切割 commit changes,以每一筆 change 為單位,請 llm 總結(預設為 false)。--tokenLimit
: llms 的 input tokens + max tokens 限制(預設為 8192)。--modelTokenizer
: 指定自訂的 model tokenzier.json 的位置,coder 會依照設定來計算輸入的 token (預設會用 llama2 的方式去計算 tokens)。可以在命令列介面設定配置。
/Users/user/.config/coder/.env
。/Users/<user>/.config/coder/.env
。如果將配置設定在 .env 檔案,編碼器將優先使用 .env 檔。如果想從 .env 中刪除 env 變數,有兩個選擇:
coder config unset TEMPERATURE
可用的 ENV 變數
如果您想自定義系統提示,可以在 /Users/<user>/.config/coder/
中創建範本,或設置自己的範本路徑 coder config set PROMPTFOLDER <your path>
。
:Warning:注意: 檔案名稱必須正確,範本中的 {{ key }}
請勿更改。
GitCoder - Auto-Reviewer 是一個結合 CodeLlama 和 GitLab 的 DevOps 工具,可在 GitLab CI/CD 流程中協助開發人員進行程式碼審查,簡化審查工作量,提升開發效率。同時,它還提供詳細的中文審查建議,並將這些建議自動添加到 GitLab 的評論中,讓開發人員快速瞭解審查內容或進行必要的修改。
在 GitLab 要使用該工具的專案設定 CI/CD 環境變數,Project > Settings > CI/CD > Variables。
GITLAB_TOKEN
LLM_TOKEN
CODE_LLAMA_URL
CODE_LLAMA_MODEL
Code-Reviewer
)的 Access Token,可以在 User Settings > Access Tokens 獲取。
將該 GitLab User 加入到對應專案的 Members。
修改專案的 gitlab-ci.yml
。
:Warning:注意: 該專案需安裝 GitLab Runners。
設定啟動方式
when: manual
)。
以下列舉審查範例及說明。
範例一:理解程式碼的邏輯風險,提醒除以零是不合法的運算。
範例二:理解程式碼變更,並且提出風險提醒;改成同步複製等待可能會導致效能問題。
範例三:理解程式碼變更,提出遞迴呼叫可能帶來的風險,並給予相關改進建議。
GitCoder - Chatbot 可讓開發人員在 GitLab MR 流程中透過聊天的方式與 Code Llama 進行互動,目前提供 Code Review、Code Change Explanation 以及 Free Chat 功能,另外還可以設定客製化指令,進而優化 GitCoder - Chatbot。
GitCoder - Chatbot 會在 init 的時候根據提供的 data 來建構 Vector DB,當使用者在 GitLab MR 留下 Comment 時,GitCoder - Chatbot 會接收來自 GitLab Comment Webhook 使用者 Comment,依據使用者的 Comment 是否匹配 Vector DB 的 Document 而有不同行為;如果符合 code review
或是 explanation
的 document
,則帶入特定的 Prompt 來加強對話的有效度,如果不匹配則直接將 Comment 給 code-llama 回應,與 code-llama 溝通的時候使用 Conversation API 將包含 diff
、prompt
以及 chat log
包成 Conversation 傳送給 code-llama,當 code-llama 完成 Inference 後再將結果回覆到使用者的討論中。
:Warning:注意
以下 GitLab 截圖皆以 v.16.6 版為參考,不同版本的 GitLab 介面可能有所不同,請依實際版本為準。
進入 GitLab Admin Area 頁面,點擊左側邊欄 Overview > Users,接著選擇 New user
。
填寫必要資料,Name、Username & Email 請自行設定(本文件以 Git-Coder 為例),Can create top level group
可以取消勾選(預設為勾選),Access level
維持預設 Regular
即可。
:Warning:注意
Username
會影響之後如何在 Merge Request 中呼叫 Git-Coder,如果不確定如何呼叫可以在所有設定完成後使用 !help
指令來確認。Access level
請勿設定成 admin 以免影響後續使用。設定完成後按下 Create user
。
Create user
完成後會跳轉至 Users 的 Account 頁面,接著點擊右上方的 Impersonate
。
切換成剛創建的使用者(本文件以 Git-Coder 為例)登入頁面後,點擊上方的使用者頭像圖示,接著選擇 Edit profile
。
從左側邊欄點選 Access Tokens
。
點選 Add new token
。
填入必要資訊,Name 可自由設定不影響使用,Token 時長可自行決定但過期時需要手動更新。
點選 Create personal access token
。
Token 創建之後請點擊右側的複製按鈕,並妥善保存此 Token。
建立 .env,如果需要啟用 auth module 可以將 ENABLE_AUTH
改為 true,屆時可以透過 admin key(可自行設定,須符合 UUIDv4)來發行其他 api key。
建立 docker-compose.yaml
執行以下指令
Code-Reviewer
加入您的 GitLab Group/Project進入要使用 GitCoder - Chatbot 的 GitLab 的 Group 或 Project,先在左側邊欄選擇 Manage
> Members
。
點擊 Invite members
。
出現 Invite members 視窗後,在 Username
欄位輸入 Git-Coder
,接著在Select a role
欄位選擇 Reporter
,最後按下 Invite 即可。
Reporter
權限,但隨著後續功能的開發可能會需要更高權限。
進入要使用 GitCoder - Chatbot 的 GitLab Project,在左側邊欄下方選擇 Settings
> Webhooks
。
點擊 Add new webhook
進入 Webhooks Settings 頁面。
URL
請輸入 http://202.5.254.102:8889/api/v1/chatbots
,Trigger
僅勾擇 Comments
。
設定 Secret token(Optional):如果有啟用 Auth 機制請在 Secret token
輸入 System Admin 提供的 API key。
關閉 SSL 驗證(Optional),最後按下 Add webhook
在 Webhook
的 URL 上加入 query string
來進行客製化,使用方式如下:
目前可供設定的參數如下:
meta-codellama-34b-instruct
、meta-codellama-13b-instruct
、meta-codellama-7b-instruct
ffm-llama2-70b-exp
、ffm-llama2-13b-exp
、ffm-llama2-7b-exp
Code Review:從 MR 當中選取想要進行 Code Review 的 diff,在 Comment 中標記 Git-Coder
讓 GitCoder - Chatbot 幫您 Code Review。
GitCoder - Chatbot 的回覆除了 code-llama 產生的結果外,還會附上 Vector DB 找到的相似 Document。如果在GitCoder - Chatbot 的回覆中沒有看到 Document 的話,可以透過 !review
指令來加強 Vector DB 的 Document。反之,可能是相似度設定閾值過高。
Code Change Explanation:從 MR 當中選取想要 Code Review 的 diff,在 Comment 標記 Git-Coder
讓 GitCoder - Chatbot 解釋 Code Change。
GitCoder - Chatbot 的回覆除了 code-llama 產生的結果外,還會附上 Vector DB 找到的相似 Document。如果在 GitCoder - Chatbot 的回覆中沒有看到 Document 的話,可以透過 !explain
指令來加強 Vector DB 的 Document。反之,可能是相似度設定閾值過高。
Free Chat:在任意的討論中標記 Git-Coder
並加上對話的內容。
Free Chat 的使用沒什麼限制,可在 MR 的任意討論中使用,但是如果在討論中沒有包含 code change 的話,那麼 diff 將不會被帶入對話中;反之,則對話中會包含 diff,因此可以詢問跟 diff 內有關的問題。
如以下案例,先讓 GitCoder - Chatbot 進行 Code Explanation,接著針對 Explanation 的內容繼續提問。
!help
:使用說明。
!score [1-10]
:可以根據 GitCoder - Chatbot 的回覆給予分數(用來評估 code-llama 和 prompt 的有效程度)。
!review add [your review msg]
: 如果您留下的 code review msg 沒有在 Vector DB 中有足夠相似的 Document 的話,可以透過指令把這個 msg 加入 Vector DB。
!explain add [your explain msg]
:如果您留下的 code change explanation msg 沒有在 Vector DB 中有足夠相似的 Document 的話,可以透過指令把這個 msg 加入 Vector DB。