表示
超・人工知能研究所 Super AI Research Lab トップへ超・人工知能研究所AI Research Lab / ぱそ太郎工事中

since
平成38年9月29日

← 検索結果に戻る

実際のPythonクラス生成では、合成課題よりテスト通過率が低い

RealClassEval

保存した記事を見るこのブラウザに保存します。無料会員で端末間の同期・フォルダ整理

概要

  • 実コード由来のPythonクラス各200件を2群に分け、7モデルの生成結果を評価した。
  • テスト通過率は合成課題の83.60~88.27%に対し、実課題では24.59~33.60%だった。
  • 部分的な説明文への検索拡張は4~7%の改善を報告したが、依存関係の誤りにも注意が要る。
補足:編集した模式図で仕組みを確認する

VISUAL EXPLAINER

図でつかむ、RealClassEvalの仕組み

左から右へ読む
  1. 01公開コードのクラス
  2. 02骨格と説明文を抽出
  3. 03必要に応じ実装例を検索
  4. 04クラス実装を生成

原論文の説明をもとにした模式図です。処理の細部は省略しています。

研究の背景

RealClassEvalは、生成AIが実際のソフトウェアにあるPythonクラスをどこまで正しく実装できるかを測る評価セットである。クラスは複数のメソッドや属性を一体として扱う単位で、1つの関数が動くだけでは、ほかの部分との整合性は確かめられない。

開発支援の導入判断を合成課題の成績だけで行うと、プロジェクト固有の依存関係による失敗を見落としかねない。著者らは実コード由来の課題を設け、説明文と検索で補える範囲も調べた。

手法

著者らは公開プロジェクトのPythonコードからクラスを抽出し、クラス名、メソッドの引数、説明文を残して実装部分を空にした。古い群はCodeSearchNet由来、新しい群は2025年3月31日より後に作られたリポジトリ由来で、各200クラスを抽出した。モデルには骨格を渡し、クラス全体を一度に実装させる。

一部の条件では、関連する実装例を検索して入力に加える。これは検索拡張生成、略してRAGと呼ばれ、モデルの内部知識だけでなく見つけた資料を参照して生成する方法だ。例えば説明が短いクラスなら、似たメソッドの実装を添えたうえでコードを生成し、自動生成されたテストを走らせる。

新規性

著者らは、公開ソフトウェアから取り出したPythonクラスを使うRealClassEvalを作り、合成されたクラス課題と実際の開発文脈の差を測った。クラスの骨格を残して中身を生成させるため、複数のメソッドや属性のつながりをまとめて評価する。

公開時期の異なる2群を用意し、説明文の充実度と検索による補助も同じ枠組みで調べた。ただし、古い群が対象モデルの学習に含まれたかは著者らも保証しておらず、「既知」と「未知」を厳密な学習履歴の区別と見なすべきではない。

従来手法との違い

合成課題ClassEvalの100クラスに対し、RealClassEvalは公開ソフトウェアから各200クラスずつ選んだ2群を使う。生成はクラス全体を一度に書く方式に統一し、各クラスで通ったテストの割合を比べた。単独の関数では見えにくい属性や依存関係の不整合を扱う構成である。

入力条件の比較では、説明文を完全にする方法と、似た実装例を検索して加える方法を調べた。著者らの結果では、説明文の充実だけによる改善は小さく、検索の効果は説明文が部分的な場合に大きかった。

実験結果

著者らは7つの言語モデルを、合成課題ClassEvalの100クラスと、実コード由来の各200クラスで評価した。指標はクラスごとに通過したテストの割合である。報告値は合成課題で83.60~88.27%、実課題で24.59~33.60%と大きく離れた。

説明文を完全にした場合の改善は1~3%で、統計的に明確な例は少ない。説明文が部分的な条件では検索拡張で4~7%改善した。失敗の84%はAttributeError、TypeError、AssertionErrorの3種類で、属性や型の不一致が実課題で目立つと著者らは分析した。

応用の可能性

編集上の応用案 · 論文が実証した用途とは区別しています。

編集上の応用案:開発チームが既存のPythonクラスを拡張する際、生成AIへクラスの骨格と周辺の実装例を渡す。入力はメソッド名、引数、説明文、関連クラスの例で、出力は実装案とテスト結果、失敗した例外の一覧とする。

担当者は生成された実装を別の作業用環境で検証し、属性の参照先、型、依存先を確認してから採用を判断する。検索結果を増やせば必ず良くなるという前提は置かず、関係の薄い実装例が依存関係の衝突を招くかも記録する。

応用先の候補からNauhに相談できます。

導入時の検証

導入時の検証案 · 対象データでの再評価が必要です。

導入時の検証案:自社コードから、依存関係とテストが確認できるクラスを少数選ぶ。既存の生成方法を基準とし、骨格だけ、説明文を追加、関連実装を検索して追加、という条件で同じクラスを生成させる。

クラスごとのテスト通過率を測り、属性・型・検証結果の不一致を別々に数える。検索例が新たな依存先を持ち込んだ件数も確認する。公開前に人が修正した行数と所要時間を記録すれば、テスト上の改善が実務の負担軽減につながるかを判断しやすい。

限界と課題

著者らは、実案件の全体像を完全には再現できない評価上の制約を述べている。複雑な実行依存を持つ課題は除外しており、正しさの判定には自動生成したテストを使う。公開時期で分けた古い群がモデルの学習に実際に使われたかも確認できない。

編集上は、自社の依存ライブラリや設計規約を含むクラスでも同じ傾向が出るかを調べる必要がある。テスト通過率は、保守しやすさやセキュリティを直接示す指標ではない。検索で論理的な誤りが減っても、別の依存関係の誤りが入る可能性を確認したい。

応用先の候補
研究内容と応用案に基づく分類です。業界での導入実績を示すものではありません。

出典

元のタイトル・要旨を確認する(英語)

Beyond Synthetic Benchmarks: Evaluating LLM Performance on Real-World Class-Level Code Generation

Large language models (LLMs) have demonstrated strong performance on function-level code generation benchmarks, yet real-world software development increasingly demands class-level implementations that integrate multiple methods, attributes, and dependencies within authentic project contexts. This gap between benchmark performance and practical utility raises critical questions about LLMs' readiness for production code assistance, particularly regarding their ability to generalize across familiar and novel codebases. We introduce a benchmark derived from real-world open-source repositories, comprising classes divided into seen and unseen partitions to evaluate generalization under practical conditions. We systematically examine how input specification completeness and retrieval-augmented generation affect class-level correctness across multiple state-of-the-art LLMs. Our evaluation reveals a substantial performance gap: while LLMs achieve 84 to 89% correctness on synthetic benchmarks, they attain only 25 to 34% on real-world class tasks, with minimal distinction between familiar and novel codebases. Comprehensive documentation provides marginal improvements (1 to 3%), whereas retrieval augmentation yields greater gains (4 to 7%) by supplying concrete implementation patterns. Error analysis identifies AttributeError, TypeError, and AssertionError as dominant failure modes, with distinct patterns between synthetic and real-world scenarios. These findings provide actionable insights for enhancing context modelling, documentation strategies, and retrieval integration in production code assistance tools.

論文本体の取得範囲に基づく解説。AIが作成した未校閲の記事です。性能の数値は著者の評価条件に依存します。応用例と検証計画は編集上の提案です。解説更新:2026-09-29