どうもTORAです。
仕事で、AIエージェントにJavaのコードを書かせています。
当然、そのまま好き勝手に書かせているわけではなくて、プロジェクトで決めている実装ルールをInstructionsに書いて、それを読ませた上で作らせています。
最初は僕も、Instructionsって「こういうふうに作ってください」っていうことを書くものだと思ってたんですよね。
この場合はこのクラスを使うとか、こういう処理はここに書くとか、ログはこう出すとか。
要は、AIにやってほしいことを書く。
でも実際に何回も作らせていると、だんだんそれだけじゃ足りなくなってきました。
「これは使わない」とか、「これはここに書かない」とか、「このやり方は禁止」とか。
気づいたら、「やってほしいこと」より「やるな」の方が増えてきたんですよね。
動くんですよ、普通に
たとえば、こっちでは使わないことにしているやり方をAIが普通に使ってくることがありました。
トランザクションを僕らが置いてほしくないところに付けたり、SQLでSELECT *を書いたり、ログもこっちでは使わない出し方をしたり。
で、これがややこしいんですけど、別に全部が間違ってるわけじゃないんですよ。
動くんですよ、普通に。
Javaとして見れば、それでも別におかしくない。
ただ、僕らはそのやり方を選んでない。
システム開発って、同じことをやるにしても方法はいくつもあるじゃないですか。
AIはその方法をものすごくたくさん知っている。でも、その中で「このプロジェクトではこれにした」というところまでは、こっちが書かないと分からない。
ここは実際に使ってみて、結構大きいなと思いました。
書いてあるのに、そっち真似すんの
それで、AIが違うやり方をしてきたらInstructionsを直していきました。
最初はまだ、「この場合はこちらを使ってください」みたいに書いてたんです。
でも、それでも違う方を使うことがある。
あと、これはちょっと面白かったんですけど、Instructionsにはちゃんと書いてあるのに、近くに違う書き方をした既存コードがあると、そっちを真似することがありました。
「そっち真似すんの」と思って。
まあ人間でも、既存コードがあったら普通に参考にするので、考えてみれば分からなくもないんですけどね。
なので途中から、
「こっちを使う」
だけじゃなくて、
「こっちは使わない。代わりにこっちを使う」
まで書くようになりました。
それと、禁止だけ書いてもダメで、なぜそうしているのかとか、代わりにどうするのかも書く。
そこまで書くと、だいぶ言うことを聞くようになりました。
書いてなかったこっちも悪い
で、こういうことをずっとやってると、別のことにも気づいたんですよね。
AI向けに細かく書いたInstructionsって、人が読んでも普通に分かりやすいんです。
今までの開発ルールって、結構「まあこれは分かるよね」で済ませてるところがある。
経験ある人なら分かるし、既存コードを見れば察しもつく。でも経験が浅い人には分からないこともある。
AIはその辺を普通に踏んでくる。
だから「ああ、これ書いてなかったこっちも悪いな」ってなることが結構ありました。
今は、Instructionsって最初から完璧に作るものではないと思っています。
AIに作らせて、変なことをしたら人が見つけて、なんでそうしたのか考えて、必要ならInstructionsに戻す。
そんな感じで増えていきました。
最初は「何をやってほしいか」を書いていたはずなんですけどね。
今はむしろ、「何をやってほしくないか」の方を先に考えるようになっています。
