Last translated: 17 Jun 2025

Translation Not Available Yet

This repository's README hasn't been translated yet. Once translated, it will be easier to read and understand in your native language (中文).

After translating, add the links to README so others can view it directly.

ロゴ Agent S2: コンピュータ操作エージェントのための構成可能なジェネラリスト-スペシャリストフレームワーク

  🌐 [S2ブログ]  📄 [S2論文]  🎥 [S2動画]

  🌐 [S1ブログ]  📄 [S1論文 (ICLR 2025)]  🎥 [S1動画]

  simular-ai%2FAgent-S | Trendshift

Discord    PyPI Downloads

🥳 最新情報

  • 2025/04/01: Agent S2論文を公開、OSWorld、WindowsAgentArena、AndroidWorldで新たなSOTA結果を達成!
  • 2025/03/12: gui-agentsのv0.2.0と共にAgent S2をリリース、コンピュータ操作エージェント(CUA)の新たな最先端技術として、OpenAIのCUA/OperatorやAnthropicのClaude 3.7 Sonnet Computer-Useを上回る性能!
  • 2025/01/22: Agent S論文がICLR 2025に採択!
  • 2025/01/21: gui-agentsライブラリv0.1.2をリリース、LinuxとWindowsをサポート!
  • 2024/12/05: gui-agentsライブラリv0.1.0をリリース、Mac、OSWorld、WindowsAgentArenaで簡単にAgent-Sを使用可能に!
  • 2024/10/10: Agent S論文とコードベースを公開!

目次

  1. 💡 イントロダクション
  2. 🎯 現在の結果
  3. 🛠️ インストール & セットアップ
  4. 🚀 使用方法
  5. 🤝 謝辞
  6. 💬 引用

💡 イントロダクション

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%
WindowsAgentArena29.8%19.5% (NAVI)+10.3%
AndroidWorld54.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を参照してください。

Perplexicaを使用したWebからの検索設定

Agent SはWeb知識検索と組み合わせると最高の性能を発揮します。この機能を有効にするには、Perplexicaを設定する必要があります:

  1. Docker Desktopがシステムにインストールされ、実行されていることを確認してください。

  2. プロジェクトファイルを含むディレクトリに移動します。

     cd Perplexica
     git submodule update --init
    
  3. 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: 使用する類似度測定方法(デフォルトで入力済み。不明な場合はそのままで可)
  4. docker-compose.yamlファイルを含むディレクトリにいることを確認し、以下を実行:

    docker compose up -d
    
  5. docker-compose.yamlファイルのapp/portsセクションにあるポート番号(例: 3000:3000の左側の数字)を使用してPerplexica URLをエクスポート:

    export PERPLEXICA_URL=http://localhost:{port}/api/search
    
  6. 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を軽量な代替として使用可能で、性能低下は最小限です。

CLI

特定のモデル(デフォルトは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
    • 目的: メイン生成モデルを指定
    • サポート: models.mdの全モデルプロバイダ
    • デフォルト: --provider "anthropic" --model "claude-3-7-sonnet-20250219"
  • --model_url, --model_api_key
    • 目的: メイン生成モデルのカスタムエンドポイントとAPIキーを指定
    • 注: これらはオプション。指定しない場合、gui-agentsは環境変数のURLとAPIキーを使用
    • サポート: models.mdの全モデルプロバイダ
    • デフォルト: なし

グラウンディング設定オプション

設定1または設定2のいずれかを使用可能:

(デフォルト) 設定1: APIベースモデル
  • --grounding_model_provider, --grounding_model
    • 目的: 視覚的グラウンディング(座標予測)用モデルを指定
    • サポート: models.mdの全モデルプロバイダ
    • デフォルト: --grounding_model_provider "anthropic" --grounding_model "claude-3-7-sonnet-20250219"
  • 重要--grounding_model_resize_width
    • 目的: 一部のAPIプロバイダは画像を自動的にリサイズします。生成される(x, y)座標は元の画像解像度ではなく、リサイズ後の画像寸法に対する相対値になります。
    • サポート: Anthropicリサイズ
    • ヒント: 非常に単純なクエリでもグラウンディングが不正確な場合、マシンの解像度に対してリサイズ幅が正しいか再確認してください。
    • デフォルト: --grounding_model_resize_width 1366 (Anthropic)
設定2: カスタムエンドポイント
  • --endpoint_provider

    • 目的: エンドポイントプロバイダを指定
    • サポート: HuggingFace TGI、vLLM、Open Router
    • デフォルト: なし
  • --endpoint_url

    • 目的: カスタムエンドポイントのURL
    • デフォルト: なし
  • --endpoint_api_key

    • 目的: カスタムエンドポイントのAPIキー
    • 注: これはオプション。指定しない場合、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

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}
}

スターの歴史

Star History Chart