第55回目の閑古鳥ラジオは、AIにコミットメッセージを書かせたい話をしました
目次: エディタ何使ってる? / VSCode と Zed / Generate Commit Message ボタン / custom endpoint を持ち込むといけるぜ
★Fix 方法
1. https://code.visualstudio.com/docs/agent-customization/language-models#_add-a-custom-endpoint-model を参考に custom endpoint を設定
2. `chat.utilitySmallModel` に custom endpoint を指定
▼ 閑古鳥ラジオとは
関東でソフトウェアエンジニアをしているかんべとおおもりがざっくばらんに話す雑談Podcastです。
週一配信。めざせ100回!
感想
まだ感想はありません。最初の1件を書きましょう!
サマリー
今回の閑古鳥ラジオでは、AIにコミットメッセージを書かせる方法について話しました。VSCodeのコミットメッセージ生成機能に不具合があり、カスタムインストラクションを設定すると生成できなくなる問題が発生しています。この問題を解決するには、カスタムエンドポイントを設定し、任意のLLMモデルを利用する方法が紹介されました。AIにコミットメッセージを書かせることで、コミットの単位を適切に分割する助けにもなるという利点も語られました。
00:09
はい、どうもかんべです。
大森です。かんべと大森の閑古鳥ラジオ始まります。 このポッドキャストは、友人2人がダラッと話す雑談ポッドキャストです。よろしくお願いします。
よろしくお願いします。
開発環境とエディタについて
はい、ということで、久々の技術会というところで、先週ですね、自分が社内のLT会でちょっと話した内容、最近困って解決したよって内容を、なんか共有して話していけたらなと思っているんですけれども、大森さん普段開発、コーディングしてるかどうかという話と、コーディングのエディターとかって何使ってるとかってありますか?
開発は、Zってやつ使ってますね。
あ、Z。はいはいはい。
ZED。
はいはいはい。
ラストで書かれてて、すごい起動が早いんですよね。
なんかVSコードとか使って、いろんなエクステンション入れまくって起動がしぬほど遅くなるみたいなのがあるあるだと思うんですけど、
一通りの開発ができた上で、悪いっていうのが好きで、AI時代、コードはあんま書かないけど、読みたいっていう時に便利です。
エクステンションは特に入れられるとか、Zのエクステンションが結構しっかりしてるんですか?
Zの、なんかデフォルトで入ってるやつで結構十分って感じですね。
メインで書く。自分は5とかタイプスクリプトを書くんですけど、その辺であればもう純正、最初から入ってるやつで結構うまいこといくっていう感じでございます。
なるほど。そもそもエクステンション何入れてるもんでも結構あるかなと思うんですけど。
いやーありますよね。人ごとに結構好みがある気がする。
自分は今、画面共有見たら全然入ってなかったわ。こんだけすぎるな。ほぼ何も入ってない。
それでも知らんもんあるな。ノードってなんだ?
ノード、この色ですね。今自分のVS Codeの中にいるとこの色合いが。
君のVS Codeが今シェアされてるんですけど。
これがVS Codeの色合い。カラーテーマですね、これ。
分かんない。なんかVS CodeのPDF表記とハイライト。これ家なんであれですね。あんまり開発みたいなことしてないから。
でもこれですね。トレーニングスペースが全格とか入ってますね、WSLの中に。
ASTROとか何やってるか分かりやすいんですけど。スペルチェッカーとかここら辺かね。入ってるっていう話なんですけど。
ZEDの人はちょっとあんまりためにならないかなと思うんですけど。自分はVS Codeよく使っていますと。
結構使ってる方いるかなと思っていて。
AIによるコミットメッセージ生成の現状と課題
あと最近はもうAIにコミットを書かせる。コミットって皆さんどこで書いてますっていうのがあって。
もうAIがコミットしてますよ。
AIがコミットするっていうと、例えばVS Codeの場合はここからスキルみたいなの作って、コミットのスキル作って、コミットのときはこのスキル叩くよみたいなことを結構やるかなと思って。
もう多分そういう世の中になってるんですよね、基本的には。
なんでかというと、AIが勝手にコミットするのもいいけど、自分なりにコミットはこういうものだみたいなルールがあったときは、ゲネレートスキルとかでコミットのスキルを作りましょうみたいな。
リポジトリごととかチームごととかでコミットの流儀みたいなのがあるだろうから、それをスキルとして固めてっていうのはありますね。
皆さんもこれを使ってるかなと思うんですけど、基本は古き良き人間なので、まだそんな新しいのに慣れていないので、ここですね。
VS CodeのソースコントロールのGitの画面。
左側にGitの見える画面になるけど、このGitの上の画面にGenerate CommitMessageっていうボタンがあるんですよ。
自分これでコミットを生成してるんですね。
コミットを生成とかコミットメッセージを作っている。
コミットっていうメッセージですね。
ここは、ただここ、自分なりに書きたい場合は、セッティングスの画面って開いたら大森さんも見えている。
見えてますよ。
VS Codeのセッティングス、JSONが見えている。
VS Codeのセッティングスの画面のGitHub Copilot Chat CommitMessage Generation Instructionsに書くとコミットメッセージが生成できますよっていう記事が調べるとたくさん出てくるんですね。
システムプロンプトみたいな感じで守らせることができるよっていうことですかね。
そうそう。
出てくるんですけど、これ、一周が生えてまして、5月から不具合でコミットメッセージが生成できないっていう。
ここに記載があるとコミットメッセージが生成できないんですよ。
今ボタンを押してみたんですけど、生成できないじゃないですか。基本的にこのJSONのPMPが更新されてるんだけど、生成できないと。
インストラクションに何か書いてるとコミットメッセージの生成ができない。
なんで、ここを全部消して、これもいらんね、ごめんなさい。
こうしてあげて、こうするとたぶん生成ができますね。
インストラクションのコードをコメントアウトすることでいけます。
これ5月から言われていて、5月からの不具合で報告されてるのに、誰もここを直さないと。
コミットメッセージ生成不具合の原因と解決策
なぜかっていうと、大西さんもさっき言うように、世の中はもうスキルで書いちゃう。
AIのキャットに書かせちゃうので、このボタンを押してる人がほぼいない。
このVS Codeなのにも関わらずですよ。
VS Codeの隠されたボタンじゃないんですよね。
このコミットってところの見やすいところにあるはずのボタン。
一番表面に出てるはずのボタンなのにも関わらず、
それを設定を変えてる人も少ないかもしれないですけど、
設定を書き換えたっていう人の中では使われないっていうのが。
最近気づいたことっていうか、最近の悩みでして。
悩み、はい。
悩みですね。ここのボタンでコミットしてるのにコミットができないと困ったと。
確かに困りますね。
何が悪かったかっていうと、
VS Codeのここのコミットを行うAIのモデルが埋めれるんですよね。
設定のUtility Small Modelっていうので決まるらしいんですよ。
JSONでいじれると。
これデフォルトっていうのになってるんですけど、
このどうやらデフォルトが結構厳しい設定になってると。
厳しいって何が厳しいんですか?
なんかフィードバックループみたいな変な値が入らないようにするみたいなAIの機構があるじゃないですか。
何ていうの。名前が。
ガードレールかな。
ガードレール的なのが厳しくなっていて、
インストラクションにほとんどの文章を書くと大体ガードレールに引っかかって、
生成できなくなるっていう。
なるほど。インストラクションに入れるとそのガイドラインみたいなやつが、
何を入れようがガードレールに弾かれるせいで何も出てこないっていうのが起きてることなんですね。
はい。いろんな人が日本語もできないし英語もできないしアラビア語もできないと。
空盛りなら行けたよみたいな。意味ないがみたいなね。
設定に入れたいけどどうしたらいいっていう一瞬に空文字を順序すると通りましたみたいなのが来るみたいな。
困っちゃってたんですね。これ困ってるんですけど、
これどうしたらいいかっていうのが最近もう一個GitHubコパイロットで、
保管だったらそんな昔からできるかって話ではあるかもしれないけど、
カスタムエンドポイントをようやく持ち込めるようになったんですよね。
モデルでいろいろモデルを選べるんですけど、
その中でカスタムエンドポイントみたいなのを設定できるようになったんですよ。
これで例えばローカルのLLMだったりとか、
あとは家だと会社がある使ってるエンドポイントに対して、
LightLLMを返してオープンAI風にプロキッシュさせたものをここに読ませるみたいなことができるようになったんですね。
こんな感じで。
していしてい。
そうして指定してあげて、ネームとかURLとか指定してあげると。
カスタムエンドポイントを持ち込むと、さっきのセッティングスの
ユーティリティスモールモデルからカスタムエンドポイントが選べるようになるんですね。
デフォルトしか選べないはずで、それ以上選べるのには契約が違うのかな。
有料版のものしかデフォルト以外選べないみたいな設定になってるのが、
プルダウンにカスタムエンドポイントが入るようになるんですよ。
それを増やすことによって、カスタムエンドポイントに対して
コミット生成をさせることができるようになるっていうのが最近気づいたことで。
気づいたっていうか。
なるほど。
公式のモデルだとダメだから、他の任意のモデルで大丈夫そうなモデルを使うことで、
その機能が復活するということですね。
そうですね、はい。
いい話。
いい話というか、これを多分やってる人は誰もいなくて。
書いとけばいいじゃん。一周に。
一周に書かないといけない。カスタムエンドポイントを持ち込むとできるよみたいな。
書いてあるといいんですけど。
カスタムエンドポイントを持ちることってあんまないと思っていて、普段。
会社がカスタムエンドポイントで叩けるAPIがあるから、使ってみるかって使ってるだけで。
個人で使う場合は、もうGitHubコパイロットダメだからコーデックスで書こうみたいな感じでコーデックスで書いてるので。
もう誰も使ってないことではあるんですけど、最近そういうのでコミットを書くようにしてるっていうのと、
AIにコミットメッセージを書かせるメリットと現状
これ何がいいかっていうとあれですね、コミットをAIに書かせることによって、
適切なコミットの単位で分けてくれるからいいかなと思ってて。
すごいデカい。
それってそうなんですか?
クソデカコミット。ステージの内容を読んでくれるので。
ステージするのは人間の仕事ではないんですか?
ステージするのが人間の仕事なんですけど、ここでコミットを作ったときに、
人間の仕事かわかんないけど、適当に作ってステージングさせたときに、
今言うと1行なんですけど、クソデカ内容をコミットすると何行かに分かれるんですよ。
AIが生成する文章が。
その時点でこのコミットはデカすぎるなっていうのが判断できるので、
短く分けるみたいなことをやってたりしますね。
でもそういうのも全部スキル図に書いて、全部AIに任せろって話もありつつ、
全部AIに任せていなかったりするので、任せてる内容と任せてない内容があったりするので、
ここも使いつつで両極端で最近自分は書いてるかなとは思ってますね。
なるほど。
やっぱりもう全部フルAI。
フルAIですね。
コードを読むのにソースコントロールとかから、何だろう、作文を見るよとかは稀にやりますけど、
別にそこから手ではやらないな。
もうここで直す時も全部書いちゃう。
ここで直してって言っちゃう。
直してって言うし、これでコミットしてって言うしですかね。
そうですよね。世の中はそういう世の中になってるので、
3ヶ月もこんな分かりやすいデフォルトの設定をちょっと書き換えて動かないっていうものが放置されてるっていう現状なんでしょうね。
もう誰もコードを書いてないんだなっていう、自分の手でコミットしてる人間。
自分の手でもないですよね、これは。
AIにコミットメッセージを書かしているので。
どちらかというとコミットメッセージはAIに書かせてるんですけど、自分の手でコミットをしてる。
コミットを単語してコミットしてる人間がもういないんだろうなっていうのは感じますね、最近。
そういう世の中になってしまいました。
そうですね。いろいろありますね。
まとめと今後の展望
いろいろあります。というのが今回のお話でした。
みなさんはスキル図で書かせましょうと言いつつ、手で温かくコミットしつつ、コミットメッセージはちょっと生成がめんどくさいぞっていうと、こういう方法もありますっていうのを紹介したので、どっかでブログに書いたりか、Issueにコメントしたりとかしないとなーって思ってる、今日この頃です。
せめてIssueにコメントしてあげたら何人かは救われると思うんで。
やってみてください。
お願いします。
誰が見てるかわかんないけどね。
見てるでしょ。だってけっこうDuplicateのIssue作られてるから、みんな困ってはいるんだと思うけどね。
まあ、確かに。
日本人も困ってるし、チェコの人も困ってるし。
でも、2dayagozにIssueが作られてる。
本当だ。なんか毎回みんながBugFixって言ってるけど、直したりはしてないんだな。
なるほど。
お願いします。
以上です。
という感じで、1回15分ぐらいですかね。ゆるゆる雑談していければと思います。
じゃあ今回はこれで終わります。ありがとうございました。
ありがとうございました。
コメント
スクロール