Skip to content

Repository files navigation

IDPA · 智能数据准备 Agent

按决策难度匹配 Agent 介入方式 — 让数据分析师的业务经验从个人大脑中走出来,成为可复用、可追溯、越用越强的团队资产。


这是什么

数据准备(探索分析、清洗、特征工程)占金融分析师 40–60% 的工作时间。团队虽然有代码模板能减少编码任务,但业务规则与领域判断等高价值经验仍然留在个人大脑中,难以共享复用,决策逻辑散落在各个 notebook 中难以回溯。

IDPA 把数据准备这个环节重新组织成一个"有决策能力 + 会学习"的 Agent,核心做三件事:

  • 按决策难度分配介入方式 — 确定性规则由系统自动执行,需要判断的场景由 Agent 综合业务规则推荐方案,开放性问题在独立探索环境中人机协作
  • 每次人工介入都在训练 Agent — 探索过程中的对话、代码与诊断结论,经人工确认后自动沉淀为可复用经验
  • 所有处理步骤可追溯、可撤销 — 从原始数据到最终交付的每一步操作都有完整的 PARE 记录(Problem / Action / Result / Evidence)

核心设计:按决策难度匹配 Agent 介入方式

IDPA 最核心的产品洞察是:Agent 产品的核心设计问题不是"AI 能做什么",而是在每个环节 Agent 以何种角色参与、人承担什么职责

按决策确定性把任务分成三类,每类匹配不同的 Agent 介入方式:

决策难度 Agent 角色 人的角色 对应能力
确定性规则 执行者 — 自动处理 事前确认规则集 L1 Rule Engine
需要综合判断 提案者 — 带业务规则推荐方案 审查 / 修改 / 否决 L2 LLM Reasoning
开放性问题 助手 — 提供代码和假设 主导探索方向 L4 Sandbox
经验沉淀 提取者 — 从对话中总结 审核后入库 Method 积累

实测 190 万行 CRSP 金融数据:约 85% 任务 Agent 自主完成,剩余 15% 的人工介入同时在训练 Agent。


架构

IDPA 由五个相互配合的模块组成:

┌─────────────────────────────────────────────────────────┐
│                  Task Context                          │
│        目标 · 资源 · 规则 · 积累的经验                  │
└─────────────────────────────────────────────────────────┘
                          │
          ┌───────────────┼───────────────┐
          ▼               ▼               ▼
   ┌──────────┐    ┌──────────┐    ┌──────────┐
   │ Scanner  │    │ Planner  │    │Validator │
   │ 数据感知 │ ←→ │ LLM 决策 │ ←→ │ 三层校验 │
   └──────────┘    └──────────┘    └──────────┘
                          │
                          ▼
                   ┌──────────┐
                   │ Executor │
                   │ 规则执行 │
                   └──────────┘
                          │
                          ▼
                ┌──────────────────┐
                │  State Manager   │
                │ 决策树 · 快照 · 回退 │
                └──────────────────┘
  • Scanner — 自动识别数据结构(面板/时序/截面)、列类型、质量问题
  • Task Context — 四区块知识管理:任务目标、数据资源、领域规则、积累的经验
  • Planner — LLM 驱动的决策大脑。推荐方案、接收人类 challenge、在沙盒中协作探索
  • Executor — 按决策层级分工:L1 规则引擎、L2 LLM 策略、Custom(沙盒发现的自定义方法)
  • Validator — 三层校验:操作层、阶段层、目标层
  • State Manager — 决策树管理。支持非破坏性回退、分支对比、完整历史追溯

真实案例:190 万行 CRSP 数据

用 IDPA 处理 COVID 期间美股面板数据(190 万行 × 17 列),详见 docs/case-studies/crsp-190m.md

流程概要:

Scanner      发现 13 个数据质量问题
   ↓
L1 Rules     自动处理 8 个确定性问题(inf → NaN、重复行、负 PERMNO 等)
   ↓
L2 Missing   5 层 MECE 分组识别出 6 个缺失模式
             LLM 推荐 + 人工审查 5 个
             Group 3 触发人工挑战 → 进入沙盒
   ↓
Sandbox      7 轮人机对话探索 ASK/BID 缺失的本质
             发现可从 ASKHI/BIDLO 中间价推导
             新方法 midprice_impute 进入 Method 库
   ↓
Outlier      识别异常值模式,推荐脱水策略
   ↓
Dehydration  极端值处理 + 对数变换(原始版与脱水版并存)

关键发现: 新方法 midprice_impute 是第一次运行时从人机对话中沉淀出来的。下次遇到类似缺失模式时,它会自动出现在候选策略列表里。这就是"每次人工介入都在训练 Agent"的具体机制。


项目结构

idpa/
├── core/                   # 共享数据结构(Operation, Snapshot, QualityScore)
├── scanner/                # 数据扫描器 — 感知层
├── task_context/           # 任务上下文 — 知识管理
├── state_manager/          # 状态管理 — 决策树 + 快照
├── executor/               # 执行器 — L1/L2/Custom
├── planner/                # 规划决策 — LLM 驱动
├── validator/              # 校验器 — 三层质检
└── helpers.py              # Notebook 便捷工具

docs/
├── product/                # 产品设计文档
├── architecture/           # 架构文档
├── case-studies/           # 真实案例
├── versions/               # 设计文档迭代历史
└── guides/                 # 使用指南

notebooks/                  # 演示 notebook

快速开始

环境要求

  • Python 3.10+
  • pandas, numpy, scipy
  • OpenAI-compatible LLM 客户端

安装

git clone https://github.com/shuyul/intelligent-data-prep-agent.git
cd intelligent-data-prep-agent
pip install -e .

配置 LLM(可选,仅 Planner 模式需要)

export LLM_API_KEY="your-api-key"
export LLM_BASE_URL="https://api.anthropic.com/v1"
export LLM_MODEL="claude-sonnet-4-5"

最小示例

import pandas as pd
from idpa.scanner.scanner import DataScanner
from idpa.state_manager.manager import StateManager
from idpa.executor.executor import Executor
from idpa.executor.l1_rule_engine import L1RuleEngine, build_crsp_default_rules
from idpa.task_context.parser import build_crsp_context
from idpa.helpers import show_tree, show_node

# 加载数据
df = pd.read_csv("your_crsp_data.csv")

# Scanner 诊断
scanner = DataScanner()
scan_report = scanner.scan(df)
scanner.print_report(scan_report)

# 初始化 StateManager 和 TaskContext
sm = StateManager()
sm.init(df.copy(), id_col="PERMNO", time_col="date")
ctx = build_crsp_context(scan_report, df)

# L1 规则引擎
l1 = L1RuleEngine()
for rule in build_crsp_default_rules(id_col="PERMNO", time_col="date"):
    l1.add_rule(rule)

executor = Executor(sm, l1)
executor.confirm_all_rules()
executor.run_l1()

# 查看决策树
show_tree(sm)
show_node(sm)  # 展示当前节点的完整 PARE 记录

更完整的示例见 notebooks/IDPA_Integrated_Pipeline.ipynb


开发状态

当前版本:v0.8(2026-03-28)

已实现:

  • Scanner + Panel 结构检测
  • L1 规则引擎(CRSP 默认规则 + 自定义规则)
  • L2 Missing:5 层 MECE 分组 + 密度分布 + drop_by_density 策略
  • L2 Outlier:诊断 + 策略推荐
  • Planner 完整链路(challenge / sandbox / resolve / confirm)
  • Executor SubOperation + 完整 PARE 记录聚合
  • run_custom — 沙盒发现的方案在主流程执行并记录
  • 三层 Validator(operation / side-effect / goal-alignment)
  • 决策树可视化(show_node, compare_nodes

设计中(v0.9):

  • Method 库 + 信任升级机制(candidate → recommended → trusted → rule)
  • Agent 心智模型(六大类 × 分型 × Method)
  • Skill 层:基于 few-shot 案例的归纳演绎

路线图:

  • TaskContext 多任务支持(OLS / Probit / K-means / PCA / DiD)
  • Method PR 机制(用户贡献的方法流回主仓库)
  • 多数据集 + 外部数据源支持

设计原则

经过 v0.1 → v0.8 的迭代,以下原则被反复验证:

  1. 文档驱动开发 — 先写架构文档再编码
  2. 承诺先于功能 — 不在核心承诺未兑现的情况下增加新设计
  3. 用户视角驱动 — 作为"首位用户"亲自跑端到端测试
  4. 知识应该在知识库里,不在代码里 — 业务判断不应硬编码
  5. 分析师按实体思考,系统按行处理 — 系统需要同时支持两种视角
  6. 决策难度是动态的 — 同一个问题随着经验积累,决策层级会下降

文档


贡献

欢迎以任何形式参与:

  • Bug 报告 / 功能建议 — 通过 Issues
  • 代码贡献 — 先读 CONTRIBUTING.md
  • Method 贡献 — 如果你在使用 IDPA 过程中发现了新的数据处理方法,可以通过 PR 贡献到 Method 库

License

本项目采用 Apache 2.0 License


项目维护者

@shuyul

About

按决策难度匹配 Agent 介入方式的智能数据准备系统 | Intelligent Data Preparation Agent

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages