pip install browsergym
[!WARNING]
BrowserGym 旨在提供一个开放、易用且可扩展的框架,以加速网络代理研究领域的发展。
它并非面向消费者的产品,请谨慎使用![!TIP]
🚀 欢迎试用 AgentLab✨!
这是一个无缝的框架,可用于在 BrowserGym 的所有基准测试上实现、测试和评估你的网络代理。
https://github.com/ServiceNow/BrowserGym/assets/26232819/e0bfc788-cc8e-44f1-b8c3-0d1114108b85
示例:GPT4-V 代理执行的开放式任务(顶行,聊天交互式)以及 WebArena 和 WorkArena 任务(底行)。
BrowserGym 默认包含以下基准测试:
- MiniWoB
- WebArena
- WebArenaVerified
- VisualWebArena
- WorkArena
- AssistantBench
- WebLINX(静态基准测试)
- OpenApps
- TimeWarp
使用 BrowserGym 设计新的网络基准测试非常简单,只需继承 AbstractBrowserTask 类即可。
要使用 browsergym,请安装以下软件包之一:
pip install browsergym # (推荐)安装以下所有内容
pip install browsergym-experiments # 实验工具(代理、循环、基准测试)+ 以下所有内容
pip install browsergym-core # 仅核心功能(无基准测试,仅开放式任务)
pip install browsergym-miniwob # 核心 + miniwob
pip install browsergym-webarena # 核心 + webarena
pip install browsergym-webarena-verified # 核心 + webarena_verified
pip install browsergym-visualwebarena # 核心 + visualwebarena
pip install browsergym-workarena # 核心 + workarena
pip install browsergym-assistantbench # 核心 + assintantbench
pip install weblinx-browsergym # 核心 + weblinx
pip install browsergym-timewarp # 核心 + timewarp
然后通过运行以下命令设置 playwright:
playwright install chromium
最后,每个基准测试都有其特定的设置,需要执行额外的步骤。
- 对于 MiniWoB++,请参见 miniwob/README.md
- 对于 WebArena,请参见 webarena/README.md
- 对于 WebArenaVerified,请参见 webarena_verified/README.md
- 对于 VisualWebArena,请参见 visualwebarena/README.md
- 对于 WorkArena,请参见 WorkArena
- 对于 AssistantBench,请参见 assistantbench/README.md
- 对于 OpenApps,请参见 OpenApps 文档
- 对于 TimeWarp,请参见 timewarp/README.md
要以开发模式在本地安装 browsergym,请使用以下命令:
git clone git@github.com:ServiceNow/BrowserGym.git
cd BrowserGym
make install
欢迎贡献!😊
在交互式、开放式任务上运行代理的样板代码:
import gymnasium as gym
import browsergym.core # 将开放式任务注册为 gym 环境
# 启动一个开放式环境
env = gym.make(
"browsergym/openended",
task_kwargs={"start_url": "https://www.google.com/"}, # 起始 URL
wait_for_user_message=True, # 每次向聊天发送代理消息后等待用户消息
)
# 运行环境 <> 代理循环,直到终止
obs, info = env.reset()
while True:
action = ... # 在此处实现你的代理
obs, reward, terminated, truncated, info = env.step(action)
if terminated or truncated:
break
# 释放环境
env.close()
MiniWoB
import gymnasium as gym
import browsergym.miniwob # 将 miniwob 任务注册为 gym 环境
# 启动一个 miniwob 任务
env = gym.make("browsergym/miniwob.choose-list")
...
# 列出所有可用的 miniwob 任务
env_ids = [id for id in gym.envs.registry.keys() if id.startswith("browsergym/miniwob")]
print("\n".join(env_ids))
WorkArena
import gymnasium as gym
import browsergym.workarena # 将 workarena 任务注册为 gym 环境
# 启动一个 workarena 任务
env = gym.make("browsergym/workarena.servicenow.order-ipad-pro")
...
# 列出所有可用的 workarena 任务
env_ids = [id for id in gym.envs.registry.keys() if id.startswith("browsergym/workarena")]
print("\n".join(env_ids))
WebArena
import gymnasium as gym
import browsergym.webarena # 将 webarena 任务注册为 gym 环境
# 启动一个 webarena 任务
env = gym.make("browsergym/webarena.310")
...
# 列出所有可用的 webarena 任务
env_ids = [id for id in gym.envs.registry.keys() if id.startswith("browsergym/webarena")]
print("\n".join(env_ids))
VisualWebArena
import gymnasium as gym
import browsergym.webarena # 将 webarena 任务注册为 gym 环境
# 启动一个 visualwebarena 任务
env = gym.make("browsergym/visualwebarena.721")
...
# 列出所有可用的 visualwebarena 任务
env_ids = [id for id in gym.envs.registry.keys() if id.startswith("browsergym/visualwebarena")]
print("\n".join(env_ids))
AssistantBench
import gymnasium as gym
import browsergym.workarena # 将 assintantbench 任务注册为 gym 环境
# 启动一个 assintantbench 任务
env = gym.make("browsergym/assistantbench.validation.3")
...
# 列出所有可用的 assintantbench 任务
env_ids = [id for id in gym.envs.registry.keys() if id.startswith("browsergym/workarena")]
print("\n".join(env_ids))
OpenApps
from open_apps.apps.start_page.main import app # 需要导入应用以提供服务
from open_apps.launcher import OpenAppsLauncher
config = ... # 配置包含任务、代理、环境和服务器配置的命名空间
launcher = OpenAppsLauncher(config)
launcher.launch()
TimeWarp
import gymnasium as gym
import browsergym.timewarp # 将 timewarp 任务注册为 gym 环境
# 启动一个 timewarp 任务
env = gym.make("browsergym/timewarp.1")
...
# 列出所有可用的 timewarp 任务
env_ids = [id for id in gym.envs.registry.keys() if id.startswith("browsergym/timewarp")]
print("\n".join(env_ids))
如果你想在 BrowserGym 中尝试演示代理,请执行以下步骤:
# conda 设置
conda env create -f demo_agent/environment.yml
conda activate demo_agent
# 或 pip 设置
pip install -r demo_agent/requirements.txt
# 然后为 playwright 下载浏览器
playwright install chromium
我们的演示代理使用 openai 作为后端,请确保设置好你的 OPENAI_API_KEY。
按如下方式启动演示代理:
# 开放式(交互式聊天模式)
python demo_agent/run_demo.py --task_name openended --start_url https://www.google.com
# miniwob
python demo_agent/run_demo.py --task_name miniwob.click-test
# workarena
python demo_agent/run_demo.py --task_name workarena.servicenow.order-standard-laptop
# webarena
python demo_agent/run_demo.py --task_name webarena.4
# visualwebarena
python demo_agent/run_demo.py --task_name visualwebarena.398
你可以自定义体验,将 model_name 更改为你偏好的 LLM(默认使用 gpt-4o-mini),通过 use_screenshot 为你的 VLM 添加屏幕截图等等!
python demo_agent/run_demo.py --help
如果你希望引用 BrowserGym,请使用以下两条 bibtex 条目:
@article{
chezelles2025browsergym,
title={The BrowserGym Ecosystem for Web Agent Research},
author={Thibault Le Sellier de Chezelles and Maxime Gasse and Alexandre Lacoste and Massimo Caccia and Alexandre Drouin and L{\'e}o Boisvert and Megh Thakkar and Tom Marty and Rim Assouel and Sahar Omidi Shayegan and Lawrence Keunho Jang and Xing Han L{\`u} and Ori Yoran and Dehan Kong and Frank F. Xu and Siva Reddy and Graham Neubig and Quentin Cappart and Russ Salakhutdinov and Nicolas Chapados},
journal={Transactions on Machine Learning Research},
issn={2835-8856},
year={2025},
url={https://openreview.net/forum?id=5298fKGmv3},
note={Expert Certification}
}
@inproceedings{workarena2024,
title = {{W}ork{A}rena: How Capable are Web Agents at Solving Common Knowledge Work Tasks?},
author = {Drouin, Alexandre and Gasse, Maxime and Caccia, Massimo and Laradji, Issam H. and Del Verme, Manuel and Marty, Tom and Vazquez, David and Chapados, Nicolas and Lacoste, Alexandre},
booktitle = {Proceedings of the 41st International Conference on Machine Learning},
pages = {11642--11662},
year = {2024},
editor = {Salakhutdinov, Ruslan and Kolter, Zico and Heller, Katherine and Weller, Adrian and Oliver, Nuria and Scarlett, Jonathan and Berkenkamp, Felix},
volume = {235},
series = {Proceedings of Machine Learning Research},
month = {21--27 Jul},
publisher = {PMLR},
url = {https://proceedings.mlr.press/v235/drouin24a.html},
}
以下是一个引用示例:
We use the BrowserGym framework for our experiments \cite{workarena2024,chezelles2025browsergym}.
论文 "The BrowserGym Ecosystem for Web Agent Research" 中的轨迹可在 Huggingface 上获取。