Claude 3.5 Sonnet SWE-bench Performance

アップグレードされた Claude 3.5 Sonnet は、SWE-bench Verified において 49% の成功率を達成し、従来の最先端(SOTA)スコアである 45% を上回りました。このパフォーマンスは、実際のソフトウェアエンジニアリングタスク向けに設計された最小限のエージェント・スキャフォールド(scaffold)に統合された際、モデルの推論、コーディング、および数学的能力が向上していることを示しています。

SWE-bench Verified の理解

SWE-bench は、人気のオープンソース Python リポジトリから、実際の GitHub issue を解決する AI エージェントの能力を測定する評価ベンチマークです。コンペティション形式のコーディングテストとは異なり、エージェントはコードベースを理解し、ファイルを修正し、ユニットテストを使用して修正を検証する必要があります。

SWE-bench Verified は、元のデータセットから人間がレビューした 500 問の問題からなるサブセットです。このサブセットは、すべてのタスクが提供されたコンテキストで解決可能であることを保証し、不可能なタスクを除外することで、コーディングエージェントのパフォーマンスをより正確に測定できるようにします。

エージェント・スキャフォールドの設計

Anthropic は、モデル自身の判断力と制御力を最大限に引き出すために、Claude 3.5 Sonnet モデルとソフトウェア・スキャフォールドを組み合わせた最小限の「エージェント」システムを利用しました。このスキャフォールドは、厳格なワークフローをハードコードするのではなく、柔軟なインタラクション・ループを採用しています。

ツールセットとインターフェース

エージェントには、主に 2 つのツールが備わっています。

  • Bash Tool: 永続的な環境で bash コマンドを実行します。aptpip を介して一般的な Linux および Python パッケージのミラーにアクセスできますが、インターネットアクセスはできません。
  • Edit Tool (str_replace_editor): ファイルの閲覧、作成、および編集を行うための複雑なツールです。信頼性を確保するために、文字列置換戦略 (old_str から new_str へ) を使用します。置換は、ターゲットとなる文字列が正確に 1 つだけ一致した場合にのみ発生します。

プロンプト戦略

エージェントは、厳固な遷移を強制することなく、リポジトリの探索、再現スクリプトの作成、ソースコードの編集、および修正の検証といった一般的なアプローチを提案するプロンプトによって導かれます。Anthropic は、トークンコストに制約がない場合は、モデルに長く詳細な回答を生成させることでパフォーマンスを向上させることができると述べています。

パフォーマンス結果

同じエージェント・スキャフォールドを使用した場合、アップグレードされた Claude 3.5 Sonnet は、以前のイテレーションおよび以前の最先端モデルを大幅に上回りました。

Model SWE-bench Verified Score
Claude 3.5 Sonnet (new) 49%
Previous SOTA 45%
Claude 3.5 Sonnet (old) 33%
Claude 3 Opus 22%

エージェントの挙動と能力

モデルのログの分析により、アップグレードされた Claude 3.5 Sonnet は、以前のモデルよりも強力な自己修正能力を示していることがわかります。最初の試行が失敗した場合、同じエラーを繰り返すのではなく、複数の異なる解決策を試みる傾向が強くなっています。

典型的なワークフローでは、モデルは次のように動作します:

  1. Edit Tool を使用してリポジトリの構造を探索します。
  2. 報告されたバグを再現するためのスタンドアロンな Python スクリプトを作成します。
  3. Bash Tool を介してスクリプトを実行し、エラーを確認します。
  4. 文字列置換を使用して、テスト対象外のファイルに最小限の変更を適用します。
  5. 再現スクリプトを再実行して、解決策を検証します。

ソフトウェアエンジニアリング評価における技術的課題

Anthropic は、SWE-bench Verified の評価を実行する際に、4 つの主要な課題を特定しました。

  • リソースの集約性: 成功する実行には数百回のターンが必要となり、100k トークンを超えることもあり、高コストかつ長時間の実行につながります。
  • 評価のノイズ: 環境構築のエラーや重複するインストールパッチなどのシステム上の問題により、 otherwise 正しいモデルの挙動に対して誤って失敗と判定されることがあります。
  • 隠れたテストの不一致: モデルは採点テストを見ることができないため、リファクタリングの代わりに「絆創膏」的な修正(bandaid fix)を適用して成功したと誤認したり、元の人間による PR の特定のユニットテストに一致しなかったりすることがあります。
  • マルチモーダル・ギャップ: Claude 3.5 Sonnet はビジョン機能を持っていますが、現在のスキャフォールドではファイルシステム上のファイルや URL を閲覧することができないため、Matplotlib のようなライブラリのデバッグが複雑になります。

Sources

関連