FDAbench-Full 数据代理任务基准:Python 使用路径
版本:2025-10
适用场景:快速跑通 FDAbench 本地 SQLite 任务评测;为后续 Full(含云数据库与非结构化数据)做准备。
来源:FDABench 官方论文《FDABench: A Benchmark for Data Agents on Analytical Queries over Heterogeneous Data》(南洋理工大学 / 新加坡国立大学 / 华为技术有限公司,2025)
一、项目背景与任务结构
FDAbench-Full 是首个专为 Data Agents 设计的异构数据分析基准,2025 年发布,共含 2,007 个分析任务,涵盖:
- 数据库查询生成
- SQL 理解
- 金融数据分析
每条样例包含:
task_id
(任务唯一标识符)instance_id
(实例标识符)db
(数据库名称/标识符)level
(难度等级:easy / medium / hard)database_type
(数据库系统类型)question_type
(问题类别)tools_available
(可用工具列表)query
(主要问题/查询文本)
数据分为三类任务:
single
:单选题multiple
:多选题report
:结构化分析报告
二、Python 环境准备
推荐环境:Python 3.10+ / Conda
conda create -n fdabench python=3.11 -y
conda activate fdabench
基础依赖
pip install datasets pandas numpy tqdm rouge-score evaluate sqlalchemy duckdb matplotlib
可选:如需 LLM 或云数据库支持
pip install openai python-dotenv
pip install snowflake-connector-python google-cloud-bigquery pybigquery
三、数据加载(HuggingFace)
from datasets import load_dataset# 加载 FDAbench-Full
ds = load_dataset("FDAbench2026/FDAbench-Full")
print(ds)
# 访问样例
sample = ds['report'][0]
HuggingFace 版本同时提供 FDAbench-Lite(289 条 SQLite 任务),可用于快速测试。
四、项目结构
fdabench-local/
├─ run.py # 入口脚本:批量评测
├─ router.py # 任务类型分发
├─ tools/
│ ├─ sql_exec.py # SQLite/DuckDB 执行器
│ └─ schema_introspect.py
├─ agents/
│ └─ mini_agent.py # 规划→执行→结果→评测
├─ eval/
│ ├─ metrics.py # EX/ROUGE/TR/SR 计算
│ └─ logger.py
├─ data/
│ ├─ sqlite/ # *.sqlite 本地数据库
│ └─ cache/
└─ configs/└─ local.yaml
五、任务路由逻辑
def route_task(sample):qtype = sample["question_type"]if qtype == "single":return run_single_choice(sample)elif qtype == "multiple":return run_multiple_choice(sample)elif qtype == "report":return run_report(sample)else:raise ValueError(f"Unknown question_type: {qtype}")
六、SQLite 查询执行器
import sqlite3, pandas as pddef run_sqlite_query(db_path: str, sql: str) -> pd.DataFrame:with sqlite3.connect(db_path) as conn:return pd.read_sql_query(sql, conn