首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用AI就必须容忍幻觉——从幻觉不可消除到最终的精确代码化

用AI就必须容忍幻觉——从幻觉不可消除到最终的精确代码化

作者头像
人月聊IT
发布2026-07-23 18:53:41
发布2026-07-23 18:53:41
920
举报

大家好,我是人月聊IT。今天想和大家聊一个我最近一直在反复琢磨的问题,就是AI大模型的幻觉。

这个话题看起来老生常谈,但真正在企业里落地做AI应用,尤其是做ChatBI智能问数这类东西的时候,你就会发现幻觉不是一个可以绕过去的技术细节,而是一个必须从一开始就想清楚的前提问题。我把最近的思考整理成了四个观点,今天逐一展开,也顺带把我前面几篇文章里谈过的一些点串起来。

1. 只要用生成式AI,就一定有幻觉

先说第一个,也是最根本的一个判断:只要你用的是生成式AI,就一定会有幻觉。

这句话我想强调的是"一定"两个字。很多人有一个误区,觉得幻觉是因为提示词写得不够好,或者是底层的harness工程做得不够强,只要我把提示词打磨到极致,把上下文喂得足够全,把工程框架搭得足够复杂,幻觉就能消除。实际不是这样。提示词再详细、harness工程再强,都只能把幻觉的概率往下压,但没有办法压到零。

这个道理我在前面讲ChatBI的文章里其实已经踩过坑了。当时构建企业级的智能问数平台,我遇到一个特别头疼的问题:明明已经把数据库的表结构、字段定义都投喂给了AI,但AI的回答仍然频繁出错,甚至产生严重的幻觉。比如用户问"上个月的采购订单准时率是多少",AI张口就来一个"85%",你追问怎么算的,它含糊地说"按发货时间算的",可我们实际要的是收货准时率,根本不是发货准时率。

你看,表结构我都给全了,它还是会答非所问。为什么?因为生成式AI的本质就是概率生成,它是在"猜"一个最可能的答案,而不是在"查"一个确定的答案。这是这套技术架构的底色决定的,不是你在上层怎么修修补补就能改变的。所以ChatBI智能问数到今天,业界也没有谁敢说能做到零幻觉。

那结论就很清楚了:你要用AI,就必须接受和容忍AI存在幻觉。

但这里我要补一句,我说的"容忍",不是"放任"。容忍指的是承认残留的不确定性一定存在,而不是说你就不管了、把风险直接甩给用户。真正专业的做法,是在容忍幻觉这个前提下,把关键环节做上兜底——比如结果要可溯源、可解释,关键路径要有人工确认,让AI去猜的地方尽量不落在会造成严重后果的地方。我在前面讲"人只应关注流水线的一头一尾"的时候也提到过,验收这个动作现阶段是没办法完全脱离人的,否则AI输出的东西并不一定是你想要的。

2. 完全精确又要自动化的事,别让生成式AI去跑

第二个观点,是我个人觉得最有实操价值的一个判断。

我们把企业面对的真实需求拆一下,其实无非两类。一类是内容生成类,比如方案自动编写、会议纪要归纳、知识库问答,这类场景核心是AIGC,没有明确的规则约定,用生成式AI是天然合适的。另一类是强规则约束类场景,比如智能排产、指标计算、对账核算,这些是有明确强规则算法约定的,答案只有对和错,不允许AI天马行空地去生成。特别是传统IT系统里的应用场景,大部分都是这类强规则的、要求完全精确的。

那问题来了:一件事情既要求完全精确、又需要自动化,这种场景适合直接用生成式AI去跑吗?我的答案是不适合。

但注意,不适合直接用生成式AI去跑,不等于不能用AI。这里的关键转变是:你用AI的目的不是让它去生成五花八门、天马行空的答案,而是让它帮你生成精确执行的代码。

我在前面那篇讲AI应用本质逻辑的文章里画过一张图,专门说这个事。对于强规则类的自动化问题,正确的做法是先让AI基于你明确的需求生成可自执行的代码,然后基于这段代码程序再去解决同类型的问题,得出精准答案。也就是说,我们实际应用大模型的地方,是在"可执行代码生成"这个环节上,而不是在"每次都让它现场作答"这个环节上。类似早期的GPT代码解释器,类似豆包的数据分析功能,本质上都是先生成代码再执行,最终得出确定的结果。

这个思路还有一个特别大的好处,就是成本。你让生成式AI去写这段代码,只是在生成那一刻一次性消耗了tokens;代码一旦固化下来,后续无论跑多少遍,都是传统程序在跑,不再消耗任何tokens,也不再有任何幻觉。相当于你用一次AI的算力,换来了一段可以永久精确复用的确定性资产。这笔账,比"每次查询都调一次大模型、每次都担心它会不会又胡说"要划算太多。

所以我常说,AI编程实际是解决复杂场景问题很关键的一环。它把AI的不确定性,收敛成了代码的确定性。

3. 传统IT系统加对话,价值在于免开发查询,不在于替掉表单

第三个观点,来自最近有人问我的一个问题:我们传统IT系统里增加AI自然语言对话,到底作用是啥?

这个问题问得很好,因为现在很多企业做AI改造,方向其实是有点跑偏的。

我个人理解,传统IT系统加自然语言对话,核心价值在于:原来那些需要单独开发一个功能才能满足的需求,特别是查询类功能、分析统计类功能,现在不用专门去开发了,一句自然语言对话就解决掉了。

这一点我在很早讲数据中台AI赋能的时候就提过,在业务系统的AI赋能里,我建议优先考虑类似数据中台或者类BI系统的实践,因为查询统计这类场景相对最容易实现、价值也最直接。你想想,过去业务部门要一个新报表、要一个新维度的统计,得提需求、排期、开发、测试、上线,一套流程走下来少则一两周。现在如果自然语言对话能直接问出来,这部分开发工作量就直接省掉了。这才是AI对话真正的价值杠杆所在。

但是——现在有一种做法我个人是不太认同的,就是把原本好好的录入表单,也一股脑改成对话框的模式。这个我认为反而是一种倒退。

为什么?因为IT系统的本质,是一个基于人录入的数据、按照提前定义好的规则和约束去执行计算的工具。录入这件事,它的整个过程、它的录入规则校验,实际是非常复杂的。表单的价值恰恰就在于,它把这些字段结构、格式约束、校验规则,都固化在了界面里,让你想录错都难。你现在把它改成纯对话,等于把这套精心设计的约束全拆了,让用户用大白话去描述,然后再指望AI去猜他到底想填什么、填得对不对。这个过程完全对话化,意义不大,反而可能花掉比填表单更多的时间。

当然,我不是说自然语言录入一点价值没有。如果待录入的内容本身就是非结构化的叙述——比如临床记录、事故报告、客服小结——那用对话去捕获、再由下游抽取成结构化字段,是合理的。判断的标准不是"有没有对话框",而是数据本身到底是不是结构化的。结构化的交易型表单,老老实实用表单;非结构化的叙事,才考虑对话入口。

4. 对话查询如何避免幻觉?我的两个思路

好了,绕了一圈,又回到那个最关键的问题上:既然要做自然语言对话查询,那到底怎么才能完全避免幻觉?

我得先诚实地说,完全避免幻觉,实际是没有办法做到的。我们能做的,是通过工程手段把幻觉的空间尽可能地收窄。这里我提两个思路,这两个思路不是二选一,而是互补的。

思路一:不要去做动态的text2sql,而是提前把API接口准备好、发布成MCP Server供AI调用。

传统ChatBI最容易出幻觉的地方,就是让AI临场把自然语言翻译成SQL。这个翻译过程是自由生成,生成空间太大,稍有偏差结果就错了,而且你还很难发现它错在哪。

我的做法是把这个环节换掉:预先把各类查询、统计能力封装成标准的API接口,再遵循MCP协议把这些能力暴露成MCP Server。这样一来,AI要做的事情就从"生成一段SQL",变成了"识别用户意图、拆解任务、然后去调用那个准确的API"。只要意图识别没有出问题、调到了正确的API,那么返回的结果就一定是正确的——因为结果是确定性的接口算出来的,不是大模型猜出来的。这也呼应了我一直讲的那句话:MCP Server的能力接入是可以穷举的,把能力沉淀成一个个标准接口,AI只负责在这些确定的能力之间做路由和编排。

这里也要说清楚它的边界:这个思路把幻觉从"自由生成答案"收缩到了"意图识别"这一步,风险大幅降低,但没有归零。一是意图仍然可能被误路由,尤其是长尾的、说法刁钻的问题;二是没有被API覆盖到的查询,还是会塌回去走生成式的老路,而长尾恰恰是幻觉的重灾区。所以API的覆盖面和建模质量,就成了新的关键。

思路二:把对话过程本身,看成需求不断探索和细化的过程,最终一切都收敛为精确的稳态代码。

这是我最近特别有体会的一个点。实际上你在和AI对话的过程中,本身就是一个思路和需求不断被探索、被细化的过程。在数字化这个领域,我越来越坚定地认为,所有的对话式能力,最终都应该被精确地代码化。

什么意思呢?前期你和AI的所有生成式对话,包括那些动态生成的代码、动态生成的SQL,它们的终极使命,其实都是在为"生成一段精确的代码"做准备。前期是素材的积累,是需求在混沌中逐渐清晰的过程,最终它会沉淀、固化成一段稳态的代码。

我自己在用AI辅助编程的时候已经明显发现了这个规律:一开始AI生成的东西总是不太对,我就不断地给它加各种提示词、加各种约束,一轮一轮地纠偏。而当我把所有约束都补全的那一刻,我回头一看,其实这些约束加起来,已经足够让它输出一份完整、精确的代码了。换句话说,那个反复对话、反复约束的过程,本质上就是我在用自然语言把需求规格(Spec)写清楚的过程——这跟当下规范驱动编程里写结构化Spec的思路,其实是完全一致的。到最后,对话退场,代码留下。

一点总结

把这四个观点连起来看,其实是同一条主线:把不确定性、探索性、长尾的部分交给生成式AI,把精确性、重复性、可验证的部分交给确定性的代码;而系统设计的功夫,就在于把这条边界画在哪里。

  • 幻觉不可消除,所以要容忍,但要用工程手段兜底;
  • 完全精确的自动化,别让AI现场跑,而是让AI一次性把它编译成代码;
  • 对话的价值在于替掉查询分析类的开发,而不是去替掉本该结构化的表单;
  • 而避免幻觉的两条路——预置API做意图路由、对话探索最终代码化——最终都指向同一个归宿:让前期所有的生成式对话,收敛为一段精确、稳定、可复用、不再消耗tokens、也不再有幻觉的稳态代码。

前期是素材积累,最终是一段稳态代码。我觉得这可能就是AI在数字化领域落地的一条底层规律。

今天的分享就到这里,希望对大家有所启发。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人月聊IT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 只要用生成式AI,就一定有幻觉
  • 2. 完全精确又要自动化的事,别让生成式AI去跑
  • 3. 传统IT系统加对话,价值在于免开发查询,不在于替掉表单
  • 4. 对话查询如何避免幻觉?我的两个思路
  • 一点总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档