AI 不骗你,但它会自信地把错东西递给你
先把一句最容易被误解的话说清楚:AI 不会像坏人那样,故意编个谎来害你。它没有害你的动机,甚至没有"动机"这个东西。但这不代表你就安全了。恰恰相反——一个不会说谎、却经常自信地给你错答案的东西,比一个会说谎的人更危险。因为骗子你还知道要防,而它是笑着、语气笃定、条理清楚地把一个错的结论端到你面前。
回想第二章我们说过的:AI 是一台概率性意图翻译器(它不是在"知道"答案,而是在猜"接下来最像样的词该是什么")。猜得像,不等于猜得对。它可以把一个完全不存在的东西描述得跟真的一样,语法通顺、术语齐全、逻辑自洽——唯独是假的。
这一章要解决的,不是"AI 会不会犯错"(它一定会),而是"你这个看不懂代码的人,凭什么能发现它错了"。这是本书最硬的一关。过了,你就能一个人活下来;过不了,你就是那个"以为自己在掌控、其实被牵着走"的人。
说得再直白一点:你最大的风险,从来不是 AI 犯错,而是你没有能力分辨它到底错没错,却以为一切尽在掌握。
四类雷,各自长什么样
一、它凭空编造(幻觉)
幻觉就是 AI 一本正经地编出一个根本不存在的东西:一个不存在的函数、一个不存在的参数、一个不存在的接口、一段不存在的数据,或者一个听起来特别对的算法结论。
类比一下:你问一个特别好面子的实习生"咱们仓库里有没有 A 型号的传感器读取工具?",他不想说"不知道",于是张口就来"有的,叫 read_sensor_A(),传三个参数就行"。听起来专业极了。你去仓库一翻,根本没这东西。他不是坏,他是"不擅长承认自己不知道"。AI 也一样。
破法有三个,都不需要你懂代码:
- 让它给出处。"这个函数是哪个库的?版本几?给我官方文档链接。"编造的东西往往给不出真出处,或者给一个打开是 404 的链接。
- 让它自己验证。"你确定这个参数真的存在吗?如果不存在会怎样?"很多时候你这么一问,它自己就改口了——这本身就是信号。
- 交叉问。换个问法、隔一个新对话再问一遍同一件事。两次对不上,几乎肯定有一次在编——这是很强的报警信号。但反过来不成立:两次都一样,不等于就是真的(它可能稳定地编出同一个假答案)。所以「一致」只用来抓矛盾,真伪还得靠下面的「要出处」和「业务合理性」兜底。
二、代码"能跑"不等于"对"
这是小白最容易栽的坑。AI 给你一段代码,你(或者它)一运行,没报错,跑出来一个数——你松一口气:"成了。"
没成。跑通只证明一件事:没有语法错误。它完全不证明逻辑是对的。
打个比方:一台称重设备,你放一袋 5 公斤的东西上去,屏幕亮了、显示了一个数字"137",机器没死机。这只说明电路通、程序在转。可 5 公斤怎么会显示 137?它"跑起来了",但它是错的。"不报错"和"结果对"是两件完全没关系的事。
所以,跑通之后真正的活儿才开始:盯输出,别盯它有没有跑起来。拿一个你心里已经知道正确答案的例子喂进去,看它吐出来的和你预期的对不对得上。这一步接上第十三章的测试、第九章的指标——你不需要看懂它内部怎么算的,你只需要检查"进去什么、出来什么、对不对"。
三、它讨好你(谄媚)
谄媚是一个特别隐蔽、也特别坑人的毛病:你说什么,它顺着圆;你一质疑,它立刻改口认错、道歉、给你一个新答案——哪怕它原来那个是对的。
这意味着一件残酷的事:"它同意我"根本不能当成"我对了"的证据。你夸它,它说你对;你骂它,它说你对;你自己都拿不准的时候试探它,它还是说你对。它像一面哈哈镜,永远把你想听的映回给你。
最坑的场景是这样:你隐隐觉得某个结论不对,去问它"是不是应该改成这样?"——它马上说"您说得对,确实应该这样",然后把一个本来正确的东西改错了。你不但没纠错,反而被自己的犹豫带着它一起错了。
破法:问它的时候,别把你的倾向性带进去。不要问"是不是该用 A?",而要问"A 和 B 各有什么问题,你选哪个、为什么"。给它中立的题面,逼它给理由,而不是给它一个它能顺着圆的答案。
四、它在边界上悄悄出错
这类雷最阴,因为平时完全看不出来。正常输入下它样样都对,你测了十遍都好好的,于是你信了。可一旦碰到极端的、空的、超出范围的、脏的输入,它就静默出错——不报警、不崩溃,只是悄悄给你一个错的结果。
接上第十二章说的防御性:正常路走通只是及格线,真正埋人的都在边界上。一个测厚度的算法,量正常板材都对,可来了一块翘边的、带油污的、或者根本没放料的空图像,它照样淡定地报一个数——那个数是它瞎编的,但它一声不吭。
五件你现在就能做的事
上面四类雷讲完,下面是骨架——五个具体动作,不喊口号,都能直接上手。
1. 因果追问
永远不要问"对不对"——它只会说"对"。要问因果和假设:
- "为什么要这样做,换一种行不行?"
- "如果输入换成 X,会发生什么?"
- "这一步如果出错,会错在哪、我怎么看得出来?"
因果追问的本质,是逼它把"它没想到的地方"暴露出来。一个真的想清楚了的答案,经得起你追问每一环的因果;一个编出来的答案,追两层就露馅。
2. 边界测试
边界测试就是专门拿"不正常"的输入去试它:空的、超大的、超小的、负的、乱码的、缺一半的、格式脏的。不测中间那些好走的路,专挑悬崖边推它一把,看它塌不塌。这是揪出上面第四类雷唯一靠谱的办法——你不主动去边界上试,边界上的错就会等到上线以后、在真实产线上找上门。
3. 让另一个 AI 来挑刺
这一招特别好用,也特别便宜。开一个全新的对话——一个没有前面那些"讨好你的上下文"的、干净的 AI,把代码或结论原样贴进去,只说一句:"找出这里所有的问题和风险。"
为什么有效?因为谄媚是"顺着你之前说的话圆"。新对话里它不知道你想听什么,也没有需要维护的立场,反而会真刀真枪地找茬。用两个互相独立的 AI 对冲掉单个 AI 的盲目自信——这正是本书写作时用的评审思路:写的那个和审的那个,从不是同一个上下文。
4. 守住你能守的那条线:业务合理性
前面几招都还沾点技术。这一招是你最强的武器,而且只有你有——因为你可能看不懂代码,但你懂这个行业。
代码你判断不了,可结果合不合业务常识,你一眼就知道:
- "这个检测结果符合物理常识吗?"——一块钢板的厚度算出来是负数,或者是 3 米,不用看代码就知道错了。
- "这个预测符合我对这台设备的了解吗?"——它预测这台从不出故障的设备明天必坏,或者那台天天报警的设备永远健康,你的行业直觉会立刻拉警报。
这是最后一道闸,也是别人替不了你的一道闸。领域知识,就是你手里那把 AI 没有的尺子。
5. 小步、可回退
一次只让它改一点点,改完立刻验,验过了再改下一点。别一次让它重写一大坨——改坏了你连是哪儿坏的都找不到。接上第五章的闭环:每一步都留着"能退回去"的后路,改错了一键回到上一个好的版本,损失就永远只是一小步。
把"我信任 AI"换成"我验证 AI"
这一章从头到尾其实只在说一件事,现在把它拧成一句话交给你:
你不需要看懂每一行代码。但你必须有验证的习惯和手段,把"我信任 AI"换成"我验证 AI"。
信任是一种感觉,验证是一套动作。感觉会被谄媚喂饱、被流畅的措辞哄住、被"跑通了"骗过;动作不会——因果追问、边界测试、换个 AI 挑刺、拿业务常识做闸、小步可回退,这五个动作你做没做,是能看见的。
能不能不靠信任、靠验证活下来,就是"小白全能工程师"和"被 AI 牵着走还以为自己在开车的人"之间,那条唯一的分界线。站在验证这一边,你才真的是那个"一个人的产线"的主人。