🍱

ChatGPTのAPIを利用してGitのブランチ名・コミットメッセージを自動生成するbentoを作りました

2024/07/06に公開

https://github.com/catatsuy/bento

使い方は柔軟ですが、自分が使っている方法を紹介します。

まず環境変数OPENAI_API_KEYにChatGPTのAPIのtokenをセットします。

~/.gitconfigに以下の設定を足します。

[alias]
sb = !git diff -w | bento -branch -model "gpt-4o"
sc = !git diff -w --staged | bento -commit -model "gpt-4o"

git sbでブランチ名推薦、git scでコミットメッセージ推薦をしてくれます。-modelでモデルを指定できますが、精度や速度の問題でgpt-4oがおすすめです。

色々使った結果、実際にGitのフローで使う場合、以下のことを考える必要があります。

  • ブランチ名を作りたい時はaddする前
    • 新規ファイルは特に自動生成のファイルだとかなり大きくなることがあり、そういうときはChatGPTのAPIに乗らないので対象に含めたくないことが多い
    • ブランチ名は人やプロジェクトによって流儀もあるので、推薦として利用する単語を出してもらうだけで十分
  • コミットメッセージを作るのに使いたいファイルはすべてとは限らない
    • 新規ファイルは特に自動生成のファイルだとかなり大きくなることがあり、そういうときはChatGPTのAPIに乗らないので対象に含めたくないことが多い
    • コミットメッセージも適宜修正したいので推薦だけして欲しい

ということで以下のシンプルな設計が使いやすいと考えています。

  • gitの操作はgitでやり、git diff経由で差分を受け取ることでシンプルなツールで汎用的なツールを目指す
    • git diffでは新規ファイルの差分は表示されないが、git add -Nすると表示されるようになるのでgit操作で適宜変更できる
  • コミットメッセージを作るときはコミットメッセージ生成に使いたいファイルだけをまずはgit addしてコミットメッセージを生成した後に、本当にコミットしたいファイルもaddするように
    • かなり柔軟に使うことができる

ということで便利なので使ってみてください。実際に使わないと便利さが伝わらない気がしています。自分はもう最近はほとんどブランチ名もコミットメッセージも1から考えていません。

名前の理由

Benri Translator and Optimizerの略です。

そして弁当箱のように色んな機能を提供していることもあります。なので発音も弁当で大丈夫です。

Tips

かなり柔軟にカスタマイズすることができます。git周りで使いたいならSingle Modeにする必要があるので-singleオプションを渡します。その後にプロンプトを渡す必要があるので-promptにプロンプトを渡します。

Multi Modeというのもあり、これは複数回ChatGPTのAPIを呼び出すもので、翻訳など様々な用途に使えます。git周りだと1つにまとめないと意味がないので使えません。気軽に使えるように-translateオプションも利用できるようになっています。

Discussion