🌐 [S1ブログ] 📄 [S1論文 (ICLR 2025)] 🎥 [S1動画]
Agent Sへようこそ。これはAgent-Computer Interfaceを通じてコンピュータと自律的に相互作用するためのオープンソースフレームワークです。私たちの使命は、過去の経験から学習し、コンピュータ上で複雑なタスクを自律的に実行できるインテリジェントなGUIエージェントを構築することです。
AI、自動化、または最先端のエージェントベースシステムへの貢献に興味がある方々の参加を心から歓迎します!
OSWorldフルテストセットにおけるAgent S2の成功率(%)(スクリーンショット入力のみ使用)
ベンチマーク | Agent S2 | 従来のSOTA | 改善幅Δ |
---|---|---|---|
OSWorld (15ステップ) | 27.0% | 22.7% (UI-TARS) | +4.3% |
OSWorld (50ステップ) | 34.5% | 32.6% (OpenAI CUA) | +1.9% |
WindowsAgentArena | 29.8% | 19.5% (NAVI) | +10.3% |
AndroidWorld | 54.3% | 46.8% (UI-TARS) | +7.5% |
❗警告❗: Linuxマシンを使用している場合、
conda
環境を作成するとpyatspi
と干渉する可能性があります。現時点ではこの問題に対するクリーンな解決策はありません。conda
や仮想環境を使用せずにインストールを進めてください。
⚠️免責事項⚠️: Agent S2の全機能を活用するには、UI-TARSをグラウンディングモデルとして使用します(より高い性能を得るには7B-DPOまたは72B-DPO)。これらはローカルでホストするか、Hugging Face Inference Endpointsで利用できます。私たちのコードはHugging Face Inference Endpointsをサポートしています。Hugging Face Inference Endpointsでこのエンドポイントの設定方法やクエリ方法について詳しく確認してください。ただし、Agent S2の実行にはこのモデルは必須ではなく、ClaudeなどのAPIベースのモデルを視覚的グラウンディングに使用することも可能です。
パッケージをインストール:
pip install gui-agents
LLM APIキーやその他の環境変数を設定します。.bashrc(Linux)または.zshrc(MacOS)ファイルに以下の行を追加することで設定できます。
export OPENAI_API_KEY=<YOUR_API_KEY>
export ANTHROPIC_API_KEY=<YOUR_ANTHROPIC_API_KEY>
export HF_TOKEN=<YOUR_HF_TOKEN>
または、Pythonスクリプト内で環境変数を設定することも可能です:
import os
os.environ["OPENAI_API_KEY"] = "<YOUR_API_KEY>"
Azure OpenAI、Anthropic、Gemini、Open Router、vLLM推論もサポートしています。詳細はmodels.mdを参照してください。
Agent SはWeb知識検索と組み合わせると最高の性能を発揮します。この機能を有効にするには、Perplexicaを設定する必要があります:
Docker Desktopがシステムにインストールされ、実行されていることを確認してください。
プロジェクトファイルを含むディレクトリに移動します。
cd Perplexica
git submodule update --init
sample.config.toml
ファイルをconfig.toml
にリネームします。Docker設定の場合、以下のフィールドのみ入力が必要です:
OPENAI
: OpenAI APIキー(OpenAIのモデルを使用する場合のみ必要)OLLAMA
: Ollama API URL(http://host.docker.internal:PORT_NUMBER
形式で入力。ポート11434でOllamaをインストールした場合はhttp://host.docker.internal:11434
)GROQ
: Groq APIキー(Groqのホスト型モデルを使用する場合のみ必要)ANTHROPIC
: Anthropic APIキー(Anthropicモデルを使用する場合のみ必要)
注: これらの設定はPerplexica起動後も設定ダイアログから変更可能です。SIMILARITY_MEASURE
: 使用する類似度測定方法(デフォルトで入力済み。不明な場合はそのままで可)docker-compose.yaml
ファイルを含むディレクトリにいることを確認し、以下を実行:
docker compose up -d
docker-compose.yaml
ファイルのapp/ports
セクションにあるポート番号(例: 3000:3000
の左側の数字)を使用してPerplexica URLをエクスポート:
export PERPLEXICA_URL=http://localhost:{port}/api/search
Agent Sの実装にはPerplexica APIを統合した検索エンジン機能が含まれており、より便利で応答性の高いユーザー体験を提供します。APIを独自の設定や要件に合わせてカスタマイズする場合は、agent_s/query_perplexica.py
内のURLとリクエストパラメータを変更できます。Perplexica APIの詳細な設定ガイドはPerplexica Search API Documentationを参照してください。
より詳細なセットアップと使用ガイドは、Perplexicaリポジトリを参照してください。
❗警告❗: このエージェントはコンピュータを制御するために直接Pythonコードを実行します。取り扱いには十分注意してください。
注: 最適な設定はClaude 3.7とUI-TARS-72B-DPOを拡張思考と共に使用することです。リソース制約でUI-TARS-72B-DPOが実行できない場合、UI-TARS-7B-DPOを軽量な代替として使用可能で、性能低下は最小限です。
特定のモデル(デフォルトはgpt-4o
)でAgent S2を実行:
agent_s2 \
--provider "anthropic" \
--model "claude-3-7-sonnet-20250219" \
--grounding_model_provider "anthropic" \
--grounding_model "claude-3-7-sonnet-20250219" \
またはカスタムエンドポイントを使用:
agent_s2 \
--provider "anthropic" \
--model "claude-3-7-sonnet-20250219" \
--endpoint_provider "huggingface" \
--endpoint_url "<endpoint_url>/v1/"
--provider
, --model
--provider "anthropic" --model "claude-3-7-sonnet-20250219"
--model_url
, --model_api_key
gui-agents
は環境変数のURLとAPIキーを使用設定1または設定2のいずれかを使用可能:
--grounding_model_provider
, --grounding_model
--grounding_model_provider "anthropic" --grounding_model "claude-3-7-sonnet-20250219"
--grounding_model_resize_width
--grounding_model_resize_width 1366
(Anthropic)--endpoint_provider
--endpoint_url
--endpoint_api_key
gui-agents
は環境変数のAPIキーを使用注: 設定2は設定1よりも優先されます。
これによりユーザークエリプロンプトが表示され、クエリを入力してAgent S2と対話できます。models.mdのサポートモデルリストから任意のモデルを使用可能です。
gui_agents
SDKまず必要なモジュールをインポートします。AgentS2
はAgent S2のメインエージェントクラス、OSWorldACI
はエージェントのアクションを実行可能なPythonコードに変換するグラウンディングエージェントです。
import pyautogui
import io
from gui_agents.s2.agents.agent_s import AgentS2
from gui_agents.s2.agents.grounding import OSWorldACI
# Load in your API keys.
from dotenv import load_dotenv
load_dotenv()
current_platform = "linux" # "darwin", "windows"
次にエンジンパラメータを定義します。engine_params
はメインエージェント用、engine_params_for_grounding
はグラウンディング用です。engine_params_for_grounding
にはClaude、GPTシリーズ、Hugging Face Inference Endpointsをサポートしています。
engine_params = {
"engine_type": provider,
"model": model,
"base_url": model_url, # Optional
"api_key": model_api_key, # Optional
}
# Grounding Configuration 1: Load the grounding engine from an API based model
grounding_model_provider = "<your_grounding_model_provider>"
grounding_model = "<your_grounding_model>"
grounding_model_resize_width = 1366
screen_width, screen_height = pyautogui.size()
engine_params_for_grounding = {
"engine_type": grounding_model_provider,
"model": grounding_model,
"grounding_width": grounding_model_resize_width,
"grounding_height": screen_height
* grounding_model_resize_width
/ screen_width,
}
# Grounding Configuration 2: Load the grounding engine from a HuggingFace TGI endpoint
endpoint_provider = "<your_endpoint_provider>"
endpoint_url = "<your_endpoint_url>"
endpoint_api_key = "<your_api_key>"
engine_params_for_grounding = {
"engine_type": endpoint_provider,
"base_url": endpoint_url,
"api_key": endpoint_api_key, # Optional
}
次にグラウンディングエージェントとAgent S2を定義します。
grounding_agent = OSWorldACI(
platform=current_platform,
engine_params_for_generation=engine_params,
engine_params_for_grounding=engine_params_for_grounding
)
agent = AgentS2(
engine_params,
grounding_agent,
platform=current_platform,
action_space="pyautogui",
observation_type="screenshot",
search_engine="Perplexica", # Assuming you have set up Perplexica.
embedding_engine_type="openai" # Supports "gemini", "openai"
)
最後にエージェントにクエリを送信しましょう!
# Get screenshot.
screenshot = pyautogui.screenshot()
buffered = io.BytesIO()
screenshot.save(buffered, format="PNG")
screenshot_bytes = buffered.getvalue()
obs = {
"screenshot": screenshot_bytes,
}
instruction = "Close VS Code"
info, action = agent.predict(instruction=instruction, observation=obs)
exec(action[0])
推論ループの詳細についてはgui_agents/s2/cli_app.py
を参照してください。
Agent S2は推論中に新たな知識を継続的に更新するナレッジベースを使用します。ナレッジベースはAgentS2
の初期化時に初めてダウンロードされます。ナレッジベースはGitHub Releasesのアセットとして保存されています。AgentS2
の初期化では、指定したプラットフォームとエージェントバージョン(例: s1、s2)のナレッジベースのみがダウンロードされます。プログラムでナレッジベースをダウンロードする場合は、以下のコードを使用できます:
download_kb_data(
version="s2",
release_tag="v0.2.2",
download_dir="kb_data",
platform="linux" # "darwin", "windows"
)
これにより、リリースタグv0.2.2
からLinux用のAgent S2ナレッジベースがkb_data
ディレクトリにダウンロードされます。GitHub Releasesまたはナレッジベースを含むリリースタグを参照してください。
OSWorldでAgent S2をデプロイするには、OSWorld Deployment instructionsに従ってください。
このコードベースが役立った場合は、以下の論文を引用してください
@misc{Agent-S2,
title={Agent S2: A Compositional Generalist-Specialist Framework for Computer Use Agents},
author={Saaket Agashe and Kyle Wong and Vincent Tu and Jiachen Yang and Ang Li and Xin Eric Wang},
year={2025},
eprint={2504.00906},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2504.00906},
}
@inproceedings{Agent-S,
title={{Agent S: An Open Agentic Framework that Uses Computers Like a Human}},
author={Saaket Agashe and Jiuzhou Han and Shuyu Gan and Jiachen Yang and Ang Li and Xin Eric Wang},
booktitle={International Conference on Learning Representations (ICLR)},
year={2025},
url={https://arxiv.org/abs/2410.08164}
}