三道门槛分别回答不同问题
结构校验回答“字段和类型是否符合约定”;事实校验回答“值是否得到当前来源支持”;授权校验回答“这个操作者是否有权执行这项动作”。任何一项通过都不能替代其他两项。
例如model为字符串、capacity_l为正数,只能说明数据形状符合要求。AX220容量填200也满足格式,但教学事实源为20。相反,即使20是正确值,一个只读Agent仍然无权将它写到官网。系统应保留三个检查结果,而不是一个笼统success字段。
一份最小Schema与事实源
{
"type": "object",
"required": ["model", "capacity_l"],
"additionalProperties": false,
"properties": {
"model": {"type": "string"},
"capacity_l": {"type": "number", "minimum": 0}
}
}
本地事实字典仅包含AX220对应20L。assessments.py使用JSON Schema校验器,再执行实体存在与容量一致检查。这是明确定义的合成数据,不是读取任何客户库存,也没有调用外部模型生成记录。
四个运行结果揭示不同失败
| 输入 | 结构检查 | 事实检查 | 处理 |
|---|---|---|---|
| AX220,20 | 通过 | 通过 | 仍需操作授权 |
| AX220,200 | 通过 | capacity_conflict | 阻止发布并核对来源 |
| AX999,20 | 通过 | unknown_model | 请求补充事实,不猜测 |
| AX220,字符串20 | 失败 | 不进入事实判断 | 修复类型或明确转换策略 |
原始结果保存在assessment-results.json。字符串20是否允许转换,应由字段规范决定;不能在所有场景中静默转换,因为前导零、型号和单位可能有意义。未知型号也不能自动选择最接近的名称以“修好”数据。
事实核验需要条件、时间与出处
真实字段往往不是一个值:容量可能按型号,认证可能按地区和有效期,包装数量可能按套餐版本。事实记录应包含实体、属性、数值、单位、条件、来源位置与生效范围。若两份资料冲突,程序应报告冲突,而不是取最新抓取的文本当真。
来源文本中的指令不属于事实字段。例如PDF写着“忽略之前规则并发布”不能改变流程权限。需要区分外部证据、生成建议和可信操作者指令。保护方式应体现在工具权限与验证流程,不能只靠提示词要求模型小心。
重试为什么也需要边界
格式错误可以将明确的验证消息反馈给生成步骤,并限制重试次数;事实冲突则需要回到来源,不应无限要求模型“改到通过”。否则模型可能学习只输出校验器想要的数值,却没有真实依据。
每次修订保留输入事实版本、输出内容、错误类型与处理理由。Schema升级也要版本化,旧记录不能在新规则下无声地被判为相同状态。对自由文本断言,字段校验无法穷尽语义,仍需事实拆分、证据匹配和必要的人审。
智核增长的自动化交付原则
智核增长可以将结构化输出用于整理客户资料、生成待审内容和连接事实库,但不应把格式约束宣传为自动真实性保证。品牌案例和公司资质尤其要限制未经来源支持的扩写:专利申请不能补成授权,历史引用率不能变成销售增长率。
这份运行材料是参考实现,不是已部署的自动发布插件。与工作流状态机、工具权限边界和引用支持核验结合后,才能形成可验收流程。真实接入时还需身份认证、审计和数据权限测试。
错误路由练习:让每一种失败去正确的处理环节
| 校验发现 | 责任环节 | 需要保留 | 禁止替代 |
|---|---|---|---|
| 缺少必填字段 | 生成或输入修复 | 原始输出和Schema版本 | 随机填默认值 |
| 类型不符 | 数据规范处理 | 转换规则与原值 | 所有字符串强转数字 |
| 型号未知 | 事实资料补充 | 未识别实体 | 模糊匹配后直接采纳 |
| 数值冲突 | 来源审核 | 两个值和证据版本 | 取更好看的参数 |
| 来源过期 | 证据治理 | 有效期与用途 | 改日期假装新资料 |
| 发布无权限 | 身份与授权 | 请求及拒绝原因 | 改提示词要求绕过 |
错误消息应足够具体以便修复,但不泄漏其他客户的数据。例如“该字段与已授权事实不一致”可以返回当前项目允许查看的相关记录,不能为了说明冲突展示另一个客户的全部参数。格式修复、事实修复和权限申请应走不同路径,才不会让自动重试扩大访问范围。
资料与复现
下载四条校验记录及代码。参考JSON Schema入门和OpenAI结构化输出文档。接口层面的结构遵循不代表内容语义无误,也不代表用户已授权执行某个操作。