解説ねえねえ智也くん!この論文…
TL;DR
RepoReasonerは、LLMが複数ファイルにまたがるコードの実行結果を予測する「Output Prediction」と、実行時に呼ばれるファイルの連鎖を特定する「Call Chain Prediction」の2タスクで、リポジトリレベルの推論能力を評価するベンチマークです。7モデルを評価した結果、最良モデルでもOutput Predictionの正解率は69.1%にとどまり、長いコンテキストが逆効果になるケースや、記憶に頼った推論の限界が明らかになりました。
解説
ねえ智也くん、今日のブログの「RepoReasoner」って何?なんか難しそうなタイトルだけど…
ああ、リポジトリ全体のコード推論を評価するベンチマークだよ。LLMが複数ファイルにまたがるコードを理解できるかどうかを測るんだ。
へえ、普通のコード生成ベンチマークとは違うの?
そう。既存のは単一ファイルや関数単位が多いけど、現実の開発では複数ファイルを跨いで処理を追う必要がある。そこでRepoReasonerは2つのタスクを用意したんだ。
2つ?どんなタスク?
一つは「Output Prediction」で、コード全体を実行した結果を予測する。もう一つは「Call Chain Prediction」で、実行時にどのファイルがどう呼ばれるかの連鎖を特定する。
なるほど!それで、どんなモデルを試したの?
GPT-4やClaude、Llama系など7モデル。結果は最良でもOutput Predictionの正解率が69.1%だった。
え、意外と低いんだね。もっとできると思ってた。
ああ。特に長いコンテキストを与えると逆に精度が下がるケースがあった。あと、モデルが記憶に頼って推論する限界も見えた。
記憶に頼るって、どういうこと?
例えば、よくあるパターンを覚えていて、実際のコードの流れを無視して答える感じ。リポジトリ全体をちゃんと読めてないんだ。
じゃあ、このベンチマークの意義は、そういう弱点を可視化したってこと?
そう。リポジトリレベルの推論能力を評価する枠組みを提供したのが大きい。今後のモデル改善に役立つはず。
でも、まだ限界もあるんでしょ?
うん。評価に使ったリポジトリの規模が限られてるし、タスクも2つだけ。もっと多様なシナリオが必要だと思う。
ふーん…じゃあ、このベンチマークで満点取れたら、AIはもう人間のプログラマーを超えるのかな?
いや、まだまだ。コードの意図や設計思想を理解するのは別問題だよ。
そっか。でも、もしAIがRepoReasonerで100%取ったら、智也くんの仕事がなくなるかもね?
…その前に、まずはお前がコード書けるようになれよ。