論文 · arXiv 2407.16741
OpenHands: 汎用エージェントとしてのAIソフトウェア開発者のためのオープンなプラットフォーム
OpenHands: An Open Platform for AI Software Developers as Generalist Agents
3行まとめ
- 🎯 多様なコードおよびウェブタスクにわたってAIソフトウェアエージェントを構築、保守、安全に評価するには、標準化されたサンドボックス、ツール、再現性のあるベンチマークが必要です。
- 🔧 OpenHandsは、イベントストリームアーキテクチャをDockerサンドボックス、拡張可能なAgentSkillsライブラリ、BrowserGymベースのナビゲーション、マルチエージェント委譲、およびモックLLMを使用した統合テストと連携させています。
- 📈 ベンチマーク固有のプロンプト調整を行わないClaude 3.5 Sonnetを使用した場合、CodeActAgentはSWE-Bench Liteで26.0%、WebArenaで15.3%、GPQA Diamondで52.0%の解決率を達成します。
概要
ソフトウェアは人類が利用できる最も強力なツールの1つであり、熟練したプログラマが複雑かつ深遠な方法で世界と対話することを可能にします。同時に、大規模言語モデル(LLM)の進歩に伴い、周囲の環境と相互作用し変化をもたらすAIエージェントも急速に発展しています。本論文では、コードの記述、コマンドラインの操作、ウェブの閲覧など、人間の開発者と同様の方法で世界と対話する強力で柔軟なAIエージェントを開発するためのプラットフォームであるOpenHands(旧称OpenDevin)を紹介します。本プラットフォームが新しいエージェントの実装、コード実行のためのサンドボックス環境との安全な対話、複数エージェント間の協調、および評価ベンチマークの組み込みをどのように可能にするかを説明します。現在統合されているベンチマークに基づき、ソフトウェアエンジニアリング(例: SWE-BENCH)やウェブブラウジング(例: WEBARENA)などを含む15の困難なタスクにわたってエージェントの評価を実施します。許容性の高いMITライセンスの下で公開されているOpenHandsは、学術界と産業界にまたがるコミュニティプロジェクトであり、188人以上のコントリビュータから2,100件以上の貢献が寄せられています。
英語の原文概要
Software is one of the most powerful tools that we humans have at our disposal; it allows a skilled programmer to interact with the world in complex and profound ways. At the same time, thanks to improvements in large language models (LLMs), there has also been a rapid development in AI agents that interact with and affect change in their surrounding environments. In this paper, we introduce OpenHands (f.k.a. OpenDevin), a platform for the development of powerful and flexible AI agents that interact with the world in similar ways to those of a human developer: by writing code, interacting with a command line, and browsing the web. We describe how the platform allows for the implementation of new agents, safe interaction with sandboxed environments for code execution, coordination between multiple agents, and incorporation of evaluation benchmarks. Based on our currently incorporated benchmarks, we perform an evaluation of agents over 15 challenging tasks, including software engineering (e.g., SWE-BENCH) and web browsing (e.g., WEBARENA), among others. Released under the permissive MIT license, OpenHands is a community project spanning academia and industry with more than 2.1K contributions from over 188 contributors.
論文解説
問題と動機
ソフトウェア開発は、人間がデジタル世界と対話するための最も表現力豊かなインターフェースの1つです。大規模言語モデル(LLM)は単一のコードスニペットを生成することはできますが、現実世界のソフトウェアエンジニアリングでは、リポジトリの探索、複数ファイルにまたがるアーキテクチャの変更、bashコマンドの実行、ウェブブラウザを介したドキュメントの閲覧、実行フィードバックを利用した自己デバッグなど、長期的なインタラクションが求められます。
既存のエージェントフレームワークは多くの場合、隔離された実行環境の欠如、ステートレスなコードランナー、マルチモーダルなウェブ閲覧機能の不足、異種ドメイン間にまたがる標準化された評価ツールの不在といった、重要なアーキテクチャ上の課題を抱えていました。OpenHands(旧称OpenDevin)は、サンドボックス化されたランタイム環境、拡張可能なAgent-Computer Interfaces(ACI)、マルチエージェント協調、および標準化されたベンチマークを提供するオープンソースプラットフォーム(MITライセンス)によって、これらの課題を解決します。
主なアイデア
- イベントストリームアーキテクチャ(Event Stream Architecture): ユーザーの指示、エージェントのアクション、ランタイムの観測結果が時系列のイベントストリームで追跡され、フロントエンド、エージェント、サンドボックス化されたランタイム間の通信を統合します。
- プログラミング言語(PL)プリミティブ: 壊れやすいカスタムAPIの代わりに、エージェントの対話は汎用的なアクション(
IPythonRunCellAction、CmdRunAction、およびBrowserGym経由のBrowseInteractiveAction)に基づいています。 - 拡張可能なAgentSkills: IPythonカーネルに事前ロードされたモジュール式のPythonパッケージが、既存のパッケージを再発明することなく、高水準のユーティリティ(ASTに基づく行編集
edit_file、PDF解析、マルチモーダル画像抽出など)を提供します。 - エージェントの委譲(Agent Delegation): 専門エージェントがドメイン固有のワークフローを処理します(例:
AgentDelegateActionを介してウェブタスクを専用のBrowsingAgentに委譲)。 - モックテストによる品質管理: 高コストなリアルタイムAPI呼び出しの代わりに、決定論的なプロンプト・レスポンスのキャッシュを使用して、プロンプトのリグレッション、アクション、およびサンドボックスの安定性を定期的な継続的インテグレーション(CI)テストで検証します。
手法(主要な数式を含む)
OpenHandsの実行サイクルは、エージェントが環境の状態 をアクション にマッピングする離散ステップ関数で動作します。 ここで、状態は過去のアクションと観測結果の時系列履歴をカプセル化しています。 は補助的な状態メタデータ(累積LLMコスト、アクティブなマルチエージェント委譲スタック、設定パラメータ)を追跡します。
アクション空間 には以下が含まれます:
CmdRunAction(command): ターゲットのLinuxシェルで任意のbashコマンドを実行します。IPythonRunCellAction(code): 永続的なJupyterカーネル内でステートフルなPythonコードを実行し、AgentSkillsを公開します。BrowseInteractiveAction(code): Playwright駆動のBrowserGymプリミティブ(click(bid)、fill(bid, val)、goto(url)など)を実行します。AgentDelegateAction(subtask, agent_name): 専門エージェントを呼び出すためにサブゴールをエージェントスタックにプッシュします。AgentFinishAction(): 実行を終了します。
実行はセキュアなクライアント・サーバー型のDockerサンドボックス内で行われます。ベースとなるDockerコンテナはOpenHands REST APIサーバー(runtime.py)によって拡張され、厳密な再現性のためのコンテンツMD5ハッシュ(target_image_repo:target_image_hash_tag)と、キャッシュされたベースレイヤービルドのためのセマンティックな汎用タグ(runtime:oh_v{VERSION}_{BASE_IMAGE}_tag_{IMAGE_TAG})というデュアルタギング機構を使用してタグ付けされます。
結果(主要な数値)
OpenHandsは、ベンチマークごとのプロンプト調整を行うことなく、ソフトウェアエンジニアリング、ウェブブラウジング、汎用アシスタントにわたる15のベンチマークで汎用エージェントを評価しています。
- SWE-Bench Lite(300インスタンス、ヒントなし):
claude-3-5-sonnet@20240620を搭載したCodeActAgent v1.8は、の解決率(1インスタンスあたり平均コスト1.10ドル)を達成し、SWE-Agent()およびAutoCodeRover()を上回り、Aider()に迫る性能を示しました。 - HumanEvalFix(164インスタンス):
gpt-4o-2024-05-13を搭載したCodeActAgent v1.5は、ゼロショット自己デバッグ設定でを解決しました(StarCoder2-15Bのと比較)。 - WebArena(812インスタンス):
BrowsingAgent v1.0はclaude-3-5-sonnetを使用して、gpt-4oを使用してを達成し、委譲を用いたCodeActAgent v1.8はに達しました。 - MiniWoB++(125環境):
gpt-4oを使用したゼロショットBrowsingAgent v1.0がを達成しました。 - 汎用アシスタントと推論:
- GPQA Diamond: CodeActAgent v1.8 +
claude-3-5-sonnetはを記録しました(人間の専門家ベースラインのには及びませんが、Few-shot CoTのGPT-4のを上回りました)。 - GAIA(L1 Validation):
gpt-4oを搭載したGPTSwarm v1.0がに達しました(AutoGPTは)。 - AgentBench(OSサブセット): CodeActAgent v1.5がを達成しました。
- MINT(Math / Code): CodeActAgent v1.5が数学で、コードでを記録しました。
- GPQA Diamond: CodeActAgent v1.8 +
限界と未解決の課題
- 長いファイルの編集: 現在の編集プリミティブは、大規模なコードベースや、行番号のずれによって編集の競合が発生する長いソースファイルを扱う際に苦戦します。
- マルチモーダルの統合: ヘルパースキル(
parse_image、parse_pdf)は外部の視覚モデルを介してテキストや画像要約を抽出しますが、ブラウザやターミナルのネイティブなマルチモーダル推論はまだ完全に統合されていません。 - ワークフローの自動化: ワークフローは、自動的に最適化されたグラフアーキテクチャ(例: GPTSwarm)ではなく、依然として手作業で作成されたシステムプロンプトやエージェントのオーケストレーションループに大きく依存しています。
重要用語
- OpenHands
- サンドボックス環境内でAIソフトウェア開発者エージェントを構築、デプロイ、評価するための、オープンソースのコミュニティ主導型プラットフォーム。
- CodeAct
- アクション空間が厳格なJSONスキーマではなく、任意のプログラミング言語コード(Python、bash、ブラウザ操作)の実行を中心に統合されたエージェントアーキテクチャ。
- Event Stream
- OpenHandsランタイム全体でエージェントのアクション、ユーザーの介入、環境の観測結果を時系列順に記録する追記専用ログ。
- AgentSkills
- サンドボックス化されたIPythonカーネルに注入され、エージェントにファイル編集、ナビゲーション、ドキュメント解析のヘルパーを提供するモジュール式のPythonユーティリティパッケージ。
- BrowserGym
- ウェブナビゲーションタスクのためにOpenHandsで使用される、Playwrightベースのブラウザ自動化環境およびドメイン固有アクション言語。
- Agent Runtime
- bashコマンド、IPythonコードセル、ブラウザセッションを処理する、Dockerコンテナ内で動作する隔離されたクライアント・サーバー実行環境。
- AgentDelegateAction
- プライマリな汎用エージェントが特定のサブタスクをドメイン専門エージェントに委譲できるようにする特殊なアクションタイプ。
- SWE-Bench
- 人間の手助けなしに実際のリポジトリのGitHub issueを解決し、ユニットテストスイートに合格するエージェントの能力を評価するベンチマーク。
よくある質問
OpenHandsとOpenDevinの違いは何ですか?
OpenHandsはOpenDevinの正式な後継および改称であり、CognitionのDevinのオープンな再現から、ソフトウェア開発および汎用デジタルエージェント双方のための包括的プラットフォームへと進化しました。
OpenHandsは任意のコードを実行する際の安全性をどのように維持していますか?
すべてのエージェントアクション(シェルコマンド、Pythonスニペット、ブラウザ操作)は、REST APIクライアントを介してバックエンドと通信する隔離されたDockerサンドボックスコンテナ内で実行され、ホストシステムを保護します。
OpenHandsは自動テスト中の高額なLLM呼び出しをどのように防いでいますか?
本フレームワークは、LLMリクエストをインターセプトしてキャッシュされた決定論的なプロンプト・レスポンスのペアを返すエンドツーエンドの統合テストスイートを備えており、破壊的なプロンプト変更が発生した場合にのみ実際のモデルを再呼び出しします。
OpenHandsはユーザー任意のDockerイメージで実行できますか?
はい。OpenHandsは、ユーザー指定のベースDockerイメージ上に対話実行APIサーバーをインストールするビルドワークフローを提供し、MD5ソースハッシュと汎用タグによってビルドを追跡します。
このページの解説は AI が論文から作成したもので、誤りを含む場合があります。詳細は原文をご確認ください。