大規模言語モデル(LLM)は、コード理解と生成の分野で目覚ましい進歩を遂げており、複数のプログラミング言語間でインテリジェントなフィードバックを提供し、潜在的なバグを検出し、人間の指示に基づいてコードスニペットを更新できます。コードリフレクションは、LLMが以前の応答を検査して修正する能力として、開発効率とプログラミングのアクセシビリティを大幅に向上させます。
HumanEval、LiveCodeBenchなどのベンチマークはコード生成と現実との関連性を評価してきましたが、既存の研究はコードリポジトリでコードを修正するという実際のシナリオを見落としています。
リフレクション能力の向上と、動的ベンチマークにおけるデータ汚染の課題を考慮し、本稿ではLiveRepoReflectionを提案します。これは、マルチファイルリポジトリのコンテキストにおけるコード理解と生成能力を評価するための挑戦的なベンチマークであり、6種類のプログラミング言語にわたる1,888の厳密に選別されたテストケースを含み、多様性、正確性、および高難易度を保証します。
私たちは、コード生成とエラー駆動型修正を含む2段階の対話プロセスを通じてRepoReflectionCoderをトレーニングするために、大規模で品質フィルタリングされた指示チューニングデータセットであるRepoReflection-Instructを作成しました。私たちのリーダーボードは40以上のLLMを評価し、リポジトリベースのコードリフレクションにおけるモデルのパフォーマンスを包括的に反映しています。
プロジェクトホームページ: http://livereporeflection.github.io/
論文タイトル: Turning the Tide: Repository-based Code Reflection
評価データ: https://github.com/LiveRepoReflection/LiveRepoReflection
コードリンク: https://github.com/LiveRepoReflection/LiveRepoReflection-Project
背景 – リポジトリレベルのコードリフレクションタスク
従来のコード生成タスクと比較して、コードリポジトリのリフレクションはより複雑な課題に直面します。上の図に示すように、ゼロからコードを生成する単純なタスクとは異なり、リポジトリのリフレクションでは、モデルが複数のファイルの依存関係を理解し、コンパイル時または実行時のエラーに基づいてコードを体系的に修正できる必要があります。
LiveRepoReflectionベンチマークは、厳格な評価プロセスを通じて、モデルが以下のことができるかどうかをテストします。
1. 完全なリポジトリ構造とマルチファイル依存関係を理解する
2. エラーメッセージに基づいて的確なコード修正を行う
3. 異なるプログラミング言語間で一貫した高性能を維持する
自動動的パイプライン構築
データ汚染とベンチマークの過学習の問題を回避するため、著者は自動動的なデータ構築パイプラインを提案します。
1. Exercismなどのソースからリポジトリコードを抽出し、リポジトリファイル構造を最適化
2. GitHub、Hugging Face、Stack Overflowなどの公開ソースからコードスニペットを収集
3. プログラミング言語別にデータをフィルタリング
4. ランダムに選択された「クリエイティブ型」LLMを使用して、シードデータからプログラムテーマと定義を生成
5. 複数の「推論型」LLMを使用して、単体テストと参照ソリューションを生成
6. 各単体テスト-ソリューションペアを相互実行して検証し、異常をフィルタリングし、合格率が最も低いテストと合格率が最も高いソリューションを保持
7. すべてのコンテンツを最終的なリポジトリ構造としてパッケージ化
このプロセスにより、ベンチマークの高品質と動的更新能力が保証され、モデルが特定のデータセットに過学習するのを効果的に防ぎます。
同時に、私たちはリポジトリ構造を可能な限り標準化し、Python、Java、Rust、CPP、Go、およびJavaScriptの6種類のプログラミング言語の標準構造を提供しました。
LiveRepoReflection評価ベンチマーク
LiveRepoReflectionの品質と難易度を確保するため、研究チームは厳格なスクリーニングプロセスを採用しました。
1. 実行可能プログラムのスクリーニング:自動パイプラインで生成された10万個のリポジトリケースから、サンドボックスで実行し、環境設定、コンパイル、テストを含め、すべてのLLMが合格できるケースまたは実行時間が180秒を超えるケースを除外し、1万個の高難易度、高正確性のケースを保持しました。
2. 難易度スクリーニング:10個の主要な強力な推論LLMが各コードプログラムケースをテストし、各LLMには1回の修正機会が与えられました。合格率に基づいてケースを「単純」、「中難易度」、「高難易度」に分類し、2300個の高品質、高難易度、高多様性のケースを保持しました。
3. 手動アノテーション:8人の大学院生が完全なコード実行サンドボックス環境で各ケースを検査し、コードプログラムケースの合理性、環境設定、ファイル構造、参照回答、単体テストの正確性を確認し、最終的に1,888個のテストケースを保持しました。
既存のAider Polyglotベンチマークと比較して、LiveRepoReflectionは複数の側面で顕著な改善を達成しました。問題数が8倍以上に増加し、より豊富な問題記述と例示コンテキストが提供され、平均して各リポジトリがより多くのファイルを含み、実際のコードベースの複雑な構造をより現実的にシミュレートしています。
RepoReflectionCoderトレーニング
高性能なRepoReflectionCoderをトレーニングするため、研究チームはRepoReflection-Instruct命令コーパスを構築しました。
1. 高品質データスクリーニング:自動パイプラインで生成された約50万個のコード例から、厳格な拒否サンプリングにより、以下の5つの基準を満たす高品質データを保持しました。
少なくとも1つの単体テストファイル
少なくとも1つの参照回答ファイル
コード署名ファイルの数と参照回答ファイルの数が一致
環境設定ファイルが宣言されたプログラミング言語と一致
ファイル命名と拡張子が標準化されている
2. 品質評価メカニズム:実行能力、新規性、難易度、コードスタイル、パープレキシティの逆指標を考慮した加重スコアリング関数を使用して、各コードプログラムを評価しました。
3. データ汚染除去:MinHashアルゴリズムとLSHインデックスを使用して、テストセットとの類似度が0.8を超える候補テキストを効率的にフィルタリングし、トレーニングデータとテストセットの純粋性を確保しました。
4. 多段階対話生成:4つのトップモデルを使用して、直接生成(40%)、エラー駆動型修正(40%)、スタイル標準化(10%)、対話要約(10%)を含む84万回以上のコーディング対話をシミュレートしました。
実験結果
実験では、GPT-4.5、Claude-3.7、OpenAI oシリーズ/GPT4シリーズ、Gemini、Qwenシリーズ、Grokなど40以上のLLMを評価し、4つの主要指標を採用しました。
1. Pass@1:LLMが最初の試行でコーディングタスクを完了した割合
2. Pass@2:失敗したコードとエラーメッセージを確認した後の2回目の試行の成功率
3. 修正重み(FW):2回目の試行の成功におけるエラー診断と修正の相対的貢献
4. フォーマット準拠(WF):LLMがシステムプロンプトで指定された編集形式に厳密に準拠した割合
結果は以下の通りです。
1. 主要なクローズドソースモデルは、ワンショットおよびフィードバック後の精度において常に最高のパフォーマンスを示しました。
2. オープンソースモデルは遅れをとったものの、2回目の試行が許可された場合には同様の相対的な改善が見られました。
3. 各システムはPythonタスクを最も簡単だと認識し、C++とRustが最も困難でした。
4. ほぼすべてのモデルでフォーマット準拠率が90%を超えました。
5. RepoReflectionCoderはベースのQwen2.5-Coderを大幅に上回りましたが、トップのクローズドソースモデルには依然として及ばない結果でした。
既存のAider Polyglotベンチマークと比較して、LiveRepoReflectionはより挑戦的であり、新しいベンチマークでのほぼすべてのモデルのパフォーマンスは古いベンチマークよりも低く、その高い難易度と現実世界でのコード生成および修復能力の評価価値を証明しています。
結論と展望
本研究では、マルチファイルコードリポジトリの理解と生成を対象とした高難易度ベンチマークであるLiveRepoReflectionを提案しました。これにより、自動化プロセスと手動検証を通じて、テストケースの多様性、正確性、および挑戦的な性質が保証されます。同時に、研究チームはRepoReflection-Instructデータセットを構築し、RepoReflectionCoderをトレーニングすることで、リポジトリベースのコードリフレクション能力において顕著な性能向上を達成しました。
実験結果は、LiveRepoReflectionがクロスファイル依存関係と反復修正のシナリオにおけるモデルのリフレクションおよび修正能力を真に効果的に測定できることを示しており、今後の研究のための強固な基盤を提供します。モデルの性能にはまだ改善の余地がありますが、本研究はマルチファイルリポジトリのコード理解と生成に新たな標準を確立しました。
著者と所属機関
張蔚は、北京航空航天大学と上海人工知能研究所の共同育成博士課程1年生で、コードインテリジェンスを主要な研究方向とし、かつて通義千問でインターンシップを経験しました。
楊健は、北京航空航天大学コンピュータサイエンス学部の准教授で、ICLR、NeurIPS、ACLなどの国際ジャーナル/会議で20以上の筆頭/共同著者論文を発表しており、Google Scholarの引用数は8000回を超え、NeurIPS、ACLなどの国際会議のエリアチェアも務めています。かつてはAliStarとしてQwenに入社し、コード大規模モデルのオープンソース化を積極的に推進しています。
李舟軍は、北京航空航天大学コンピュータサイエンス学部の教授であり、情報セキュリティ部門の主任、インテリジェント情報処理研究所の副所長を務めています。国務院学位委員会の初代サイバースペースセキュリティ学科評価グループメンバー、中国人工知能学会言語インテリジェンス専門委員会の副主任委員、深セン智能思創の創設者兼チーフサイエンティストです。