ChatGPT にコミットメッセージを考えてもらう CLI ツールを作った
2023/05/05
最近はコミットメッセージを ChatGPT に考えてもらっている
指示の入力と差分のコピペが面倒になったので、CLI ツールを作った
ツール名も ChatGPT に考えてもらった
インストール方法と使い方
インストール
Deno で作った
$ deno install --allow-env --allow-run --allow-net --allow-read https://deno.land/x/commit_genius/cg.ts
✅ Successfully installed cg
$ cg --version
cg v0.4.0
使い方
環境変数に OpenAPI の API キーをセット
$ export OPENAI_ACCESS_TOKEN=sk-HogehogeXXX
git add
して、コマンド叩けばコミットメッセージの候補が出てくる
$ git add .
$ cg
Possible commit message suggestions:
- Update installation guide (インストールガイドを更新)
- Add --allow-write flag to installation command (インストールコマンドに --allow-write フラグを追加)
- Update README.md with usage examples (README.mdを使用例付きで更新)
日本語も欲しかったので表示するようにしている(後々オプションで表示・非表示に選べるようにする予定)
どうして作った?
正直、n 番煎じでこれより高機能なものをあるけど、自分のユースケースにピッタリ当てはまるものじゃなかったのと CLI ツールを作る知見を貯めたかったから作った
どうして Deno ?
deno の良いところはしばらくずっと Go に覇権が渡っていた「気軽に配布できるちょい cli を書く」を ts で書ける所だと思ってるんだけど、一部の人にしか浸透してないので少し残念。
— mattn (@mattn_jp) August 24, 2021
本当にこれで、CLI ツールは今までに Go や Ruby でも作ったことがあるけど、サクッと作って気軽に配布できるという点が良くて Deno を選んだ
プロンプト
現時点ではこんな感じの指示を与えている
あなたは与えられた git diff の結果からコミットメッセージを考えるアシスタントです。
英語でのコミットメッセージの候補を出力してください。
それぞれの日本語訳も欲しいです。
出力例:
Possible commit message suggestions:
- commit messages 1 (日本語訳1)
- commit messages 2 (日本語訳2)
- commit messages 3 (日本語訳3)
所感
精度はそれなりに良かったが、微妙な場合もあった
変数名や関数名が明確ではなかったり、コミットの粒度が大きかったりすると微妙な結果になっている気がする
簡易的なコードレビューとしても使えると感じた
今後の展望
OSS に PR を出す用に変更内容の要約も出力するオプションも追加したいと思っている