aicommitsによるgitコミットメッセージの自動生成を試す
OpenAIを使ってgitのコミットメッセージを自動作成するツールを見つけたので試してみました。
導入方法
npm
コマンドで簡単にインストールできます。
※brew対応のissueが上がっているようなので、近く実装されるかもしれません。
Install aicommits:
npm install -g aicommits
- Retrieve your API key from OpenAI
Note: If you haven't already, you'll have to create an account and set up billing.
- Set the key so aicommits can use it:
aicommits config set OPENAI_KEY=<your token>
This will create a .aicommits file in your home directory.
補足:OpenAIのAPI key作成と設定
手順にあるようにOpenAIのAPI keyが必要になるので、予め作成しておきましょう。
aicommits config set OPENAI_KEY=<your token>
を実行すると、~/.aicommits
が作成されます。
API keyは平文で保存されるので、取り扱いには注意しましょう。
hello.goを修正してコミットメッセージを生成してみる
Goのサンプルプロジェクトをcloneして、動きを確認してみます。
hello/hello.go
はstringutil.Reverse
を使い!selpmaxe oG ,olleH
を逆から並び替てHello, Go examples!
と表示するコードです。
package main
import (
"fmt"
"golang.org/x/example/stringutil"
)
func main() {
fmt.Println(stringutil.Reverse("!selpmaxe oG ,olleH"))
}
これを修正しstringutil.Reverse
を削除してみましょう。
diffは以下の通り。
func main() {
- fmt.Println(stringutil.Reverse("!selpmaxe oG ,olleH"))
+ fmt.Println("!selpmaxe oG ,olleH")
}
git add .
に続いてaicommits
を実行してみましょう。
コミットメッセージの候補として、Update main to print string without reversing
が表示されました!
ここでYes
を選択すると、このメッセージとともにcommitされます。
HTMLを修正してみる
次はoutyet/main.go
をいじってみましょう。
これはGoのリリースバージョンをチェックして、結果に応じたHTMLを返すwebサーバを立ち上げます。
HTMLのテンプレート部は以下の通り。
// tmpl is the HTML template that drives the user interface.
var tmpl = template.Must(template.New("tmpl").Parse(`
<!DOCTYPE html><html><body><center>
<h2>Is Go {{.Version}} out yet?</h2>
<h1>
{{if .Yes}}
<a href="{{.URL}}">YES!</a>
{{else}}
No. :-(
{{end}}
</h1>
</center></body></html>
`))
これを日本語に修正してみましょう。
-<!DOCTYPE html><html><body><center>
- <h2>Is Go {{.Version}} out yet?</h2>
+<!DOCTYPE html><html>
+<head lang="ja">
+ <meta charset="utf-8">
+ <title>Goのリリース</title>
+</head>
+<body><center>
+ <h2>Go {{.Version}} はリリースされた?</h2>
<h1>
{{if .Yes}}
- <a href="{{.URL}}">YES!</a>
+ <a href="{{.URL}}"はい!</a>
{{else}}
- No. :-(
+ いいえ、まだです。 :-(
{{end}}
</h1>
続いてgit add .
とaicommits
を実行します。
Update HTML template to include Japanese translation
と表示されました!
感想
いかがでしょう?今回はかなり簡単な差分しかテストしていませんが、過不足ないメッセージが作成されていたのではないでしょうか?
コード量が増えた場合にどのようなレスポンスが得られるのか非常に気になるところです。時間を見つけて、もう少し複雑な事例を試してみたいと思います。
注意点
- このツールは
git diff
からコード変更を取得しOpenAIのGPT-3に送信しています。OpenAIの利用規約を理解した上で利用し、秘匿情報等の送信はご自身の責任の元で行ってください。 - 本稿執筆時点の最新版
v1.3.0
を使っていたところ、OpenAI API Error: 400 - Bad Request
が表示されることが頻繁に発生しました。issueで報告もされていますので、もし同じ現象で困った方は、npm install -g aicommits@1.2.0
等で過去バージョンを試してみてください。
参考
SARAHでは一皿に特化したごはん情報の投稿・配信・収集・解析するサービスをtoC,toBと多角的に展開しています。アプリ / Web / SaaS / データサイエンス を最新の環境と技術で広く運用します。 技術スタック詳細はこちら→ stackshare.io/companies/sarah-inc
Discussion