Community写作与编辑github.com

zhichao1208/reduce-hallucination

使用审讯科学中的成熟技术,审计LLM智能体以减少幻觉,实现接地、引用和弃权。一款开放的智能体技能。

reduce-hallucination 是什么?

该技能将审讯科学中用于促使知情证人说出真相的验证技术,转化为一套标准化的LLM智能体审计流程。它把每个LLM节点视为一个证人,节点间的信息传递视为证词记录,用户的修正和任务记录则作为物证。技能的核心是三条铁律:无证据不指控、表面信号不等于真相、自我修正需要新的外部信号。它为开发者提供了一套系统化的审计协议,包含五个阶段:对每个节点进行红旗检查、审计节点间的数据传输、匹配物证、按优先级修复问题,以及最终生成审计报告。该技能尤其关注引用质量的三个支柱——忠实性、相关性和支持性,其中“支持性”被定位为开放前沿问题,视为最困难但最有价值的部分。它适用于任何使用LLM的工作流,特别是Claude Code等高可靠性要求的智能体环境,通过结构化的提示检查、确定性验证器和LLM交叉审问节点来系统性降低幻觉风险。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add zhichao1208/reduce-hallucination

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

reduce-hallucination 是做什么的?

将审讯科学用于让知情证人说出真相的验证技术,转化为LLM智能体的标准化审计流程。每个LLM节点都是一个证人。节点间的信息传递是证词记录。用户的修正和任务记录是物证。

理论和证据存在于 references/ 目录中。阅读 references/research-map.md 以了解每项主张背后的引用来源。

三条铁律

  1. 无证据不指控(韦尔曼规则)。每项发现必须引用其涉及的具体提示、模式或输出。没有引用的可疑点应放入“待验证”列表,而非纳入结论。
  2. 表面信号并不能证明真相。流畅、自信、详细的文本并不比简洁的文本更正确。人类从行为中识别欺骗的能力仅略高于随机水平。只评判内容本身:是否接地、是否一致、引用的片段是否存在。
  3. 自我修正需要新的外部信号。“你确定吗?再检查一遍”而没有新证据的做法会降低准确性。每次重新检查必须注入检索结果或验证器输出。

良好引用的三大支柱

引用质量可分解为三个维度的检查,按难度和价值递增排列:

支柱问题当前现状
忠实性引用是否逐字真实,且主张是否非捏造?基本可解决:逐字字符串匹配 + 弃权机制。
相关性来源是否与问题主题相关?基本可解决:检索质量 + 一致性探测。
支持性来源是否支持主张,还是反对主张,或保持中立?前沿问题。难度大,且“反对”这一稀有类别是系统最薄弱的环节。

一个引用了真实、相关段落但实际并不支持主张的引用(“误导性接地”),比没有引用更糟糕,因为它为错误主张制造了信任,并解除了审阅者唯一有效的防御手段(核查内容)。展示一个引用而不在后台验证它,会使幻觉变得更危险,而不是减轻。

审计协议

阶段 1 — 审问每个证人(提示 + 模式红旗检查)

对每个LLM节点,执行红旗列表。每项标志代表一种审问违规。

#红旗(要检查的内容)为何重要危害
R1枚举字段没有 null / unknown 选项;单向指令“输出一个X的确认信息”。强迫回答会产生服从(类似虚假自白的类比)。强迫猜测,自信的事实捏造。
R2文本中授予了弃权权利(“如果缺失则使用null”),但模式中没有null。模式优先,弃权无效。静默的事实捏造。
R3提示要求提供证据/引用,但下游没有任何环节检查它。告知而不验证,会教会模型捏造更逼真的引用。虚假锚点。
R4方向性指令:“保守一点”、“假设”、“从……推断”、“默认”。单向推定;与R1结合会产生系统性偏差。输出向一个方向倾斜。
R5没有定义单位的聚合字段(“总年数”、“总体评分”)。测量需要先声明其单位,然后才能锁定。定义不匹配被解读为提取错误。
R6少量样本示例与任务无关或演示了无引用的推理。示例设定了“好的”回答的期望。教会错误的输出风格。
R7提示声称该节点可以做到它没有工具去完成的事情。错误的前提。捏造的过程叙述。
R8用户或上游节点传递的一个“事实”,被当作真相使用但没有来源标签。只应用已验证的证据进行对质。前提污染。
R9带有必填槽位且没有空值分支的模板。模板版本的强迫回答。空白被填充为最近的值。
R10激进的重检/重试指令(“你错了,修正它”)且没有新证据。媚俗行为会翻转正确答案。正确的答案被推翻。

每条记录格式为:节点 | R# | 引用文本 | 一句后果

阶段 2 — 审计转录过程(节点边界 / 数据流)

这是大多数管道幻觉发生的地方。绘制数据流并检查每条边:

  1. 不确定性是否跨越了边界? 上游的 confidence / missing_fields / null / notes —— 下游是否有任何环节消费它们,还是模板将它们压平为断言?查找“死信”不确定性:被生成但从未被读取。
  2. 来源是否丢失? 上游推理中承认是“假设/推断”的值,在下游变成了没有标记的事实。模式应携带 stated | inferred | absent。
  3. 事实类别是否混淆? 配置或需求数据被呈现为用户/文档断言的内容。
  4. 聚合值是否改变了单位? 上游的“总医学年限”变成了下游的“担任X职位的年数”。
  5. LLM 是否在计算确定性内容? 提示中的日期计算、求和、计数应移至代码步骤。

阶段 3 — 匹配物证(当任务记录存在时)

  1. 提取一个任务样本的中间节点输出(优先选择有用户修正或失败的任务)。
  2. 逐字段比较最终输出与每个节点的中间输出和原始输入;定位第一个丢失真相的边界。
  3. 寻找先前不一致的陈述:同一字段在多个节点间自相矛盾。
  4. 如果修正是方向性的(系统性地指向一边),重新检查阶段1的R4方向性指令;随机错误更可能指向输入质量。
  5. 诚实分类:“从未在源数据中出现的信息”(流程缺口,而非幻觉)vs “输入中存在但表述错误的信息”(真正的幻觉)。

阶段 4 — 按投资回报率排序的修复方案

层级 1 — 提示 / 模式(零结构变化)

  • 每个 R1/R2 → 添加一个 null/unknown 枚举 + 一条去污名化语句(“X是一个正确、预期的答案”)。
  • 每个 R9 → 为模板添加一个空值分支(断言变为开放性问题)。
  • 每个 R5 → 拆分单位,或输出一个范围 {下限, 上限}。
  • 每个 R3 → 为关键字段添加 {value, source, evidence_quote} 三元组。

层级 2 — 确定性代码验证器(零LLM成本)

验证器检查内容
枚举白名单字段值在允许集合中。
引用字符串匹配evidence_quote 在引用的源数据中逐字存在;若不存在,则拒绝或降级。
跨字段一致性总数吻合;missing_fields 不与已填充的值矛盾。
单位计算日期差 / 求和由代码完成;LLM只做语义提取。
退出契约每个用户可看到的事实槽位非空,且来自允许的源字段。

将其置于任何产生用户可见内容的节点之前。失败时,写入一个回退标志并路由到开放性问题或人工。

层级 3 — LLM 交叉审问节点(LM vs LM)

  • 一个单独的节点,只接收待审查的输出和源文档(不含污染的上下文)。
  • 将任务表述为反驳:“尝试反驳:这个输出中的每项主张都能追溯回源文档吗?列出那些不能的主张。”
  • 输出 {verdict, offending_claims[]};对于高风险的流程,重新排序后再次提问并获取一致性投票。
  • 成本:每个任务额外一次 LLM 调用 —— 仅对用户可见的出口或高风险决策启用。

阶段 5 — 报告

# 幻觉审计 — {agent}
## 一句话结论
## 证据概览(节点 / 审计版本 / 任务样本 / 修正样本 + 方向)
## 发现项(每项:位置 | R# | 引用文本 | 后果 | 修复编号)
## 数据流图与死信通道
## 修复建议(层级1/2/3,每项标注其消除的发现项)
## 待验证项(证据不足的可疑点 + 如何获取证据)
## 诚实边界(哪些修正是流程缺口而非幻觉;本次审计未覆盖的内容)

支持性:前沿问题(可选扩展)

忠实性 + 相关性是基础。开放的问题是支持性:引用的来源是支持、反对还是中立对待主张?研究中的两点说明:

  • 将其建模为立场加程度。三值立场(蕴含 / 反对 / 中立)忽略了部分或条件性支持,而这正是大多数监管和法律文本的情况。添加一个“部分/条件性”标志,路由到人工审查。
  • 支持性是相对于意图而言的。同一段落可能支持“我们合规”也可能反对“我们有缺口”,具体取决于用户在论证什么。当立场或意图不确定时,同时展示支持和反对的来源,让用户选择。将方向呈现为邀请审查的标志,而非最终裁决。

备忘

  • 如果某个提示“糟糕得令人震惊”,首先检查它是否是自动生成的模板(重复的“角色/目标/任务”是其标志)。像“这个生成器存在系统性问题”这样的结论,比在每个智能体上列举相同的缺陷更好。
  • 在同一智能体内部进行对比:哪些字段是干净的,哪些是失败的。差异通常就是答案(带有 unknown 选项的字段往往是干净的)。
  • 以通俗语言对报告进行编辑润色:每项发现必须能让未阅读理论的人理解。

相关技能

属于一个小型开放智能体技能家族,专注于可信、清晰的沟通:

相关技能