Inside OpenAI’s In-House Data Agent
核心概述
OpenAI 构建了一个定制化的内部数据 Agent,用于在其数据平台上进行探索和推理。该 Agent 让员工从提问到洞察只需几分钟而非几天,降低了数据分析的门槛,覆盖工程、数据科学、GTM、财务和研究团队。
为什么需要定制工具
- 数据平台服务 3,500+ 内部用户
- 跨越 600 PB 数据,70,000 个数据集
- 光找到正确的表就是最耗时的环节
- 相似表之间差异难以辨别(是否包含未登录用户、字段重叠等)
- 常见失败模式:多对多 join、filter 下推错误、未处理的 null 值
技术架构
模型: GPT-5.2
接入方式: Slack Agent、Web 界面、IDE、Codex CLI(MCP)、ChatGPT 内部应用(MCP 连接器)
核心能力:
- 端到端分析:理解问题 → 探索数据 → 执行查询 → 综合发现
- 闭环自学习:评估自身进展,中间结果出错时自主调查、调整、重试
- 跨轮次保持完整上下文
六层上下文架构(重点)
Layer 1: Table Usage(表使用)
- Schema 元数据(列名、数据类型)
- 表血缘关系(上下游表关系)
- 历史查询模式推断
Layer 2: Human Annotations(人工标注)
- 领域专家提供的表和列描述
- 捕获意图、语义、业务含义和已知注意事项
Layer 3: Codex Enrichment(代码级理解)
- 通过分析代码库理解表的真实含义
- 理解数据的唯一性、更新频率、范围
- 区分看似相似但关键差异的表
- 自动刷新,无需人工维护
Layer 4: Institutional Knowledge(组织知识)
- 访问 Slack、Google Docs、Notion
- 捕获发布、可靠性事件、内部代号、指标定义
- 嵌入存储并带权限控制
Layer 5: Memory(记忆)
- Agent 从更正和对话中学习
- 保留并复用非显而易见的更正、过滤器、约束
- 支持全局和个人级别的记忆
- 用户可手动创建和编辑
Layer 6: Runtime Context(运行时上下文)
- 无先验上下文时,实时查询数据仓库
- 与元数据服务、Airflow、Spark 等系统交互
检索架构
- 离线管道每日聚合前四层上下文为统一表示
- 使用 OpenAI Embeddings API 转为嵌入向量存储
- 查询时通过 RAG 检索最相关上下文
- 运行时查询实时执行
评估体系
- 基于精选的问答对,每个问题配有手工编写的”黄金” SQL
- 生成 SQL 与预期 SQL 的结果比较(非简单字符串匹配)
- 使用 OpenAI Evals API 进行评分和推理
- 类似持续运行的单元测试,用于回归检测
安全设计
- 严格的直通式权限控制:用户只能查询已授权的表
- 缺少权限时标记或回退到有权替代数据集
- 透明推理:展示假设和执行步骤,链接到底层查询结果
经验教训
Lesson 1: Less is More
- 暴露全部工具集导致功能重叠混乱
- 精简和合并工具调用提升可靠性
Lesson 2: Guide the Goal, Not the Path
- 高度规范性的 prompt 反而降低结果质量
- 给高层级指导,依赖模型推理选择执行路径
Lesson 3: Meaning Lives in Code
- Schema 和查询历史描述表的形状和用法
- 真正的含义在产生数据的代码中
- 管道逻辑捕获假设、新鲜度保证和业务意图