TL;DRPallasは、AI…
TL;DR
LLM開発エージェントが仕様書をどれだけ守るかを、実行結果で判定するベンチマークを提案。Oracle→PostgreSQL移行タスクで検証したところ、仕様書は「実行可能なコードが生成される確率」を72.0%→97.3%に向上させた一方、実装者間の合意率は83.1%→83.8%とほぼ変わらず、データ正解率も42件中19件のままでした。つまり、仕様書は「動くコード」には効くが、「実装者間の一致」や「データの正しさ」には効かないという重要な示唆が得られています。
解説
ねえ智也くん、このブログのタイトル見て!「仕様書がLLMの出力を本当に決めるのか?」って。なんか面白そうじゃない?
ああ、それね。要するに、LLMにコード生成させる時に仕様書を渡すと、ちゃんと守ってくれるのかを実行結果で確かめた研究だよ。
へー、実行結果で判定するんだ。でも、なんでわざわざ実行する必要があるの?
だって、LLMが生成したコードが仕様書と合ってるかどうか、見た目だけじゃわからないからね。実際に動かしてみて、正しい結果が出るかどうかを見るのが一番確実なんだ。
なるほどね。で、どんなタスクで試したの?
OracleからPostgreSQLへの移行タスクだよ。データベースの移行って、仕様書が重要そうな典型的な例だからね。
それで、結果はどうだったの?
仕様書があると、実行可能なコードが生成される確率が72%から97.3%に上がったんだ。つまり、仕様書は「動くコード」を作るのにはかなり効果があるってこと。
おー、すごい!じゃあ仕様書はやっぱり大事なんだね。
でも、ここからが面白いところで、実装者間の合意率は83.1%から83.8%にしか上がらなかったんだ。つまり、仕様書があっても、人によって解釈が違って、結果がばらつくってこと。
え、そうなの?じゃあ、仕様書があってもみんな同じコードを作るわけじゃないんだね。
そう。さらに、データの正解率も42件中19件のままで、全然変わらなかったんだ。つまり、仕様書は「動くコード」には効くけど、「実装者間の一致」や「データの正しさ」には効かないってこと。
へー、それは意外だね。仕様書って万能じゃないんだね。でも、なんでデータの正しさには効かないの?
たぶん、仕様書がデータの詳細まで細かく指定してないからだと思う。移行タスクだと、データの変換ルールとかが曖昧だと、正しい結果にならないんだよ。
なるほどね。じゃあ、この研究の限界って何かあるの?
まず、タスクがOracleからPostgreSQLへの移行だけだから、他のタスクでも同じことが言えるかはわからない。あと、使ったLLMが特定のものだけだから、他のモデルでも結果が同じかは不明だね。
なるほどね。でも、仕様書が「動くコード」には効くってのは、結構実用的な発見だと思うよ。
そうだね。ただ、仕様書を書くのも大変だから、そのコストと効果を天秤にかける必要があるね。
うーん、でも仕様書を書くのが大変なら、AIに仕様書を書かせればいいんじゃない?
それだと、また仕様書の品質が問題になるから、結局同じことになるよ。
あはは、確かに。じゃあ、仕様書を書くAIとコードを書くAIが喧嘩しないように、仲裁AIも必要だね!
それ、結局人間がやるべきことだと思うけどね。