はじめに
今回の記事は、AIChat というツールを使用して、Git のコミットメッセージを出力させる方法を記録しています。
AIChat は、ChatGPT や LocalAI などの LLM をターミナルから使用するためのツールです。
環境
- Windows10 Pro(22H2)
事前準備
ChatGPT のアカウントを持っており、API キーを取得済み且つ利用するための課金を済ませているものとして勧めます。
私は試しに$5.00
の課金をしました。
AIChat のセットアップ
AIChat のリポジトリのReleasesから aichat-v0.8.0-x86_64-pc-windows-msvc.zip をダウンロードします。
現在 Latest となっているのはバージョン0.8.0
です。
適当な箇所へダウンロードし、解凍します。解凍されたexe
ファイルを任意の場所に移動します。今回は C ドライブ直下にaichat
というフォルダを作成し移動しました。
配置したバイナリファイル(.exe ファイル)をコマンドラインから実行できるようにパスを通します。
[設定] → [システム] → [詳細情報] → [システムの詳細設定] と移動し、システムのプロパティ画面を開きます。
その中の、環境変数というボタンをクリックします。
ユーザーの環境変数内のPath
を選択し、編集をクリックします。
新規をクリックし、aichat.exe
を配置した場所を追記します。
ここまで完了したら、ターミナルを起動します。コマンドプロンプトでも問題ないと思いますが、今回はWindows Terminal
を起動しています。
起動したターミナルでaichat
と入力すると、初回起動時の設定が始まります。
PS C:\Users\xxxx> aichat
# 設定ファイルが無いので作成するか否か聞かれます
? No config file, create a new one? Yes
# APIキーを入力します
? Openai API Key:
# プロキシーを利用しているか
? Use proxy? No
# メッセージを記録するか
? Save chat messages Yes
aichat のプロンプトに移行するので、.help
コマンドを入力して出来ることを確認します。
以下、Deepl 訳
.info 情報を印刷する
.set 一時的に設定を変更する
.model モデルの選択
.prompt GPTプロンプトを追加する
.role ロールを選択します
.clear role 現在選択されているロールをクリアします
.conversation 会話を開始します。
.clear conversation 現在の会話を終了する
.history 履歴を印刷する
.clear history 履歴を消去します
.help ヘルプメッセージを表示する
.exit REPLを終了します。
コマンドから設定を変更できるのですが、面倒なので作成されたyml
ファイルを直接編集していきます。
設定ファイルは%APPDATA%\aichat
に配置されています。
Windows キー + R で [ファイル名を指定して実行] を起動して、%APPDATA%\aichat
を入力します。
config.yaml
を以下のように修正します。
api_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
save: true
model: gpt-4 # ←追記
今回はgpt-4
を使用します。
次に%APPDATA%\aichat
配下にroles.yml
を作成します。内容は以下のように作成します。
- name: commit
prompt: >
与えられた変更から素晴らしいコミットメッセージを考えてください。
変更はdiff形式で与えられます。
# 制約
- diff形式のメッセージが渡ってこなかった場合は新しくファイルが作成されたものとして、「add: [コミットメッセージ]」の形式でコミットメッセージを日本語で1行で出力する
- 新しくファイルが更新されている場合は、「update: [コミットメッセージ]」の形式でコミットメッセージを日本語で1行で出力する
- 新しくファイルが削除されている場合は、「delete: [コミットメッセージ]」の形式でコミットメッセージを日本語で1行で出力する
- コミットメッセージのみ出力し、その他の説明などは省く
ここは適宜、出力したいコメントが得られるように修正して下さい。
実際に使用する
PowerShell を使用しても動作しますが文字コードの関係で文 字化けしたり、Linux 形式のコマンドが利用できなかったり不便だったので、Git インストール時に使用できるGitbash
を使用します。
試しに、aichat を自動でセットアップするリポジトリのコミットメッセージを出力させてみます。
ファイルをadd
してコミットメッセージを出力させます。ファイルは新しく作成されたものです。
git diff --cached
では、ステージングエリアにステ ージされていて、まだコミットされていないファイルの内容の差分を表示します。
git add run.bat
git commit -m "`aichat -r commit \"$(git diff --cached)\"`"
[main aa6e6ba] add: 新しいファイルを追加
1 file changed, 15 insertions(+)
create mode 100644 run.bat
コミットメッセージが出力されました。試しにプッシュしてみます。
正しく追加されていました。次のファイルも同様にコミットメッセージを出力させます。
git add .
git commit -m "`aichat -r commit \"$(git diff --cached)\"`"
[main 12aa525] add: AIChatをインストールするためのPowerShellスクリプトを追加しました。
1 file changed, 27 insertions(+)
create mode 100644 setup.ps1
先程とは違うコミットメッセージが出力されました。
注意点 としてgit add .
のようにまとめてファイルを追加すると、精度が下がる印象があったので個別にファイルをadd
してからaichat -r commit \"$(git diff --cached)\"
を実行したほうが良いと感じました。
また、今回のやり方ではコマンドを実行した時点でコミットメッセージが確定してしまうので、一度作成されたコミットメッセージを確認したい場合はaichat -r commit \"$(git diff --cached)\"
を実行します。
直前のコミットを取り消したい場合はgit reset --soft HEAD~1
を実行すると、直前のコミットがステージングエリアに登録された状態に戻ります。
自動設置するスクリプト
AIChat をセットアップする解説をしましたが、上記の手順を自動化するスクリプトを作成しました。
run.bat
ファイルを管理者権限で実行すれば、記事内で解説したフォルダへの設置と環境変数の設定も自動で行われます。
最後に
AIChat に git のコミットメッセージを書いてもらう方法を見てきました。
使用した感じかなり便利だったので、今後もシステム開発では様々な場所で AI が活用される気がします。