[!WARNING]
AgentLab 旨在提供一个开放、易用且可扩展的框架,以加速网络智能体研究领域的发展。
它并非一个消费级产品。请谨慎使用!
AgentLab 是一个用于在各种由 BrowserGym 支持的基准测试上开发和评估智能体的框架。更多细节请参阅我们的 BrowserGym 生态系统论文。
AgentLab 特性:
* 使用 ray 轻松进行大规模并行智能体实验
* 基于 BrowserGym 构建智能体的基础模块
* 统一的 LLM API,支持 OpenRouter、OpenAI、Azure 或使用 TGI 自托管模型
* 运行 WebArena 等基准测试的首选方式
* 多种可复现性特性
* 统一的排行榜
| 基准测试 | 安装 链接 |
任务模板 数量 |
种子 多样性 |
最大 步数 |
多标签页 | 托管方式 | BrowserGym 排行榜 |
|---|---|---|---|---|---|---|---|
| WebArena | 安装 | 812 | 无 | 30 | 是 | 自托管 (docker) | 即将支持 |
| WebArena-Verified | 安装 | 812 | 无 | 30 | 是 | 自托管 | 即将支持 |
| WorkArena L1 | 安装 | 33 | 高 | 30 | 否 | 演示实例 | 即将支持 |
| WorkArena L2 | 安装 | 341 | 高 | 50 | 否 | 演示实例 | 即将支持 |
| WorkArena L3 | 安装 | 341 | 高 | 50 | 否 | 演示实例 | 即将支持 |
| WebLinx | - | 31586 | 无 | 1 | 否 | 自托管 (数据集) | 即将支持 |
| VisualWebArena | 安装 | 910 | 无 | 30 | 是 | 自托管 (docker) | 即将支持 |
| AssistantBench | 安装 | 214 | 无 | 30 | 是 | 实时网站 | 即将支持 |
| GAIA (即将支持) | - | - | 无 | - | - | 实时网站 | 即将支持 |
| Mind2Web-live (即将支持) | - | - | 无 | - | - | 实时网站 | 即将支持 |
| MiniWoB | 安装 | 125 | 中 | 10 | 否 | 自托管 (静态文件) | 即将支持 |
| OSWorld | 安装 | 369 | 无 | - | - | 自托管 | 即将支持 |
| TimeWarp | 安装 | 1386 | 无 | 30 | 是 | 自托管 | 即将支持 |
AgentLab 需要 Python 3.11 或 3.12。
pip install agentlab
如果尚未安装,请安装 Playwright:
playwright install
请确保按照安装列中提供的说明准备所需的基准测试。
export AGENTLAB_EXP_ROOT=<实验结果的根目录> # 默认为 $HOME/agentlab_results
export OPENAI_API_KEY=<你的 openai api key> # 如果使用 openai 模型
export OPENROUTER_API_KEY=<你的 openrouter api key> # 如果使用 openrouter 模型
export AZURE_OPENAI_API_KEY=<你的 azure api key> # 如果使用 azure 模型
export AZURE_OPENAI_ENDPOINT=<你的 endpoint> # 如果使用 azure 模型
使用助手为你工作(风险自负,并可能产生费用)。
agentlab-assistant --start_url https://www.google.com
尝试你自己的智能体:
agentlab-assistant --agent_config="module.path.to.your.AgentArgs"
# 导入你的智能体配置,它应继承 bgym.AgentArgs 类
# 确保此对象可以从 PYTHONPATH 可访问的模块导入,以便正确反序列化
from agentlab.agents.generic_agent import AGENT_4o_MINI
from agentlab.experiments.study import make_study
study = make_study(
benchmark="miniwob", # 或 "webarena", "workarena_l1" ...
agent_args=[AGENT_4o_MINI],
comment="我的第一个研究",
)
study.run(n_jobs=5)
重新启动未完成或出错的任务
from agentlab.experiments.study import Study
study = Study.load("/path/to/your/study/dir")
study.find_incomplete(include_errors=True)
study.run()
查看 main.py 以使用各种选项启动实验。这就像一个懒人 CLI,实际上更方便。只需注释或取消注释你需要的行,或按需修改(但不要推送到仓库)。
复杂的网络环境、Playwright 和 asyncio 有时可能导致任务挂起。这会禁用工作进程,直到研究被终止并重新启动。如果你按顺序运行任务或使用少量工作进程,这可能会暂停你的整个研究,直到你手动终止并重新启动它。在 Ray 并行后端中,我们实现了一个系统来自动终止超过指定超时时间的任务。当任务挂起限制你的实验时,此功能特别有用。
为了调试,请使用 n_jobs=1 运行实验,并使用 VSCode 的调试模式。这允许你在断点处暂停执行。
一个智能体在一个任务上运行对应一个任务。在数百个任务和多个种子上进行消融研究或随机搜索可以生成超过 10,000 个任务。因此,高效的并行执行至关重要。智能体通常等待来自 LLM 服务器的响应或来自 Web 服务器的更新。因此,你可以在单台计算机上并行运行 10-50 个任务,具体取决于可用 RAM。
⚠️ 关于 (Visual)WebArena 的注意事项:这些基准测试具有任务依赖性,旨在最小化任务之间的实例“损坏”。例如,任务 323 上的智能体可能会改变实例状态,使任务 201 无法完成。为了解决这个问题,Ray 后端考虑了任务依赖性,从而实现了一定程度的并行性。在 WebArena 上,你可以禁用依赖性以增加并行性,但这可能会使性能降低 1-2%。
⚠️ (Visual)WebArena 的实例重置:在评估智能体之前,实例会自动重置,这个过程大约需要 5 分钟。当评估多个智能体时,make_study 函数返回一个 SequentialStudies 对象,以确保每个智能体按顺序正确评估。AgentLab 目前不支持跨多个实例的评估,但你可以创建一个快速脚本来处理这个问题,或者向 AgentLab 提交一个 PR。为了获得更流畅的并行体验,请考虑使用 WorkArena 等基准测试。
类 ExpResult 提供了一个懒加载器,用于加载特定实验的所有信息。你可以使用 yield_all_exp_results 递归查找目录中的所有结果。最后,load_result_df 将所有摘要信息收集到一个 DataFrame 中。有关示例用法,请参阅 inspect_results.ipynb。
from agentlab.analyze import inspect_results
# 将研究中所有实验的摘要加载到 DataFrame 中
result_df = inspect_results.load_result_df("path/to/your/study")
# 加载第一个实验的详细结果
exp_result = bgym.ExpResult(result_df["exp_dir"][0])
step_0_screenshot = exp_result.screenshots[0]
step_0_action = exp_result.steps_info[0].action
https://github.com/user-attachments/assets/06c4dac0-b78f-45b7-9405-003da4af6b37
在终端中执行:
agentlab-xray
你可以在目录 AGENTLAB_EXP_ROOT 中加载先前或正在进行的实验,并在 gradio 界面中可视化结果。
按以下顺序选择:
* 你想要可视化的实验
* 如果有多个智能体,选择智能体
* 任务
* 种子
选择完成后,你可以看到智能体在给定任务上的轨迹。点击分析图像以选择一个步骤,并观察智能体采取的操作。
⚠️ 注意:Gradio 仍在开发中,经常出现意外行为。到目前为止,版本 5.5 似乎工作正常。如果你不确定显示的信息是否正确,请刷新页面并重新选择你的实验。
所有基准测试的官方统一排行榜。
使用 GenericAgent 进行更多参考点的实验正在进行中。我们还在开发自动将研究推送到排行榜的代码。
从 agentlab/agents/most_basic_agent/most_basic_agent.py 中的 MostBasicAgent 获取灵感。为了更好地与工具集成,请确保实现 AgentArgs API 和扩展的 bgym.AbstractAgentArgs 中的大部分函数。
如果你认为你的智能体应该直接包含在 AgentLab 中,请告诉我们,它可以被添加到 agentlab/agents/ 目录下,并以你的智能体命名。
在动态基准测试上评估智能体时,有几个因素会影响结果的可复现性。
Study 包含一个关于可复现性的信息字典,包括基准测试版本、包版本和提交哈希。Study 类允许将你的结果自动上传到 reproducibility_journal.csv。这使得填充大量参考点变得更加容易。对于此功能,你需要 git clone 仓库并通过 pip install -e . 安装。以下是 AgentLab 使用的相关环境变量列表:
- OPENAI_API_KEY,默认用于 OpenAI LLMs。
- AZURE_OPENAI_API_KEY,默认用于 AzureOpenAI LLMs。
- AZURE_OPENAI_ENDPOINT 用于指定你的 Azure 端点。
- OPENAI_API_VERSION 用于 Azure API。
- OPENROUTER_API_KEY 用于 Openrouter API。
- AGENTLAB_EXP_ROOT,你希望存储实验结果的路径,默认为 ~/agentlab-results。
- AGENTXRAY_SHARE_GRADIO,提示 AgentXRay 在启动时打开公共隧道。
- RAY_PUBLIC_DASHBOARD (true / false),用于指定 ray 仪表板是否应公开访问 (0.0.0.0) 或仅本地访问 (127.0.0.1)。
- RAY_DASHBOARD_PORT (int),用于指定 ray 仪表板应访问的端口。
如果你想更快地下载 HF 模型
pip install hf-transfer
pip install torch
export HF_HUB_ENABLE_HF_TRANSFER=1
如果你想引用 AgentLab,请使用以下两个 bibtex 条目:
```tex
@article{
chezelles2025browsergym,
title={The BrowserGym Ecosystem