> ## Documentation Index
> Fetch the complete documentation index at: https://opencompass-docs-preview-pr-335-0.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# BrowseComp

BrowseComp（[arXiv](https://arxiv.org/abs/2504.12516)）用于评测浏览型 agent 在开放网络上定位难查事实的能力：给定一个单次搜索无法回答、需持续多步浏览才能确定的问题，agent 产出一段简短的最终答案，再由 **LLM 评委** 依据标准答案判定对错。

与 DeepSearchQA 相同，BrowseComp 采用单侧判题。评委仅比对被测 agent 的答案与标准答案，不与任何基线对照。推理与判题均在本地进程（`host_process`）内完成——先由 Harness 驱动被测 model 完成检索循环并给出最终答案，再由评委 model 判分。

## 工作原理

BrowseComp 一次运行分为推理与判题两个阶段。

### 推理与判题

* **推理**：被测 model 作为检索 agent，在 Harness（默认 [`naive_search_agent`](/zh/user_guide/modules/harnesses/naive_search_agent)）驱动下逐题完成搜索 / 网页访问等多轮工具循环，并给出一段简短的自然语言最终答案。
* **判题**：评委 model（`judge_model`）接收「问题 + 标准答案 + 被测答案」，套用内置的 A/B/C 判定协议进行打分。评委仅比对最终答案，忽略推理过程与格式差异，等价表达视为一致。评委与被测 model 是两个独立端点，须显式指定 `judge_model`。

### A/B/C 判定

评委只给出一个判定结果，其中仅 **A** 记为正确：

* **A —— 正确**：答案在语义上命中标准答案（允许等价表达与格式差异）。
* **B —— 错误**：与标准答案存在任何偏差。
* **C —— 无效（未完成 / 重复 / 拒绝）**：答案不完整（中途截断）、循环重复，或明确拒答。

## 参数

通过 `--benchmark-params '{...}'` 传入一段 JSON；也可写进 `--config` 指定 YAML 的 `benchmark.params` 块，同名项以命令行为准。合并与优先级见 [Benchmark 概览](/zh/user_guide/modules/benchmarks/overview)。

### 参数总览

<div style={{overflowX:'auto'}}>
  <table style={{minWidth:'1040px', width:'100%'}}>
    <colgroup>
      <col width="18%" />

      <col width="16%" />

      <col width="15%" />

      <col width="20%" />

      <col width="31%" />
    </colgroup>

    <thead>
      <tr><th style={{whiteSpace:'nowrap'}}>参数</th><th style={{whiteSpace:'nowrap'}}>类型</th><th style={{whiteSpace:'nowrap'}}>默认值</th><th>可选值 / 取值</th><th>说明</th></tr>
    </thead>

    <tbody>
      <tr><td style={{whiteSpace:'nowrap'}}><code>judge\_model</code></td><td style={{whiteSpace:'nowrap'}}>字典</td><td style={{whiteSpace:'nowrap'}}><code>null</code></td><td><code>id</code>, <code>base\_url</code>, <code>api\_key</code>, <code>api\_protocol</code>, <code>params</code></td><td>评委 model 配置，<strong>必填</strong>（见 <a href="#评委 model-spec">评委 model 配置</a>）。判分由它裁定，非命令行的 <code>--model-\*</code>。</td></tr>
      <tr><td style={{whiteSpace:'nowrap'}}><code>category</code></td><td style={{whiteSpace:'nowrap'}}>字符串 / 列表</td><td style={{whiteSpace:'nowrap'}}><code>"all"</code></td><td><code>"all"</code>、<code>TV shows & movies</code>、<code>Other</code>、<code>Science & technology</code>、<code>Art</code>、<code>History</code>、<code>Sports</code>、<code>Music</code>、<code>Video games</code>、<code>Geography</code>、<code>Politics</code></td><td>按类别筛选任务；<code>"all"</code> = 不过滤，传入列表时取并集。各类别任务数——TV 节目 & 电影（205）、其他（197）、科学 & 技术（173）、艺术（127）、历史（125）、体育（123）、音乐（116）、视频游戏（71）、地理（70）、政治（59），合计 1266 条。</td></tr>
    </tbody>
  </table>
</div>

`sample_ids` 等共享字段遵循 [Benchmark 参数](/zh/user_guide/modules/benchmarks/overview) 的约定；多次尝试使用 `--k` 和 `--attempt-strategy`，详见[指标与聚合](/zh/user_guide/other_features/results/metrics_aggregation)。

<a id="评委 model-spec" />

### 评委 model 配置

`judge_model` 以字典形式传入，包含 `id`、`base_url`、`api_key`、`api_protocol` 和 `params`，指向评委 model 的独立端点，model 推理参数放在 `params` 下。

建议 **固定使用同一个评委** 评测所有被测 model。判分结果直接决定成绩，更换评委后成绩即失去横向可比性；同时不应让被测 model 充当自身的评委，否则既不公正也失去对照意义。评委无需特别强——A/B/C 判据（语义命中）相对客观，中等规模 model 即可胜任。AgentCompass 推荐 `Qwen3.6-35B-A3B`。

## 运行示例

`agentcompass run` 的三个位置参数依次为 Benchmark、Harness 和 Model；以下使用 `browsecomp`、[`naive_search_agent`](/zh/user_guide/modules/harnesses/naive_search_agent) 和 `$MODEL_NAME`，运行环境为 [`host_process`](/zh/user_guide/modules/environments/providers/host_process)。

运行前，在当前终端设置以下环境变量：

* 被测 Model：`MODEL_NAME`、`MODEL_BASE_URL`、`MODEL_API_KEY`，设置方法见 [Model 接入配置](/zh/user_guide/modules/models/overview#配置连接信息)。
* 评委 Model：`JUDGE_MODEL_NAME`、`JUDGE_MODEL_BASE_URL`、`JUDGE_MODEL_API_KEY`，使用独立且固定的评委配置。
* 检索工具：`SERPER_API_KEY` 和 `JINA_API_KEY`，分别供 `search` 和 `visit` 使用。

配置归属与命令行覆盖规则见 [run 命令](/zh/user_guide/using_agentcompass/cli/run)。

<Tabs>
  <Tab title="冒烟测试（单条跑通）">
    通过 `sample_ids` 仅评测一条任务，用于验证推理与判题的端到端流程是否正常，其余参数使用默认值。

    ```bash wrap theme={"system"}
    agentcompass run \
      browsecomp \
      naive_search_agent \
      "$MODEL_NAME" \
      --env host_process \
      --benchmark-params '{
        "judge_model": {
          "id": "'"$JUDGE_MODEL_NAME"'",
          "base_url": "'"$JUDGE_MODEL_BASE_URL"'",
          "api_key": "'"$JUDGE_MODEL_API_KEY"'"
        },
        "sample_ids": ["1"]
      }' \
      --harness-params '{
        "serper_api_key": "${SERPER_API_KEY}",
        "jina_api_key": "${JINA_API_KEY}"
      }' \
      --model-base-url "$MODEL_BASE_URL" \
      --model-api-key "$MODEL_API_KEY" \
      --model-api-protocol openai-chat
    ```
  </Tab>

  <Tab title="自定义参数">
    仅评测部分类别的子集，便于聚焦分析特定领域；同时演示如何在 `--harness-params` 中降低迭代上限。

    ```bash wrap theme={"system"}
    agentcompass run \
      browsecomp \
      naive_search_agent \
      "$MODEL_NAME" \
      --env host_process \
      --benchmark-params '{
        "judge_model": {
          "id": "'"$JUDGE_MODEL_NAME"'",
          "base_url": "'"$JUDGE_MODEL_BASE_URL"'",
          "api_key": "'"$JUDGE_MODEL_API_KEY"'"
        },
        "category": ["Science & technology", "Geography"]
      }' \
      --harness-params '{
        "max_iterations": 40,
        "serper_api_key": "${SERPER_API_KEY}",
        "jina_api_key": "${JINA_API_KEY}"
      }' \
      --model-base-url "$MODEL_BASE_URL" \
      --model-api-key "$MODEL_API_KEY" \
      --model-api-protocol openai-chat \
      --task-concurrency 16
    ```
  </Tab>

  <Tab title="AgentCompass 推荐配置">
    评测全部任务。`--benchmark-params` 仅需提供评委 model `judge_model`；通过 `--task-concurrency` 提升跨任务并发。

    ```bash wrap theme={"system"}
    agentcompass run \
      browsecomp \
      naive_search_agent \
      "$MODEL_NAME" \
      --env host_process \
      --benchmark-params '{
        "judge_model": {
          "id": "'"$JUDGE_MODEL_NAME"'",
          "base_url": "'"$JUDGE_MODEL_BASE_URL"'",
          "api_key": "'"$JUDGE_MODEL_API_KEY"'"
        }
      }' \
      --harness-params '{
        "serper_api_key": "${SERPER_API_KEY}",
        "jina_api_key": "${JINA_API_KEY}"
      }' \
      --model-base-url "$MODEL_BASE_URL" \
      --model-api-key "$MODEL_API_KEY" \
      --model-api-protocol openai-chat \
      --task-concurrency 16
    ```
  </Tab>
</Tabs>

<a id="输出" />

## 评测结果

通用结果说明见[运行目录](/zh/user_guide/other_features/results/overview#目录布局)、[汇总成绩](/zh/user_guide/other_features/results/summary_analysis)和[单题文件与公共字段](/zh/user_guide/other_features/results/task_results)。

<a id="指标契约与聚合序列" />

### 评分指标

BrowseComp 的主指标是二元 `correct`：按前文的 [A/B/C 判定](#abc-判定)，A 对应 `true`，B/C 对应 `false`，不提供部分分。

默认配置下，每题尝试一次，总体成绩为有效计分任务的准确率，取值为 0–1，越高越好。例如，100 道题均取得有效判定，其中 63 道正确，报告中的 `0.63` 即 63%。使用 `category` 或 `sample_ids` 筛选任务后，成绩只覆盖所选任务。

多次尝试、分类聚合和计分异常的处理见[指标与聚合](/zh/user_guide/other_features/results/metrics_aggregation)。

<a id="单任务详情details" />

### 单题结果与评分依据

每次尝试评分成功后，`meta.benchmark` 下的 `scoring` 保存以下信息：

| 字段 | 内容 |
| - | - |
| `evaluation_type` | 固定为 `llm_judge`，表示使用评委 model 判题。 |
| `correct` | 解析后的布尔判定，与 `metrics.correct` 一致。 |
| `model_answer` | 交给评委的最终答案。 |
| `ground_truth` | 交给评委的标准答案。 |

该评分记录保留判定和比对的答案，不保存评委的原始回复或推理说明。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.