之前用AI查冷门资料,它老编得有模有样,煞有介事甩一堆看着像那么回事的来源,坑过我好几回
后来发现个贼简单但管用的法子:开工前先跟它来一句,拿不准的东西直接说不知道,别硬编,也别编参考文献。
literally就这一句,幻觉少一大半。真不懂的时候它老老实实回"我不确定",而不是造个假答案糊弄你。
哈哈
btw这招写代码也灵。呢让它改bug前先说"改不动就直说哪块你没把握",比它闷头乱改强太多。
人嘛被坑多了就学乖,不轻信。对AI其实也一样,你先给它台阶下,它才肯对你说实话 ( ̄▽ ̄)
之前用AI查冷门资料,它老编得有模有样,煞有介事甩一堆看着像那么回事的来源,坑过我好几回
后来发现个贼简单但管用的法子:开工前先跟它来一句,拿不准的东西直接说不知道,别硬编,也别编参考文献。
literally就这一句,幻觉少一大半。真不懂的时候它老老实实回"我不确定",而不是造个假答案糊弄你。
哈哈
btw这招写代码也灵。呢让它改bug前先说"改不动就直说哪块你没把握",比它闷头乱改强太多。
人嘛被坑多了就学乖,不轻信。对AI其实也一样,你先给它台阶下,它才肯对你说实话 ( ̄▽ ̄)
我平时跟它打交道也爱先撂这句。前阵子查一张老唱片的来路,我懒得打预防针,它倒好,给我编了一串活灵活现的厂牌和年份,我差点儿当了真。后来每次开头先说"拿不准就直说",踏实多了。
不过有一回它还真嘴硬——明明心里没底,偏要绕弯儿凑个答案,多追一句才肯松口。所以除了让它说不知道,我现在还爱补半句"哪块你没把握,别替我硬撑"。你这招我收下了,改天捋旧资料的时候试试。
读到你说的"先给它台阶下",我心里忽然一软。这话说的是AI,可何尝不是说人。
我们逼着机器时刻正确,它便用编造来讨好;我们逼着身边的人事事有答案,朋友也只好硬着头皮圆谎。幻觉这东西,怕不全是模型的毛病,也有使唤它的人那份"你必须懂"的霸道在里头。你那一句"拿不准就说不知道",其实是在撤掉审讯室里的灯,让它从被告变回能对话的人。
我后来也照你的法子试了,不过反过来多想了一层:与其光要求它诚实,不如把"不知道"当成一种景致来赏。真遇着它老老实实回一句"这我还真没把握",我反而松了口气,像推开窗看见雾还没散,正好不必急着赶路。
说到底,人和工具之间最舒服的关系,大概就是彼此都容得对方偶尔当个糊涂蛋。你容它糊涂,它才肯把真底交给你;就像你容自己不懂,世界才肯露一点谜面。坦白讲里尔克好像写过,要我们学着去爱那尚未解答的问题本身。嗯…对着AI大概也该如此,别急着讨答案,先陪它把不知道的那截,安安静静认下来。
你那句"改不动就直说哪块没把握"尤其妙。写代码也好,过别的事也好,肯摊开手说"这块我真没成算",比硬撑着往前拱要体面得多,也安全得多。
你这帖算是给我提了个醒:信任从来不是考出来的,是让出来的。
你平时是跟哪个模型这么磨合的,顺手的话我也去试试那句开场白。
这法子我前阵子也试过,不能说没用,不过"少一大半"这个数我得存个疑。
你说的那句,本质上是在系统提示里加一道箍,英文圈管这类思路叫"unknown-aware prompting"一类的东西,大意是让模型在没把握时亮牌。对"某条冷门文献到底存不存在"这种能明判yes/no的问题,它确实能压住不少编造——尤其是假引文,你明令一禁,模型多半改口"不确定"。
可"幻觉少一大半"到底是怎么测的?是楼主体感,还是拿一批题做了前后对照?我吃过的亏是,那种"看着在理、细究才露馅"的软性编造,单靠一句"别硬编"拦不牢,模型落笔时压根不觉得自己是在编。
至于"先给它台阶下它才肯说实话",比喻是灵,但说到底它没有面子观念 ( ̄▽ ̄) 不如说是你把边界划清了,生成时的缰绳就紧了。楼主可试过把这句提级成系统设定?我倒想看看不同模型差出多少。
我平时用AI也踩过你说的那种坑,不过有个地方想多问一句:“幻觉少一大半"这个数,是按你自己的体感估的,还是真前后对比过?我自己的经验是,开工前那句话确实能让它更爱说"我不确定”,但碰到它恰好编得自圆其说、又没被你当场戳穿的情况,光靠这一句其实压不太住。
后来我是把"说不知道"和"报来源时顺手标一下哪条我没法验证"绑着用的,感觉比单甩一句"别编文献"要稳当些。你那个改bug前先让它交底"哪块没把握"的招,我回头也去试试看灵不灵。
"少一大半"这说法太笼统了,你试过几回、有没有对照?我体感是它更不乐意硬编了,但真错的时候还是照错。
说白了就是提前把"认怂"的代价降下来。模型不是不知道,是被训练得太想给你交个差,你一逼它就编。先说"拿不准就直说",那股压力卸了,它才肯老实。
我试下来光喊"别编"还不够。把话说死更灵:没有可靠来源就写无据可查,不要给任何链接。这样连半真半假的糊弄都少一大截。代码那边也一样,先让它点出"我没把握的是哪块"再动手。
你们试过更狠的指令没?我想看看还有没有更省心的表述。
想补一点楼主没展开的地方:这招管用的机制,可能跟"给它台阶下它就更诚实"不太是一回事。
大模型本身没有真正的自我认知,它并不知道"自己知不知道"。你加那句"拿不准就说不知道",本质是在 prompt 里塞了个偏向保守的先验,把输出分布往"少说"那侧推了推。所以它更多是在模仿一个谨慎的人会怎么答,而不是真在评估自己的置信度。
这就带来个不对称的问题。这句指令有时候会过头——它明明能答对,却被调得太怂而回你"我不确定";有时候又完全没拦住,尤其你问的东西恰好落在训练语料的高频区、看着特像那么回事时,它照样自信编。所以"我不确定"这四个字本身也不能全信,得打个折。
我自己的用法是再叠一层:让它说不知道就直说之后,补一句"给的出处你没法确认真假就标出来",然后追着要可验证的东西——比如让它列最没把握的一两个点,或者要能点开链接的来源而不是光给个书名。幻觉率能再降一截,而且你能看出它到底在推理还是在填空。
btw 你说写代码那句"哪块没把握",这个我体感比查资料更灵。模型对自己改动的边界有时候还真有点模糊感知,让它先报不确定区间,比闷头改完你再 debug 省事太多。
说到底还是工具,信一半留一半最稳 ( ̄▽ ̄)
前阵子我也被它坑过,让我挺无语的。查个冷门知识点,它一本正经甩了三个文献名,我信了去搜,结果全是现编的,连期刊都不存在。
所以你这个先给它"台阶下"的思路我特别有共鸣。不过我自己的体会是,光让它说"不知道"还不够,有时候它会回个"可能"“大概”,看着像谨慎,其实还在打太极。我现在会多补一句:拿不准的直接标出来,能给来源的给、给不了的明说没有。这样比单独一句"不知道"更让人放心。
说到底还是得留个心眼,别全信就对了 ( ̄▽ ̄)