讓AI 幫你生成 git 提交資訊
theme: condensed-night-purple highlight: atelier-cave-light
在協同開發的專案中,我們肯定避免不了使用git提交程式碼,所以經常會看到了一些描述不清的提交資訊。當遇到種情況時,我們也不必為此責怪開發人員,因為我們確實很難記住你在 git 提交時剛剛做了什麼。
一個使用 AI 幫您編寫 git 提交訊息的 CLI
什麼是 Nultope/aicommits?
Aicommits 是一個 CLI(腳手架),它可以使用 AI 為你編寫 git 提交訊息。
它是如何工作的?
本篇文章本意是著重介紹程式碼的 AI 部分,但一開啟 GitHub,我驚奇地看到了 TABS、jk的使用。這就很有意思,因為 CLI 工具cleye這個工具也是用到了TABS、jk,它給我留下了深刻的印象。我以前也搭建過一些 CLI,而這個 cleye 是在命令列上構建 aicommits 互動的首選工具。這是它很優秀的地方。
如果您想檢視 CLI 實現,可以快速閱讀src/cli.ts。
``` // src/cli.ts
const request = https.request({
port: 443,
hostname: 'api.openai.com',
path: '/v1/completions',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': postContent.length,
Authorization: Bearer ${apiKey}
,
},
... ```
到目前為止,我還沒有用 OpenAI 構建任何東西,但上面的示例很好的說明了人們應該去如何配置它。
現在檢視程式碼src/utils/openai.ts,我們可以看到正在呼叫 OpenAI 並使用/v1/completions路徑。根據 README的說明,這不是 ChatGPT 補全,而是常規 GTP-3 文字補全。
在 REST 呼叫之後,我們會先執行響應清理和錯誤檢查器。這是不能繞過的步驟的,因為 OpenAI 經常會遇見停機和伺服器負載。
``` // src/utils/openai.ts
if (response.statusCode === 500) { errorMessage += '; 檢視 API 狀態: http://status.openai.com'; } ```
最後,看一下createCompletion函式,這才是真正實現功能的地方。
我在下面留下了關於每一行在做什麼的解釋
``` // src/utils/openai.ts
const completion = await createCompletion(apiKey, { model, // text-davinci-003 - 用於更長的輸出和一致的指令 prompt, // nutlope提供的promptTemplate temperature: 0.7, // 數字越大,輸出越隨機 top_p: 1, // 類似溫度但結果不同 frequency_penalty: 0, // 降低模型重複同一行的可能性 presence_penalty: 0, // 增加模型談論新話題的可能性 max_tokens: 200, // 這將要花你多少錢? stream: false, // 部分訊息傳送關閉 n: completions, // 為每個輸入訊息生成多少個聊天完成選項 }); ```
還有很多我想深入挖掘,但我把剩下的留給你們看。我建議在本地安裝 aicommits 進行試用。前提是你已經註冊了 OpenAI 已經添加了你的令牌。
本文正在參加「金石計劃」