这篇适合谁,读完能做到什么
适合要用 AI 生成准确内容的人,比如百科条目、报告、产品文档。读完你应该能说清为什么要把搜集和写作分开,Anthropic 的 Citations 功能和 OpenAI 的文件检索是怎样把出处挂到回答上的,发布前该做哪些校验,以及每种方法在哪里失效。
这套方法是什么
幻觉(hallucination)指模型写出了没有任何依据的陈述。没有哪一种技术能完全消除它,Anthropic 的减少幻觉指南列出了几种可以配合使用的策略。其中之一是明确允许模型说「我不知道」,指南认为这能大幅减少虚假信息。另一种是处理长文档(超过 20k token)时,先让模型逐字摘出引文,再开始处理任务。[2]「用引用验证」的策略则让每个回答都可以被核查:模型为每条论断引用原文,找不到支持的引文就必须撤回该论断。[2]指南最后提醒,这些技术能显著减少幻觉,但不能完全消除,因此关键信息都应验证,高风险决策尤其如此。[2]
TellWorld 的做法更多依赖结构,而不是寄希望于模型足够小心。我们把工作分成搜集和写作两步:搜集的人只记录带出处的事实,写作的人只能使用这些事实。[1]写作的一方只能使用这些已记录的事实,没有人记录过的论断就进不了正文。
准备
要使用 Anthropic 的 Citations 功能,请求中需要提供文档。在 document 内容块上加上 "citations": {"enabled": true} 即可开启。来源用 "type": "text" 和 "media_type": "text/plain" 指定,还可以加上可选的 title 和 context 字段。指南要求每个文档都设置 citations.enabled=true,因为同一请求中的文档要么全部开启,要么全部不开启。[3]指南写明,所有活跃模型都支持 Citations,目前只支持文本引用,还不支持图片引用;没有可提取文字的扫描版 PDF 无法被引用。[3]
Citations 不能与结构化输出同时使用。如果你对用户提供的文档开启了 Citations,又加上了 output_config.format 参数(或已弃用的 output_format 参数),API 会返回 400 错误。[3]
在 OpenAI 的检索工具中,向量库搜索默认最多返回 10 条结果,通过 max_num_results 参数最多可设为 50 条。[6]
上手步骤
- 把搜集和写作分开。搜集的人只能写下自己在打开过的页面上看到的内容,不写凭记忆得来的数字,不根据图表或视频估算,也不做自己的计算。[1]每条事实是一句英文,句末带出处编号,在事实文件里写成
[1]这样的形式。[1]
- 给每个出处一个稳定的编号。引用格式指南说,模型无法引用没有被清楚呈现给它的材料,所以每个可引用的单元都应有稳定的来源 ID,例如
file1或block1,加上可读的正文和可选的元数据,如 URL、时间戳和标题。[4]该指南还认为,大多数系统最好的默认选择是以块为单位做引用。[4]
- 要求每一行都给出引用。Anthropic 的 Citations 指南给出了一段提示,用于逐个提取字段并为每个值附上引用:[3]
Extract these fields from the document: grass_color, sky_color.
Answer with one line per field in the form "field: value", and cite the document for each line. After the colon, write only the value, with no explanation or quotation.指南推荐的提示写法是:引用放在段落末尾,段落很长时可以放在句中。引用要放在标点之后,不能全部堆在回答末尾,也不能放进 markdown 的加粗、斜体或代码围栏里。[4]
- 把每条事实连同出处编号写入事实文件,写作之前先核一遍。流水线先运行
intake.mjs,它会合并多个文件、修正栏目、标签和断掉的关联;然后运行check-facts.mjs。[1]
- 交给写作子 agent 把事实文件写成正文,再运行
build.mjs。它会校验输出,标出英文摘要超过 50 个词、中文摘要超过 100 个字、英文正文不足 300 词或中文正文不足 600 字的条目。[1]如果一个条目的事实本来就少,短正文也可以接受。写作者被要求不凑字数,不提事实里没有的年份,也不描述资料本身的状况。[1]
- 通过校验之后才导入和建索引。最后两步是
atlas import和atlas embed。[1]
我们的做法
出处的优先级是事先定好的。官方公告和文档排第一,其次是 Epoch AI、斯坦福 AI 指数(Stanford AI Index)和维基百科,最后才是主流媒体。[1]用户可以随意编辑的中文百科、企业数据库聚合站、知乎、自媒体平台和视频网站一律不作为出处,程序会丢弃引用了它们的任何事实。[1]只有维基百科能支撑的条目进入人工审核队列,不直接发布。[1]
企业对自己的描述,比如「首个」「最强」,一律写成企业的说法,而不写成既定事实。[1]
发布前的最后一步是直接核对原始来源。2026 年 11 月 13 日,主 agent 打开了最重要的三条条目的来源,发现所有关键数字和日期都对得上,因此没有删除任何条目。[1]
限制和常见问题
- 即使有引用,模型仍可能出错。Anthropic 的指南建议,对关键信息进行验证,高风险决策尤其要这样做。[2]
- 如上所述,Citations 不能和结构化输出同时使用。[3]被引用的文本不计入输出 token;在后续轮次中传回时,也不计入输入 token。[3]
- 自定义的引用标记可能出问题。引用格式指南提醒,自定义或不熟悉的格式会加重模型的负担,导致引用出错,在低推理强度、复杂任务上尤其如此。如果你自己写提示,要写明标记的确切语法、引用放在哪里、何时引用、何时不引用,以及找不到支持时怎么办。[4]
- 检索做得随意,反而会添乱。OpenAI 的指南提醒,无关的上下文太多会淹没真正的信息,并引发幻觉。它给出的办法是:调整搜索,使它返回正确的结果;减少噪声;让每个检索结果提供更多信息。[5]
- 检索指南提供的
score_threshold取值在0.0到1.0之间,调高会把结果限制在更相关的片段上;rewrite_query=true则开启自动改写查询。[6] - 评估时,指南建议把指标和人工判断结合起来。它列出的反模式包括只依赖困惑度(perplexity)或 BLEU 这类学术指标,以及以「看起来好像能用」作为评估策略的凭感觉评估。[7]
- 让 LLM 当评判者时,要防范位置偏差和冗长偏差。指南建议用成对比较或通过/不通过的方式,可靠性更高。[7]
- 多次采样(best-of-N)是让同一个提示运行多次再比较输出。输出之间的不一致,可能就是幻觉的信号。[2]
下一步
先读 Anthropic 的减少幻觉指南[2]和 Citations 文档。[3]再读 OpenAI 的引用格式指南[4]和评估最佳实践。[7]先在你自己的流水线里加上一项校验,并让它校验失败时明确报错。
来源
- 1
- 2Reduce hallucinationsAnthropic
- 3CitationsAnthropic
- 4Citation FormattingOpenAI
- 5Optimizing LLM AccuracyOpenAI
- 6RetrievalOpenAI
- 7
引用本页: 用 AI 做不编造的内容:搜集、核对、写作、校验. TellWorld, https://www.tellworld.net/zh/practice/practice-fact-checked-pipeline. 更新于 2026-11-14