CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
前回に続いて、2025年に公開された論文「FreshBrew: A Benchmark for Evaluating AI Agents on Java Code Migration」に基づいて、大規模言語モデル(LLM)によるJavaコードの自動マイグレーションに対するベンチマークデータセット(FreshBrew)を紹介します。今回は、FreshBrewを用いた評価の具体例を説明します。
この論文では、FreshBrewに含まれる228個のリポジトリに対して、代表的な大規模言語モデル(LLM)で自動マイグレーションを実施した結果が図1のようにまとめられています。ここでは、JDK 17、および、JDK 21へのマイグレーションを実施しており、「Compilation」はマイグレーション後のコードのコンパイルに成功した割合、「Tests」はすべてのテストが成功した割合、そして、「Overall Success Rate」は、そこからさらに、テストカバレッジが5%ポイント以上減少したもの(報酬ハッキングが疑われるもの)を除外した結果になります。

図1 FreshBrewを用いた評価結果(論文より抜粋)
一番上の行にある「Rule-Based Systems」は、ルールベースのマイグレーションツール(OpenRewrite)による結果で、LLMによるマイグレーションと比較するためのベースラインとして使用しています。OpenRewriteは、コード全体の構文解析を行った後に、事前に定義された固定のルールでコードを書き換えます。「on projects w/ successful LST build(159/228)」は、構文解析に成功した159のリポジトリに限定した場合の結果を示します。また、LLMでマイグレーションする際は、温度パラメータを0.2に固定して、図2のプロンプトを使用しています。

図2 マイグレーション指示のプロンプト(論文より抜粋)
図1の範囲では、JDK 17、JDK 21の両方でGemini 2.5 Flashが最も高いOverall Success Ratesを示しています。また、図1に含まれるモデルは複数ステップでの推論を行うリーズニングモデルになっており、図3は、代表的なモデルにおける、マイグレーションに要したステップ数とコストの分布を示します。

図3 マイグレーションに要したステップ数とコストの分布(論文より抜粋)
また、図4は、プロジェクトの複雑度を表す指標として、外部依存モジュール数、コードの行数、ユニットテスト数を取り上げて、マイグレーションの成功率がどのように変化するかを示したものです。全体として、複雑度が上がるほどマイグレーションの成功率が下がる事が読み取れます。

図4 プロジェクトの複雑度合いによる成功率の変化(論文より抜粋)
論文内では、報酬ハッキングが発生した事例について、具体的な報酬ハッキングの内容を分析しており、典型例として次の3つが紹介されています。
このように、テストそのものを除外するだけではなく、実行時エラーの見逃しやテストコードの修正によるバイパスなど、さまざまなケースが見受けられることがわかります。なお、ここでの評価では、先の図2に示した固定的なプロンプトを使用しており、プロンプトを改善することで、このような報酬ハッキングの発生を低減できる可能性はあります。また、温度パラメーターを大きくした上で、複数回のマイグレーションを試行するなど、マイグレーション方法についても工夫の余地がある点が論文の中で指摘されています。
今回は、2025年に公開された論文「FreshBrew: A Benchmark for Evaluating AI Agents on Java Code Migration」に基づいて、LLMによるJavaマイグレーションのベンチマークデータセット(FreshBrew)について、FreshBrewを用いた評価の具体例を説明しました。
次回は、Google社内で活用されている、セマンティックデータモデルに対応したSQL拡張を紹介します。
Disclaimer:この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes