[ベンチマークの内容] ♦ [はじめに] ♦ [ライブデモ] ♦ [BrowserGym] ♦ [この作品の引用]
[ICML 2024] WorkArena: Web エージェントは共通知識の作業タスクを解決する能力はどのくらいですか? [紙]
WorkArena++: 構成計画と推論ベースの共通知識作業タスクに向けて [論文]
WorkArena
は、ナレッジ ワーカーの日常的なタスクをサポートする Web エージェントの有効性を評価するために調整されたブラウザベースのタスクのスイートです。このベンチマークは、ユビキタスな ServiceNow プラットフォームを利用することで、最新のナレッジ ワーク環境における自動化の普及状況を評価するのに役立ちます。
WorkArena は、Web エージェントを評価するための会話型ジム環境である BrowserGym に含まれています。
WorkArena をセットアップするには、独自の ServiceNow インスタンスを取得し、Python パッケージをインストールし、インスタンスにデータをアップロードする必要があります。これを実現するには、以下の手順に従ってください。
Request an instance
をクリックし、 Washington
リリースを選択します (インスタンスの初期化には数分かかります)。SNOW_INSTANCE_URL
: ServiceNow 開発者インスタンスの URLSNOW_INSTANCE_UNAME
: ユーザー名は「admin」である必要がありますSNOW_INSTANCE_PWD
: パスワード。必ず値を引用符 "" で囲み、特殊なシェル文字のエスケープに注意してください。 echo $SNOW_INSTANCE_PWD
を実行すると、正しいパスワードが出力されるはずです。警告:プラットフォームを自由に見て回ってください。ただし、これらの変更は永続的であり、ベンチマーク プロセスに影響を与えるため、変更 (リスト ビューへの変更、一部のメニューの固定など) は必ず元に戻してください。
次のコマンドを実行して、WorkArena を BrowswerGym 環境にインストールします。
pip install browsergym
次に、Playwright をインストールします。
playwright install
最後に、ターミナルで次のコマンドを実行して、ベンチマーク データを ServiceNow インスタンスにアップロードします。
workarena-install
これでインストールは完了です。 ?
現時点で、WorkArena-L1 には、ServiceNow ユーザー インターフェイスの主要コンポーネント (「アトミック」タスクとも呼ばれる) をカバーする33
タスクから抽出された19,912
の一意のインスタンスが含まれています。 WorkArena++ には 682 のタスクが含まれており、各タスクは数千の潜在的な構成の中からサンプリングされます。 WorkArena++ は、WorkArena で提供されるアトミック コンポーネントを使用し、エージェントの計画、推論、記憶能力を評価する実際のユース ケースにそれらを構成します。
次のビデオは、 GPT-4-vision
上に構築されたエージェントがベンチマークのすべてのアトミック コンポーネントと対話する様子を示しています。私たちの結果で強調されているように、このベンチマークは解決されていないため、エージェントのパフォーマンスが常に適切であるとは限りません。
目標:エージェントは、会社のナレッジ ベースで特定の情報を検索する必要があります。
エージェントは、BrowserGym の会話型インターフェイスを介してユーザーと対話します。
目標:エージェントは、複雑なフォームに各フィールドに特定の値を入力する必要があります。
目標:エージェントは、会社のサービス カタログから特定の構成の商品を注文する必要があります。
目標:エージェントは、いくつかの仕様に従ってリストをフィルタリングする必要があります。
この例では、エージェントは UI の操作に苦労し、フィルターの作成に失敗します。
目標:エージェントは、メイン メニューを使用して特定のアプリケーションに移動する必要があります。
目標:エージェントは、チャートを読み取り、(オプションで) チャートに対して簡単な推論を実行する必要がある質問に答える必要があります。
注: これは純粋な検索タスクであるため、デモンストレーションの目的で人間がカーソルを制御しています。
WorkArena をセットアップするには、独自の ServiceNow インスタンスを取得し、Python パッケージをインストールし、インスタンスにデータをアップロードする必要があります。これを実現するには、以下の手順に従ってください。
Request an instance
をクリックし、 Washington
リリースを選択します (インスタンスの初期化には数分かかります)。SNOW_INSTANCE_URL
: ServiceNow 開発者インスタンスの URLSNOW_INSTANCE_UNAME
: ユーザー名は「admin」である必要がありますSNOW_INSTANCE_PWD
: パスワード。必ず値を一重引用符 '' で囲み、特殊なシェル文字のエスケープに注意してください。 echo $SNOW_INSTANCE_PWD
を実行すると、正しいパスワードが出力されるはずです。警告:プラットフォームを自由に見て回ってください。ただし、これらの変更は永続的であり、ベンチマーク プロセスに影響を与えるため、変更 (リスト ビューへの変更、一部のメニューの固定など) は必ず元に戻してください。
次のコマンドを実行して、WorkArena を BrowswerGym 環境にインストールします。
pip install browsergym-workarena
次に、Playwright をインストールします。
playwright install
最後に、ターミナルで次のコマンドを実行して、ベンチマーク データを ServiceNow インスタンスにアップロードします。
workarena-install
これでインストールは完了です。 ?
このコードを実行して、WorkArena の動作を確認します。
注: 次の例では、WorkArena の oracle (チート) 関数を実行して各タスクを解決します。エージェントを評価するには、代わりにenv.step()
の呼び出しを使用する必要があります。
import random
from browsergym . core . env import BrowserEnv
from browsergym . workarena import ALL_WORKARENA_TASKS
from time import sleep
random . shuffle ( ALL_WORKARENA_TASKS )
for task in ALL_WORKARENA_TASKS :
print ( "Task:" , task )
# Instantiate a new environment
env = BrowserEnv ( task_entrypoint = task ,
headless = False )
env . reset ()
# Cheat functions use Playwright to automatically solve the task
env . chat . add_message ( role = "assistant" , msg = "On it. Please wait..." )
cheat_messages = []
env . task . cheat ( env . page , cheat_messages )
# Send cheat messages to chat
for cheat_msg in cheat_messages :
env . chat . add_message ( role = cheat_msg [ "role" ], msg = cheat_msg [ "message" ])
# Post solution to chat
env . chat . add_message ( role = "assistant" , msg = "I'm done!" )
# Validate the solution
reward , stop , message , info = env . task . validate ( env . page , cheat_messages )
if reward == 1 :
env . chat . add_message ( role = "user" , msg = "Yes, that works. Thanks!" )
else :
env . chat . add_message ( role = "user" , msg = f"No, that doesn't work. { info . get ( 'message' , '' ) } " )
sleep ( 3 )
env . close ()
l3
に変更します。 import random
from browsergym . core . env import BrowserEnv
from browsergym . workarena import get_all_tasks_agents
AGENT_L2_SAMPLED_SET = get_all_tasks_agents ( filter = "l2" )
AGENT_L2_SAMPLED_TASKS , AGENT_L2_SEEDS = [ sampled_set [ 0 ] for sampled_set in AGENT_L2_SAMPLED_SET ], [
sampled_set [ 1 ] for sampled_set in AGENT_L2_SAMPLED_SET
]
from time import sleep
for ( task , seed ) in zip ( AGENT_L2_SAMPLED_TASKS , AGENT_L2_SEEDS ):
print ( "Task:" , task )
# Instantiate a new environment
env = BrowserEnv ( task_entrypoint = task ,
headless = False )
env . reset ()
# Cheat functions use Playwright to automatically solve the task
env . chat . add_message ( role = "assistant" , msg = "On it. Please wait..." )
for i in range ( len ( env . task )):
sleep ( 1 )
env . task . cheat ( page = env . page , chat_messages = env . chat . messages , subtask_idx = i )
sleep ( 1 )
reward , done , message , info = env . task . validate ( page = env . page , chat_messages = env . chat . messages )
if reward == 1 :
env . chat . add_message ( role = "user" , msg = "Yes, that works. Thanks!" )
else :
env . chat . add_message ( role = "user" , msg = f"No, that doesn't work. { info . get ( 'message' , '' ) } " )
sleep ( 3 )
env . close ()
注: 次の例では、WorkArena の oracle (チート) 関数を実行して各タスクを解決します。エージェントを評価するには、代わりにenv.step()
の呼び出しを使用する必要があります。
私たちの研究を引用するには、次の BibTeX を使用してください。
@misc{workarena2024,
title={WorkArena: How Capable Are Web Agents at Solving Common Knowledge Work Tasks?},
author={Alexandre Drouin and Maxime Gasse and Massimo Caccia and Issam H. Laradji and Manuel Del Verme and Tom Marty and Léo Boisvert and Megh Thakkar and Quentin Cappart and David Vazquez and Nicolas Chapados and Alexandre Lacoste},
year={2024},
eprint={2403.07718},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
@misc{boisvert2024workarenacompositionalplanningreasoningbased,
title={WorkArena++: Towards Compositional Planning and Reasoning-based Common Knowledge Work Tasks},
author={Léo Boisvert and Megh Thakkar and Maxime Gasse and Massimo Caccia and Thibault Le Sellier De Chezelles and Quentin Cappart and Nicolas Chapados and Alexandre Lacoste and Alexandre Drouin},
year={2024},
eprint={2407.05291},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2407.05291},
}