Keep K3 suite selection and report-schema scoring in bash, merge K3/vision dataset_args into dpv4 yamls, and pin EvalScope at 735d920ee911 with local patches. Co-authored-by: Cursor <cursoragent@cursor.com>
3.1 KiB
3.1 KiB
OfficeQA
概述
OfficeQA 是由 Databricks 构建的一个基于真实文档的推理基准测试,用于评估模型/智能体在 1939–2025 年美国财政部公告(U.S. Treasury Bulletin)文档上执行端到端 grounded reasoning 任务的性能。
任务描述
- 任务类型:基于智能体的文档问答(通过 grep/search 在语料库中检索)
- 输入:一个问题 + 通过 bash 工具访问已解析的财政部公告文本文件
- 输出:精确答案(数值、文本或结构化数据)
- 评估模式:智能体使用 bash 工具(如 grep、cat 等)在语料库上进行检索
主要特性
- 包含两个子集:
officeqa_pro(133 个问题,难度高,默认使用)和officeqa_full(246 个问题,包含简单与困难问题) - 语料库:约 900 个已解析的财政部公告文本文件(总计约 460MB)
- 智能体使用 bash 工具(grep、cat、head 等)搜索语料库
- 评分采用模糊数值匹配,支持可配置容差(默认为 1%)
评估说明
- 智能体可访问语料库目录中的已解析 .txt 文件
- 每个问题的
source_files字段指明了包含答案的文档 - 使用从官方 reward.py 改编的基于规则的评分机制
- 数值答案允许 1% 的相对误差容差
- 文本答案采用不区分大小写的子串匹配
属性
| 属性 | 值 |
|---|---|
| 基准测试名称 | officeqa |
| 数据集ID | evalscope/officeqa |
| 论文 | N/A |
| 标签 | Agent, Knowledge, QA |
| 指标 | accuracy |
| 默认示例数 | 0-shot |
| 评估划分 | train |
数据统计
| 指标 | 值 |
|---|---|
| 总样本数 | 133 |
| 提示词长度(平均) | 443.06 字符 |
| 提示词长度(最小/最大) | 165 / 1186 字符 |
样例示例
子集: default
{
"input": [
{
"id": "a6357de6",
"content": "What were the total expenditures (in millions of nominal dollars) for U.S national defense in the calendar year of 1940?\nPlease provide a precise and concise answer."
}
],
"target": "2,602",
"id": 0,
"group_id": 0,
"metadata": {
"uid": "UID0001",
"source_files": "treasury_bulletin_1941_01.txt",
"difficulty": "hard"
}
}
提示模板
提示模板:
{question}
使用方法
使用 CLI
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets officeqa \
--agent-config '{"mode":"native","strategy":"function_calling","max_steps":15}' \
--limit 10 # 正式评估时请删除此行
使用 Python
from evalscope import TaskConfig, run_task
from evalscope.api.agent import NativeAgentConfig
task_cfg = TaskConfig(
model='YOUR_MODEL',
api_url='OPENAI_API_COMPAT_URL',
api_key='EMPTY_TOKEN',
datasets=['officeqa'],
agent_config=NativeAgentConfig(
strategy='function_calling',
max_steps=15,
),
limit=10, # 正式评估时请删除此行
)
run_task(task_cfg=task_cfg)