OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  BrowserGym — 用于网页智能体训练与评测的交互环境

BrowserGym — 用于网页智能体训练与评测的交互环境

 
  fiber ·  2026-06-22 11:00:18 · 2 次点击  · 0 条评论  
![BrowserGym 横幅](https://github.com/user-attachments/assets/4853f210-43ac-4107-a0d2-95c9c614dbe7) 🛠️ [安装](#%EF%B8%8F-setup) - 🏋 [用法](#-usage) - 💻 [演示](#-demo) - 🌐 [生态系统](#-ecosystem) - 🚀 [AgentLab](https://github.com/ServiceNow/AgentLab) - 🌟 [贡献者](#-contributors) - 📄 [论文](https://arxiv.org/abs/2412.05467) - 📝 [引用](#-citing-this-work) [![pypi](https://badge.fury.io/py/browsergym.svg)](https://pypi.org/project/browsergym/) [![PyPI - License](https://img.shields.io/pypi/l/browsergym?style=flat-square)]([https://opensource.org/licenses/MIT](http://www.apache.org/licenses/LICENSE-2.0)) [![PyPI - Downloads](https://img.shields.io/pypi/dm/browsergym-core?style=flat-square)](https://pypistats.org/packages/browsergym-core) [![GitHub star chart](https://img.shields.io/github/stars/ServiceNow/BrowserGym?style=flat-square)](https://star-history.com/#ServiceNow/BrowserGym) [![Code Format](https://github.com/ServiceNow/BrowserGym/actions/workflows/code_format.yml/badge.svg)](https://github.com/ServiceNow/BrowserGym/actions/workflows/code_format.yml) [![Tests](https://github.com/ServiceNow/BrowserGym/actions/workflows/unit_tests.yml/badge.svg)](https://github.com/ServiceNow/BrowserGym/actions/workflows/unit_tests.yml)
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

🌐 生态系统

  • AgentLab:在基准测试上无缝运行代理,收集和分析轨迹。
  • WorkArena(++):面向 ServiceNow 平台上网络代理的基准测试。
  • WebArena:在自托管域上进行的逼真网络任务基准测试。
  • VisualWebArena:在自托管域上进行的逼真视觉网络任务基准测试。
  • MiniWoB(++):在合成网页上进行的 100 多个网络任务集合。
  • WebLINX:真实世界网络交互轨迹的数据集。
  • AssistantBench:在开放网络上进行的逼真且耗时任务的基准测试。
  • DoomArena:一个用于 AI 代理安全测试的框架,支持将攻击注入到 BrowserGym 环境的网页中。

🌟 贡献者

BrowserGym contributors

📝 引用本文

如果你希望引用 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 上获取。

2 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 18 ms
Developed with Cursor