产品

OpenAI 内部 Data Agent:难点不是写 SQL,而是找对上下文

从表使用信息、人工注释、管道代码、机构知识、运行时反馈和记忆机制,拆解企业 Data Agent 的上下文工程。

产品 #Data Agent#OpenAI#上下文工程#数据目录

OpenAI 内部 Data Agent 的六类上下文

表里都有 user_id,为什么两次查询算出的活跃用户仍不一样?企业问数最难的部分常常发生在 SQL 生成之前:应该用哪张表、哪个时间字段、哪套过滤条件,以及哪份定义仍然有效。

OpenAI 在 2026 年 1 月公开的内部实践,把问题中心放在上下文工程。文章给出的当时规模快照是超过 3,500 名内部用户、600PB 数据和约 70,000 个数据集。规模数字很醒目,但更值得借鉴的是系统如何缩小候选上下文。

六类上下文不是同一种知识

来源提供什么典型风险
表使用信息Schema、血缘、历史查询热门查询未必正确
人工注释业务含义、已知问题、Owner 经验可能过期或只适用于局部
管道代码派生逻辑、过滤条件、新鲜度线索实现复杂,需结合运行状态
机构知识文档、讨论、决策背景权威性和时效差异大
运行时反馈查询结果、错误和数据分布只能说明本次执行状态
记忆与纠正已验证修正和失败经验必须限制适用域与版本

这些材料不能简单拼进一个超长提示词。系统需要先检索候选资产,再按权限、时间、粒度和问题相关性收窄,并保留为什么选择这份上下文的证据。

查询生成只是中段

一个更完整的链路是:理解意图 → 检索元数据与机构知识 → 选择候选表和可信查询 → 生成与执行 → 根据错误和结果修正 → 独立验证 → 记录可复用纠正。

其中,执行反馈很关键。空结果可能意味着过滤错误,也可能是真实业务现象;SQL 成功只能证明语法和运行环境接受了它,不能证明业务语义正确。

记忆必须有适用边界

“上次把 created_at 换成 activated_at 就对了”不是全局规则。可靠记忆至少要绑定数据域、指标、表版本、时间范围和验证证据。否则一次有效纠正会成为下一次错误来源。

对企业团队的启示

不要先追求覆盖所有数据。先选一个定义相对稳定、Owner 明确、错误代价可控的业务域,建设可检索的资产说明、可信查询、运行时权限和回归任务集。每次纠正都进入审阅流程,而不是直接写入永久记忆。

这套内部实践不是可直接采购的产品规格。它真正说明的是:当数据规模扩大后,Data Agent 的瓶颈会从“能不能生成 SQL”转向“能不能找到、约束并验证正确的上下文”。

评测也要围绕上下文错误设计

只用“最终答案是否正确”做评测,很难定位系统该怎么改。更有用的任务集会单独标注:是否选中了正确资产,是否命中了有效指标版本,是否使用了合法 Join,遇到过期注释时有没有降权,查询结果与可信基线差异来自哪里。这样才能判断失败发生在检索、语义、执行还是解释阶段。

生产监控也应保留上下文包的版本和检索轨迹。当某张表下线、管道逻辑变化或 Owner 更新定义时,可以回放受影响的历史任务,而不是等用户再次发现同一类错误。上下文工程最终是一套持续维护机制,不是上线前做一次元数据清理。

参考:Inside OpenAI’s in-house data agent