跳转到主要内容
本页介绍如何将新的 Benchmark 集成到 browseruse-bench 框架中。

目录结构

每个 Benchmark 需要以下目录结构:
benchmarks/
└── <YourBenchmark>/
    ├── README.md           # Benchmark 说明文档
    ├── data/
    │   └── tasks.json      # 任务数据
    ├── data_info.json      # 数据版本和分割信息
    └── evaluator.py        # 评估脚本(可选)

Step 1: 创建任务数据

tasks.json 格式

[
  {
    "task_id": "your_task_001",
    "task": "任务描述,Agent 将看到这个描述",
    "website": "example.com",
    "category": "信息获取",
    "expected_result": "期望的结果描述",
    "requires_login": false,
    "difficulty": "easy"
  },
  {
    "task_id": "your_task_002",
    "task": "另一个任务描述",
    "website": "example.org",
    "category": "表单填写",
    "expected_result": "表单提交成功",
    "requires_login": true,
    "difficulty": "medium"
  }
]

必需字段

字段类型说明
task_idstring唯一任务 ID
taskstring任务描述

可选字段

字段类型说明
websitestring目标网站
categorystring任务类别
expected_resultstring期望结果
requires_loginboolean是否需要登录
difficultystring难度等级

Step 2: 创建数据信息文件

data_info.json

{
  "name": "YourBenchmark",
  "description": "你的 Benchmark 描述",
  "default_version": "20251231",
  "versions": {
    "20251231": {
      "data_file": "data/tasks.json",
      "splits": {
        "All": null,
        "Easy": {"difficulty": "easy"},
        "Medium": {"difficulty": "medium"},
        "Hard": {"difficulty": "hard"}
      }
    }
  }
}

Split 过滤规则

  • null:包含所有任务
  • {"field": "value"}:按字段值过滤
  • {"field": ["v1", "v2"]}:按字段值列表过滤

Step 3: 创建评估器(可选)

如果需要自定义评估逻辑,创建 evaluator.py
from browseruse_bench.eval.base_evaluator import BaseEvaluator

class YourBenchmarkEvaluator(BaseEvaluator):
    """自定义评估器"""
    
    def evaluate_task(self, task_id: str, result: dict) -> dict:
        """
        评估单个任务
        
        Args:
            task_id: 任务 ID
            result: Agent 返回的结果
            
        Returns:
            评估结果字典,包含 predicted_label 和 score
        """
        # 你的评估逻辑
        score = self._calculate_score(result)
        
        return {
            "predicted_label": 1 if score >= 60 else 0,
            "score": score,
            "evaluation_details": {
                "grader_response": "评估详情..."
            }
        }

Step 4: 注册 Benchmark

browseruse_bench/benchmarks/__init__.py 中注册:
BENCHMARKS = {
    "LexBench-Browser": ...,
    "Online-Mind2Web": ...,
    "BrowseComp": ...,
    "YourBenchmark": {
        "data_dir": "benchmarks/YourBenchmark",
        "evaluator": "browseruse_bench.eval.your_evaluator:YourBenchmarkEvaluator"
    }
}

Step 5: 测试

# 测试运行
uv run scripts/run.py \
  --agent browser-use \
  --benchmark YourBenchmark \
  --mode first_n --count 3

# 测试评估
uv run scripts/eval.py \
  --agent browser-use \
  --benchmark YourBenchmark

完整示例

查看现有 Benchmark 作为参考:
  • benchmarks/LexBench-Browser/ - 完整的 Benchmark 实现
  • benchmarks/Online-Mind2Web/ - Mind2Web 集成示例
  • benchmarks/BrowseComp/ - 简单 Benchmark 示例