为什么 AI 外联败在真实主张上,而不只是幻觉;以及我为它构建确定性核验层时学到了什么。
Artificial IntelligenceSalesStartup

主张是真的。我还是删了它。

Ashutosh SinghalAshutosh Singhal2026年6月22日15 min

我拒绝发出的第一封邮件,内容完全准确。

我记得那句话,因为我读了大约四十遍:「我看到贵公司最近将 One-Way Truckload 车队扩充到了 2,735 辆卡车。」每一个字都是真的。Werner Enterprises 确实在其向 SEC 提交的 Form 10-K 中报告了这一车队规模。而坐在我正在搭建的演示面前,我还是删掉了这条主张。

那一天左右,这个决定让我感到不对劲。随后我才意识到,这正是全部意义所在。

Veracity Engine 证据面板显示真实的 Werner 10-K 主张——One-Way Truckload 车队扩充到 2,735 辆卡车——因所引文件已有 842 天而被标为过时,在草稿邮件中被划掉并标记为已剔除。
我删掉的那条主张。关于 2,735 辆卡车的句子引用了真实的 Werner 10-K,但该文件相对 365 天时效窗口已有 842 天,「最近」因此不成立,发送前该行被剔除。做出这一判断的是代码,而非语言模型。

启动这个项目时,我和当下几乎所有在做 AI 销售的人一样,相信敌人是幻觉。模型编造内容,虚假内容进入邮件,潜在客户发现,你的可信度崩塌。抓住编造就能赢。这个框架干净、演示效果好,而我现在认为,它默默导致了大量发信域名被烧毁。Werner 那句话里没有任何编造。它仍然是我绝不会让走出大楼的主张。

这篇文章讲的是什么改变了我的想法,按实际发生的方式讲述——也就是说,缓慢,中间还夹着尴尬的一周。如果你想看我最终做出的东西,它在这里:veriprajna.com/zh-Hans/demos/ai-sales-intelligence。但产品本身是无聊的部分。有趣的是:为什么一句真话并不等于一句安全的话,以及我为什么不再信任模型去分辨二者。

那一周,我试图让模型批改自己的作业

我花了大约一周,试图让语言模型抓住自己过时的引用,我想诚实地说:没有成功。

纸面上的设置是合理的。研究员智能体拉取事实。写手智能体起草邮件,且只能使用那些事实。然后事实核查智能体对照来源审阅草稿,标出任何站不住脚的内容。三个智能体,一条整洁的流水线,那种设计评审里会点头通过的架构。我真心以为事实核查会是容易的部分。

正是这一部分坏掉了。不是轰轰烈烈地坏。那才是问题所在。事实核查会读 Werner 草稿,看到关于 2,735 辆卡车的句子,找到说 2,735 辆卡车的来源,然后自信地放行。如果唯一的问题是「是否有来源支持这个数字」,这是正确的。模型没有持久的意识:来源已超过两年,而句子却写着「最近」。当我逼它就日期推理时,它有时能抓住过时,有时又放行,我无法预测哪一种。你无法预测的核查器,就不是核查器。它只是第二种意见。

真正让我顿悟的时刻是某天深夜:我把同一份草稿送进事实核查三次,得到两次通过、一次拒绝,输入毫无改动。我盯着那个结果看了很久。我在要求一个概率系统,去充当另一个概率系统的确定性闸门。

我在要求一个 LLM 成为另一个 LLM 的可信裁判,还把结果称作「核验」。

那不是核验。那是两个模型达成一致,是另一回事,而且弱得多。如果你需要核查器的全部理由,是因为模型输出不能按字面信任,那么第二个模型的输出就不能成为你用来核查它的依据。我建了一座镜厅,还贴上了合规贴纸。

哪个更糟:捏造的事实,还是真实的事实?

构建过程中最让我惊讶的是:意识到编造从来不是最可怕的失败。真正可怕的是真实但被误用的主张。

想想当 AI SDR 幻觉出某个公司细节时实际会发生什么。常常是胡言乱语、明显离谱,潜在客户一看就删。尴尬,没错。但真正让你陷入麻烦的主张,是那些可核查、正确,但在语境中仍是错的。它能顺利通过每一个「这是不是编造」的过滤器,正因为不是编造。语法完美。数字真实。而它是关于现在时态的谎言。

我开始称之为语境误用,一旦有了名字,我在组装的演示里到处都看见它。它不止一种形态,但每种形态都有使其危险的共同属性:每一条都是真实陈述。

最让我学到东西的形态是过时来源,而 Werner 是我第一次看清它的地方。「最近扩充到 2,735 辆卡车」引用了真实的 10-K,但该文件于 2024-02-26 落地,相对演示的工作日期已远超两年。数字并没有停止为真。「最近」这个词已停止为真。那不是同一个事实,而来源匹配检查却把它们当作相同。

我用一个合成线索第二次构建了同一种形态——一家叫 Northwind 的中型物流公司——这样我可以展示该模式,而不必假装某家真实公司说过它没说过的话。草稿声称 Northwind「最近扩展进了亚太」。有一份看起来真实的来源。来源日期是 2019 年 3 月,在演示中折算大约有 2,652 天,超过七年。主张与来源之间的依据重合度是干净的 100%。实体匹配。而这仍是那种让潜在客户觉得你自上一届世界杯以来就没再看过他们的句子。

Northwind 亚太主张的证据面板:依据重合度 100% 且实体匹配均通过,时间有效性因超出 365 天限制达 2,652 天而失败,裁定为过时来源,主张被划掉并剔除。
同一种形态落在合成线索上,因此没有真实公司被误引。依据重合度 100%,实体通过,时间检查仍因 2,652 天而失败。一个骑着 2019 年来源的真实事实。
过时来源上的真实事实,仍是关于现在的谎言。日期是主张的一部分,无论句子承不承认。

另一种形态是同名碰撞,我也把它留作合成案例。「Northwind Logistics 刚完成 4000 万美元 B 轮融资」背后有真实来源。来源说的是Northwind Inc.,一家奥斯汀网络安全初创公司,一家碰巧同名的完全不同的公司。每一个字对某一个 Northwind 都准确。对这一个则无一准确。

证据面板显示 4000 万美元 B 轮主张因实体匹配检查失败——所引来源关于 Northwind Inc. 而非 Northwind Logistics,裁定为实体不匹配,主张被划掉并剔除。
同名碰撞。每一个字对 Northwind Inc.(一家奥斯汀网络安全初创公司)都为真,对 Northwind Logistics 则无一为真。实体检查抓住了纯来源匹配永远抓不到的问题。

注意这三个例子的共同点。没有一个是幻觉。如果你把整个安全叙事都建立在抓住编造上,你会把三个都发出去。这正是人人引用却很少真正说清的 AI SDR 翻车背后的失败模式。单遍工具确实会幻觉出可测量比例的潜在客户专属主张,按一份行业统计大约在 12% 到 18%(AI SDR Industry Report,2026),但编造至少是你还能想象去抓住的失败。真实但过时、真实但实体错误的主张,才是看起来像成功、直到让你付出代价才露馅的那些。

是什么让我不再信任模型,开始信任一次日期相减

最终奏效的东西几乎简单到侮辱人,而我抗拒它的时间比我本该的更长。

如果 Werner 主张的问题是「最近」指向的来源超过了合理的时效窗口,那么检查就不是推理任务。它是算术。取来源日期,取工作日期,相减。如果主张使用了时效性语言且差距大于 365 天,主张即为过时,不予发出。来源年龄 2652 天大于时效主张上的 365 天,因此失败。没有提示词,没有温度,没有「作为人工智能语言模型」。只有一个数字和一个阈值。

一旦我允许自己写出那条规则,其余检查也想成为代码。主张是否真正由某段来源片段蕴含——以对内容词的 token 重合度衡量,并排除公司自身名称,以免句子仅靠重复「Werner、Werner、Werner」就得高分?代码。来源是否关于这一个实体而非同名的另一个?代码。语言模型仍是作者,而且是真正优秀的作者。它只是不当裁判。

我最终用两种方式表述这条原则,现在我经常说。一种是「智能体建议,代码裁决。」另一种是「不是 LLM 评判 LLM。」神经网络处理神经网络擅长的事:写出流畅、像人的草稿。确定性的纯 Python 核验器处理代码擅长的事:每一次都用同样的方式应用同样的规则。神经创作,符号核验。业界给这种配对的词是神经符号(neurosymbolic),不过我更在乎它买到的性质,而非标签本身。

更好的模型写出更好的句子。它们不会让一份两年的文件变成「最近」。那不是能力鸿沟。那是范畴错误。

而它买到的性质是可复现性。当我对同一输入运行核验器,我每一次都得到同一裁定。这听起来像小小的工程贴心之处。它其实是整场比赛的关键,因为可复现性才使一项决策可认证。我可以把轨迹交给你。来源年龄 2652 天,大于 365,存在时效主张,裁定为过时,主张被剔除。你可以重跑并得到完全相同的结果。LLM 裁判,哪怕很好的一个,也无法向你保证这一点。我经历过三次运行、两种裁定的那个晚上。我不会在那之上搭建合规叙事。

带有「下载 JSON」按钮的已签名 JSON 审计回执,列出每条主张的裁定、所引事实与来源、发布日期与时效天数,以及每一项检查结果,包括来源解析、依据重合、句子忠实度、实体匹配与时间有效性。
核验器为每封邮件写出的回执。每条主张、其裁定、所引来源、日期,以及确切检查结果,导出为可下载并重跑的 JSON。可复现性才使其可认证。

这不就是伪装成幻觉问题吗?

几乎每次谈话我都会被问到某种版本的这个问题,通常是技术人问的,我的回答随时间变短了。不是。而它之所以不是,正是我认为这项工作能比当前模型世代活得更久的原因。

幻觉框架悄悄假定修复办法是更好的模型。更大的上下文、更干净的训练、更低的编造率,最终问题缩到没有。对纯编造或许如此。对我真正在意的失败毫无作用。一个完美的模型——从不发明任何事实——仍会兴高采烈地在 2024 年文件上写「最近」,因为在草稿内部那句话真实、流畅,正是你所要求的。模型对日历没有义务。「扩充到 2,735 辆卡车」与「最近扩充到 2,735 辆卡车」之间的差距,不是规模能弥合的差距。

市场正以艰难的方式反复教这一课。AI SDR 品类对规模和基于信号的个性化优化得很猛,却大多跳过了重新核验所得主张是否对照当前、实体正确的来源这一步。经济账并不仁慈。企业级 AI SDR 流失率大约每年 50% 到 70%(UserGems,2026)。最常被引用的警示故事 11x.ai 融资 7400 万美元,随后在 2025 年崩解,据报流失率在 70% 到 80%(TechCrunch)。你不会因为模型偶尔幻觉就交出那些数字。你交出它们,是因为输出看起来个性化却不可信,买家最终能感觉到差异,即便他们叫不出名字。

所以我不断回到的论点很直白。个性化不是核验。你的 AI SDR 主要不是幻觉问题。它是核验问题,更好的基座模型修不好它,因为核验与出处不是模型能力。它们是你包在模型周围的系统的性质。

个性化不是核验。核验与出处不是模型能力。它们是你围绕模型构建的系统的性质。

「100%」实际被允许意味着什么

我想在这里谨慎,因为这正是创始人容易过度宣称的地方,而我正在打造的公司,名字所指向的正是相反的本能。

演示里有两个数字,它们不是同一个数字。第一个是Veracity Score,它只是草稿中被支持的主张数除以事实主张总数。它回答的是「AI 写的内容有多少最终为真」,在真实草稿上常常远低于 100,而这正是它诚实且有用之处。Werner 邮件丢掉了头条主张。Northwind 邮件丢掉两条。那是系统在工作,不是在失败。

第二个数字是发出完整性,且在构造上就是 100%,只要还有任何内容存活,因为策略闸门在允许发送前剔除每一条未获支持的主张。保证不是「AI 总是对的」。保证是「发出去的邮件只包含有来源支撑的主张」。那是非常不同的承诺,而我见过人们把它们混成一个大得多、也假得多的承诺。

还有一个基准,这是我拒绝缩短的句子:在一个固定的、人工标注的 25 例金标准集上,确定性核验器做出 25 个正确裁定中的 25 个。那是该标注基准上的 100%。它不是关于开放世界的宣称,不是对你收件箱的承诺,也绝不是「零幻觉」——我认为任何诚实的人都不该说这句话。模型仍在起草。草稿仍含未证实的主张。关键是未证实的被抓住并剔除,且抓取足够确定以至于可认证。任何向你兜售零幻觉保证的人,都在兜售我花了一周未能建成的东西。

我也会说清楚,因为我对自己持守的标准要求如此:演示的连接器是模拟的。EDGAR 拉取、新闻检索、CRM 回写、实际发送,全部是桩。真实的是机制:检查、闸门、审计轨迹,以及 Werner 10-K 摘录——那是真实的公开记录。我向你展示的是引擎如何决策,而不是一条装有你数据的生产流水线。如果你想看它决策,它再次在这里:veriprajna.com/zh-Hans/demos/ai-sales-intelligence

我留下的问题

我发现,这次构建在我身上改变的最后一件事,比论题更小,却黏得最久。

演示里还有第三条线索——一家合成的受 FINRA 监管的经纪交易商——其草稿完全干净。每条主张都获支持,无一剔除,完美的 Veracity Score。而策略闸门仍把它路由给人类,因为它受监管、是 C-suite、是大单,规则说无论草稿多干净,这些都要有人看。第一次我看到一封无瑕邮件被扣住待审,我的本能以为系统出错了。它没有。我只是在不知不觉中假定了正确性与安全性是同一种性质。

它们不是。一条主张可以既真又不安全。一份草稿可以干净却仍需要人。整个工作结果就是把这些概念分开,并为两者同时构建,而不是把它们压成一个好看的头条数字。

所以我想留给你的问题,是我现在在任何 AI 写的东西出手前都会问的那个。不是「这是真的吗」——那个我通常能回答,也通常不够。更难的那个:我能否此刻证明,哪一份当前来源支撑这条确切主张,而那份证明能否经得起一个想让它失败的人?

如果答案是否定的,模型变得再好也无关紧要。这句话还没准备好发送。

相关研究

同步发布于

满怀信心地构建您的 AI。

与一支在打造新一代企业级 AI 方面拥有深厚经验的团队携手合作。让我们助您设计、构建并部署一套值得信赖的 AI 战略。

Veriprajna 深度科技咨询公司 专注于为医疗健康、金融和监管等领域构建安全攸关的 AI 系统。我们的架构均依据成熟的规范进行验证,并配有完善的合规文档。