Hugging Face Transformers コードエージェント GAIA ベンチマーク結果
Hugging Face は、transformers.agents ライブラリ(現在は smolagents ライブラリへ進化)を使用してコードエージェントを開発し、AI エージェント向けの最も難易度の高いベンチマークの一つである GAIA ベンチマークでトップランクを獲得しました。このシステムは、エージェントが JSON ブロブではなく Python コードでアクションを表現できるようにすることで、効率が大幅に向上し、トークンコストが削減され、複雑で多段階の軌道を処理する能力が強化されることを示しています。
GAIA ベンチマークの課題
GAIA は、高度な計画と厳密な実行を必要とするタスクでエージェントをテストするよう設計されています。典型的な GAIA の質問は、マルチモーダル機能(画像の読み取り)を必要としたり、ウェブから散在する情報を収集したり、厳格な出力制約を守ったりすることがあります。これらのタスクは、後続の情報が前の結果に依存する連鎖的なステップを必要とすることが多く、LLM が計画と実行で直面する一般的な課題を浮き彫りにします。
コードベースのアクションの利点
JSON のような辞書形式の出力を使用する代わりに、Hugging Face のエージェントは「コードエージェント」アプローチを採用し、アクションを Python コードとして定式化・実行します。この手法は、いくつかの技術的利点を提供します:
- 簡潔さと効率性: コードは複雑なシーケンスを表現するためにより最適化された方法です。たとえば、アクションの並列ストリームは、複数の JSON ブロブではなく単一のコードステップで処理できます。研究によれば、コードアクションは JSON に比べてステップ数が 30% 少なくて済み、生成トークンが削減され、運用コストが低減します。
- 直感的な変数管理: コードにより、エージェントはツールの出力を名前付き変数として保存できます(例:
rock_image = image_generation_tool("A picture of a rock"))。これにより、JSON で必要となる複雑な命名作業に比べ、LLM が後続のステップでこれらの出力を参照しやすくなります。 - モデルの流暢さ: LLM は膨大なコードで訓練されているため、JSON を書くよりもコードを書く方が流暢であることが多いです。
安全なコード実行の実装
LLM が生成したコードの実行リスクを軽減するため、Hugging Face は ast(抽象構文木)モジュールを使用して、ゼロから安全な Python インタプリタを実装しました。「ブラックリスト」方式(特定のアクションを禁止)ではなく、インタプリタは「ホワイトリスト」方式を採用しています:
- AST ベースの実行: インタプリタはツリーノードを一つずつ実行し、明示的に許可されていない操作があれば停止します。
- 許可されたインポート:
authorized_importsリストに明示的に記載されたインポートのみが実行されます。printやrangeといった標準関数は含まれますが、openのような危険な関数はデフォルトで禁止されています。 - 安全ガードレール: システムは操作数に上限を設けて無限ループを防止し、print 出力の行数を制限して LLM のコンテキストウィンドウがジャンクデータで埋まるのを防ぎます。
マルチエージェントのオーケストレーションと計画
システムは、特にウェブ閲覧時にコンテキストを管理しノイズを減らすために、マルチエージェントアーキテクチャを利用しています:
オーケストレーション構造
- マネージャーエージェント: 高レベルのタスク解決を担当し、
file_inspector、visualizer、search_agentにアクセスできるReactCodeAgent。 - サーチエージェント: マネージャーエージェント用のツールとしてラップされた JSON ベースのエージェントです。順次のウェブ閲覧タスク(
informational_web_search、page_down、find_in_pageなどのツールを使用)を処理し、コンテキストが乱れないように関連情報のみをマネージャーに返します。
計画ワークフロー
エージェントは「先行計画」ワークフローを採用し、N ステップごとに既知および必要な事実の要約とステップバイステップの計画を生成します。
- チューニング: マネージャーエージェントは 2 ステップごと(N=2)に計画を更新し、サーチエージェントは 5 ステップごと(N=5)に更新します。
- コンテキスト最適化: Hugging Face は、プロンプトから以前の計画バージョンを省くことでスコアが向上することを発見しました。これにより、LLM が古い計画に偏るのを防ぎ、アプローチの再評価が促されます。
パフォーマンス結果
ファインチューニングなしで GPT-4o を使用し、エージェントは GAIA ベンチマークで以下の結果を達成しました:
- 検証セット: 44.2%、全体で #1 のランク。
- テストセット: 33.3%、全体で #2 のランクで、Microsoft Autogen の提出を上回りました。
- レベル 3 の質問: エージェントは最も難しい「ハードコア」レベル 3 の質問で最高の平均スコアを獲得しました。
今後の改善点
Hugging Face は、さらなる最適化のためにいくつかの方向性を特定しました:
- LLM エンジン: パースエラーを減らすために、ファインチューニングされたオープンソースモデルの探索。
- オーケストレーション: よりシームレスなマルチエージェントオーケストレーションへの移行。
- ウェブツール:
seleniumパッケージを統合し、JavaScript とクッキーバナーを処理。 - 計画: 現行文献から代替の計画戦略をテスト。