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 和查询历史描述表的形状和用法
  • 真正的含义在产生数据的代码中
  • 管道逻辑捕获假设、新鲜度保证和业务意图