基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
技术实践2026-10-22 04:18

结构化输出还需过事实校验这一关

dev.to · AI#结构化输出#幻觉#数据校验
Editor brief · 编辑速览

文章用刻意构造的虚构书目示例说明:输出即使能解析、字段齐全且类型正确,也可能编造来源中未知的年份。练习区分语法、结构和事实核对,强调格式合规不能替代内容验证。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

JSON 能被解析、字段齐全、类型正确,里面的事实仍然可能是编的。作者用三本虚构图书演示了一个容易漏掉的问题:来源没有提供出版年份,输出却填上了一个看起来合理的整数。

这不是某个模型的实测翻车记录,而是刻意构造的练习。它值得程序员花几分钟看,因为它把 AI 数据提取中的检查拆清楚了:语法、结构、来源一致性,任何一层都不能替下一层作保证。

为什么格式全对,数据还是错的

练习给出的来源只有三条记录:

  • Paper Signals,作者 A. Dube,2021 年,评分 4。
  • Quiet Circuits,作者 T. Moyo,2023 年,评分 5。
  • Small Useful Things,作者 N. Rao,年份未知,评分 3。

输出约定也很明确:恰好三条记录,只能使用小写的 title、author、year、rating 四个键;year 是整数或 null,rating 是 1 到 5 的整数。

下面这段刻意构造的错误输出,用来说明格式检查会漏掉什么:

[
  {
    "title": "Paper Signals",
    "author": "A. Dube",
    "year": 2021,
    "rating": 4
  },
  {
    "title": "Quiet Circuits",
    "author": "T. Moyo",
    "year": 2023,
    "rating": 5
  },
  {
    "title": "Small Useful Things",
    "author": "N. Rao",
    "year": 2020,
    "rating": 3
  }
]

要看的是最后一条记录的 "year": 2020。它符合整数类型,却没有来源支持。只检查数组长度、字段、类型和评分范围的校验器,完全可能放行。

解析成功只能证明格式可读,不能证明内容可信。

把检查拆成三层,才能知道错在哪里

作者建议分别检查三个问题。

第一层是语法:字符串能不能被 JSON.parse 接受?例如,添加尾随逗号,应当在这里失败。这一层不关心书名和年份是否真实。

第二层是结构:是否恰好三条记录?键是否精确匹配?字段类型和取值范围是否正确?把评分改成字符串,或者把整数评分改成 9,都应当在这里被拦住。

第三层才是来源一致性:逐项对照输入,确认输出有没有改写、遗漏或补造信息。那个类型正确的 2020,需要这一层才能识别。

修复方式是把第三本书的年份改为 "year": null。这里的 null 表示「提供的来源没有年份」,并不是断言这本书没有出版年份。如果业务必须拿到年份,就应标记为待核实,而不是悄悄补齐。

作者还给了一段约束提示词,用来明确提取范围和缺失值规则:

Convert only the three supplied fictional book records to a JSON array. Use exactly title, author, year and rating. Preserve unknown year as null. Do not add authors, titles or dates. Return JSON only. After generation, I will separately check syntax, shape and each value against the source.

要看的是 Preserve unknown year as null,以及最后一句关于生成后独立检查的约定。提示词说明了要求,但不能代替检查结果。

练习的方法也很直接:每次只改一个地方,分别加入尾随逗号、字符串评分、评分 9,或用合理年份替换 null,然后判断应该由哪一层发现错误。

我的判断

这篇最有用的地方,是把「格式正确」和「忠于来源」分开了。对于 AI 提取任务,校验器接受一个值,与输入材料支持这个值,是两件事。

但它只是教学示例。作者明确说明,图书是虚构的,错误也是人为构造的,没有提供模型对照、错误率或提示词效果数据。因此,不能据此判断某个模型有多容易编造,也不能宣称这段提示词能降低多少错误。

常见的结构校验仍然有用,它负责发现缺字段、类型错误和越界值。本文补上的是它覆盖不到的一层。至于来源核对如何自动化,原文没有说清;三条明确记录可以人工逐项检查,更复杂的材料还需要另行设计核验办法。

作者维护的 Open Practice 是独立、非认证的实践活动集合。完整练习包含虚构测试样例、本地 JSON 检查器、可编辑笔记和离线导出;学习材料免费,可选托管 AI 工具有各自限制,也可以不注册 AI 账号、直接人工查看参考内容。这些是练习条件,不是产品效果证明。

能拿来做什么

  • 在前端或 Node 的 AI 数据提取流程中,把解析、结构校验和来源核对分别处理,避免一个「校验通过」掩盖不同层面的结果。
  • 对输入中缺失的字段明确约定表示方式。这个例子允许年份使用 null,业务必须知道年份时,再进入待核实流程。
  • 用文中的四种改动检查现有流程:尾随逗号、字符串评分、评分 9、补造年份,并确认每种错误由哪一层发现。
  • 编写提取提示词时,写清记录范围、精确字段和未知值规则,同时保留原始输入,供生成后逐项比对。
Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
零运行依赖的自修改编程运行时
下一篇
可回放的告警归因引擎如何约束大模型

资讯速览

dev.to · AI · 2026-10-22 04:18

AI 评分 8.0 / 10

相关标签

#结构化输出#幻觉#数据校验

继续阅读

  • 用类型化记录搭建 Python 通话质检
  • 零运行依赖的自修改编程运行时
  • 可回放的告警归因引擎如何约束大模型
  • Qwen3 在 Trainium 上的三条训练路径
  • 两家模型独立发现同一 PHP 严重漏洞