给 AI 接业务数据前,怎样写清主键、状态和数据合同

用订单示例解释 AI 数据合同:主键、字段语义、时间与单位、状态转换、空值和版本变更,附可复制的字段约定表。

业务数据合同的四层约定:对象身份(订单主键与租户、跨系统映射);字段语义(单位、时区、空值、来源与版本);状态转换(前置条件与授权、禁止跳过的步骤);变更管理(兼容期与回放、失败时明确返回)
原创示意:模型可读的数据仍需业务规则校验。为本文原创示意图,不代表产品界面或客户案例。

先说结论

AI 数据合同要同时说明字段含义和允许的业务变化:哪个系统拥有主键,金额和时间如何表示,空值意味着什么,状态由谁更新,以及接口版本如何迁移。字段格式正确并不代表业务判断正确。

读完你会得到

  • 同名字段要区分业务对象、权威来源和生效时间。
  • 状态变化必须由系统校验,不让模型自行宣布成功。
  • 数据合同变更需要样本回放和版本迁移记录。

“订单已完成”在销售系统里可能表示合同签署,在仓库系统里表示发货结束,在财务系统里表示款项结清。Agent 如果只看到一个 completed,就可能把三件事混为一谈。本文用订单演练说明如何把这些含义写进接口约定。

配套资料与延伸阅读

先确定对象和权威来源

数据合同是提供方与使用方共同遵守的约定。对于 AI 项目,它不只是一份字段 JSON,还要告诉调用方何时可以依赖这个值。订单、客户、申请和工单应有稳定身份,不用名称或聊天里的称呼当主键。

如果 CRM 与 ERP 都有客户编号,建立映射关系并说明谁维护。租户或业务单位必须参与对象定位;不能因为两个部门都有订单 1001 就默认它们是同一条记录。查不到映射时返回待确认,不让模型选择最像的名称。

Anthropic 的工具设计文章强调输入名称和输出语义要明确。把这种原则扩展到主键和状态,是本文的业务接口设计建议。

本节依据: [1] Anthropic

字段表应包含使用条件

订单数据合同的最小字段表示例
字段约定校验与异常
order_id权威订单系统的稳定编号与 tenant_id 共同定位,禁止按名称模糊写入
amount_minor金额最小货币单位整数必须同时提供 currency;退款不能超过允许余额
delivered_at带时区的签收时间未知时为 null,不使用接口读取时间代替
fulfillment_status明确列出的履约状态与付款状态分开,未知枚举停止关键动作
source_version来源记录版本更新时检查版本,避免覆盖他人修改
observed_at当前接口获取记录的时间用于判断陈旧程度,不等于业务生效时间

这张表是教学约定,不是要求所有企业采用这些字段名。关键是每个字段都有含义、格式、来源和异常处理。金额、百分比、重量等尤其要明确单位,不能让下游通过数值大小猜测。

空值、未知和未授权要分开

null 可能表示尚未签收,也可能表示系统没有保存签收时间。如果两种情况会触发不同动作,应该提供原因字段或明确的状态。空字符串、零和未知枚举也不能随意互换。

还要区分“没有这条记录”与“无权查看”。面向普通用户的提示可以统一以免泄露对象存在性,内部诊断记录则需要保留真实错误类型,并限制谁能读取。Agent 不应该把无权限理解为订单不存在,再创建重复记录。

当来源处于同步延迟中,返回数据更新时间和可接受的使用范围。例如历史状态可以用于解释查询,却不能用来放行新的退款。新鲜度标准由具体业务制定。

状态机规定什么动作才算完成

退款申请状态的演练
当前状态允许的动作完成证据
draft补全材料并提交申请记录与材料版本
submitted授权人员审批或要求补充审批记录绑定当前申请内容
approved支付系统执行退款支付请求标识与受理结果
processing查询结果,不重复创建退款支付系统的交易状态
refunded登记结果并通知最终交易标识与业务对账

模型可以提出“建议退款”,不能据此把状态改成 refunded。业务服务必须核对当前状态、操作者权限、金额和记录版本。外部执行结果尚不明确时保留 processing,避免把网络超时当作失败,也避免把受理当作到账。

状态图还应标出 rejected、cancelled 和 failed 的处理方式。不是所有失败都能返回上一状态;已经发生的外部动作可能需要独立补偿记录。

合同改变时怎样避免旧流程悄悄出错

一次字段变更的处理顺序

  1. 列出受影响的消费者

    检索工作流、报表、提示词和缓存,确认谁仍读取旧字段。

  2. 给出兼容规则

    改名、增加枚举或改变单位分别说明,不能只写“升级接口”。

  3. 用历史样本回放

    保留正常、空值、旧枚举和并发更新案例,检查结果与动作是否变化。

  4. 设置迁移和退出条件

    明确何时停用旧版本,谁确认迁移完成,出错时如何回退。

增加一个状态值也可能破坏旧逻辑。旧系统若把“不等于 cancelled”都当作可以执行,新加的 on_hold 就会被误放行。调用方应显式识别允许状态,并对未知值返回需要处理的错误。

用一条异常记录检查合同是否完整

拿一条付款已完成、履约尚未完成的订单做桌面演练。模型收到的结果应同时保留付款与履约状态,不能只得到“已完成”。继续模拟签收时间缺失、记录被他人更新、退款余额已变化,观察服务如何拒绝不满足条件的动作。

如果调用方遇到未知状态后仍能继续执行,合同缺少失败语义;如果金额由 100 变成 10000 后下游只能猜单位,合同缺少单位约定;如果重复查询返回不同来源,却没有版本信息,合同缺少可复核依据。问题应落实到具体字段或动作条件。

交付时保存一组合法与非法样例,不只保留成功示例。它们可以由提供方用于接口测试,也可以由使用方用于回归。数据合同因此成为持续检查的一部分,而不是一份上线后没人打开的附件。

开工前可以完成的一页检查

选一个最常用业务对象,逐项核对主键、租户、权威系统、金额单位、时间含义、状态转换、权限和版本。发现两个部门回答不一致,先处理语义冲突,再讨论向量库或模型选型。

这份合同适合有多个业务系统、需要 Agent 读取或修改记录的项目。只做公开资料问答时,复杂状态机未必必要,但文档身份、来源和版本仍要约定。数据合同不能替代业务负责人的确认,也不能保证来源本身没有错误。

常见问题

已经有接口文档,还要补数据合同吗?

看现有文档是否说明业务含义、来源、空值和状态约束。如果只有参数类型和成功返回示例,应补充这些内容;无需再复制一份重复文档。

可以把所有业务校验放在提示词里吗?

关键金额、对象权限、版本和状态转换应由服务端校验。提示词能帮助模型理解规则,但不能作为业务执行的唯一约束。

资料来源与核对说明

文章中的行业定义与技术方法尽量引用官方或标准组织资料;表格、清单和决策框架是基于这些资料形成的编辑性整理,不代表来源机构对本站服务的背书。

  1. Writing effective tools for agents — with agentsAnthropic

    正文发表于 2025-09-11。用于工具输入、输出与错误信息的工程原则。

把文章方法用于你的真实业务

带上流程、样例和目标,添加企业微信沟通。先确定项目范围与验收方式,再安排实施。

查看企业 AI / FDE 服务 →
相机、麦克风和布光台上的雕塑,表现图片、视频与声音的创作
AI 生成 · 内容创作场景示意

把你正在做的事,
拿来一起聊聊。

还没有完整方案也没关系。选一个方向,带着下面几条信息联系团队,我们先了解问题,再确认下一步。

企业 AI / FDE 项目

先从一段具体流程说起。

  • 我们目前怎样完成这项工作?
  • 哪一步最费时间,或经常出错?
  • 已有的资料、系统和期望结果是什么?
Shopify 建站与经营

有店铺的话,可以一并发来链接。

  • 店铺是准备上线,还是已经在运营?
  • 销售什么商品,面向哪些市场?
  • 希望先解决哪个页面或经营问题?
内容创作与工具使用

说明准备制作的内容,或遇到的操作问题。

  • 想做图片、视频、配音,还是图文?
  • 已有素材、参考风格和使用场景是什么?
  • 如果使用时遇到问题,具体停在哪一步?
扫码添加随心创技术客服企业微信

微信扫码,发来你的问题

可以直接按提纲描述,也可以先发一句话。人工服务会在确认范围后单独报价。

手机上可保存二维码后识别。