welclaiAI·TREND·DIGEST
模型

为什么同一条提示词跑两次结果会不同

同一条提示词发两次,你常会得到两个不同的答案。这是设计使然,不是 bug——而懂得为什么,能告诉你何时该去控制它。

models2026-04-04 15:31 KST·主编·7 分钟

把同一条一模一样的提示词发给模型两次,你常会得到两个不同的答案。对习惯了普通软件——同样的输入可靠地产出同样的输出——的人来说,这感觉像是故障。它不是。变化是这些模型生成文本方式中一个被设计出来的特性,而大多数时候它在做一件有用的事。但它对测试、对可靠性、以及对任何需要表现可预测的功能,都有实实在在的影响——所以目标不是被它吓到,而是搞懂它从何而来,以及当你需要时能把它调低多少。

本文解释输出为何会变、是哪个旋钮在控制它、为什么连那个旋钮也买不来完美的可复现性,以及如何围绕变化来做设计、而非与之对抗。

生成是一连串选择

模型一次产出一个 token。在每一步,它并不是去挑一个预先定好的下一个 token。相反,它计算出一个分布——一组横跨众多可能的下一个 token 的概率。某个 token 可能极有可能,另几个中等可能,还有一条长尾不太可能。模型随后从这个分布里采样:它做一次加权的随机抽取,越是概率高的 token 越可能被选中,但概率低的也仍有机会。

那个采样步骤就是变化的根源。因为每个 token 是一次抽取、而非一次固定的选定,两次运行就可能分岔——而一旦它们在某一个 token 上分岔,之后的一切都以一段不同的历史为条件,于是输出可能彻底分道扬镳。句子靠前处的一个不同词语,引向一个不同的句子,再引向一个不同的段落。早期的小小随机性,会复合成后期的巨大差异。

为什么随机性是特性,不是缺陷

技术上完全可以在每一步都总是挑那个概率最高的 token,从而每次都产出同样的输出。模型通常不把这设为默认,自有其道理。总是走概率最高之路的文本,往往平淡、重复、出奇地缺乏生气。那一点点随机性,正是让模型能换种说法、找到一个不那么显眼却更好的续写、并避免陷入重复循环的东西。

对于创意和对话类工作,这种变化恰恰是你想要的。你让它给三句标语,结果三句一模一样,你会很恼火。随机性是模型在它"好答案"的空间里探索,而非机械地返回它评分最高的那一个。所以变化不是模型不可靠;它是模型被给了空间去变得有意思。唯一的问题是,你那个具体任务想不想要这份空间。

控制它的那个旋钮

随机性的量是可调的,最常见的是通过一个常被称为*温度(temperature)*的设置。直觉很简单:温度控制模型在多大程度上偏向它的头部选择、还是把赌注摊开。低温度把分布朝最高概率的 token 收紧,让输出更聚焦、更可预测、更重复。高温度把分布摊平,给不太可能的 token 更多机会,让输出更多变、更出人意料,也更容易跑题。

把温度一路调到底,模型就强烈偏向于总是挑它的头部选择,这让输出在多次运行间一致得多。把它调高,你就在邀请更多的多样性。这一个旋钮让你能把一个任务放到它该在的位置:当你每次都需要同样的结构化答案时调低,当你想要广度和创意时调高。你对变化所拥有的大部分实际控制权,都住在这里。

为什么低温度仍然不是完美可复现

这里有一处会把人绊倒的微妙之处:即便随机性被调到最小,你可能在多次运行间看到偶尔的差异。降低采样随机性移除了变化最大的来源,但未必移除了每一个来源。

有两样东西让一丝不可预测性存活下来。第一,当两个候选 token 在概率上极其接近时,计算中的微小差异就可能把选择推向这一边或那一边,而从那个岔口起输出就分岔了。第二,运行大模型的系统很复杂,会通过计算如何被调度和组合,引入它们自己的微小非确定性。这两样通常都不是你能从外部控制的。诚实的说法是:降低随机性让输出一致得多、通常也足够一致——但把任何一次模型调用当作一个有保证的、逐比特可复现的函数,是个错误。请为"高度一致"做计划,而非"完美确定"。

这对测试和可靠性意味着什么

变化改变了你评估模型的方式,忽视这一点会引出错误的结论。如果你把一条提示词测了一次、它管用,你学到的是它能够管用,而非它每次都会管用。一次好的运行,是从可能运行的分布里抽出的一个样本。要真正搞懂行为,就把同一个输入跑上好几次,看看输出的散布。你看到的变化是信息:一条产出天差地别答案的提示词是脆弱的,而一条在多次运行间产出稳定答案的提示词则是稳健的。

这也重新框定了排查问题的方式。当一项功能偶尔出毛病时,原因也许不是一个你能按需复现的固定 bug,而是采样偶尔走上的一条低概率分支。把它当作确定性问题去追,会让人沮丧;把它认作分布的一条尾巴,则会把你指向真正的修法——一条更清晰的提示词、一个更低的温度,或在那条糟糕分支出现时把它接住的护栏。

为变化做设计,而非与之对抗

成熟的做法是让你的设置和设计去匹配你的任务。对于任何需要一致、结构化结果的事情——一次分类、一次数据抽取、一个固定格式——把随机性调低,并去校验输出的形状,而非盲目信任它。对于任何能从广度中受益的事情——起草、头脑风暴、对话——则允许更多变化,并把这份多样性当作重点来拥抱。

在正确性至关重要的地方,不要依赖单次调用是对的。围绕它搭起检查:校验输出是否满足你的要求,不满足时就重试或回退。而每当你在决定一条提示词是否好到可以上线时,请基于多次运行来判断,而非一个走运的结果。变化是这一介质的属性;那些经得起考验的系统,是带着对它的考量来设计的,而非被它打个措手不及。

总结

同一条提示词跑两次结果不同,是因为生成会从一个概率分布里采样每一个 token,而非挑一个固定答案,而早期的微小差异会复合放大。那份随机性是刻意的——它让输出不那么平淡,对创意工作更有用。温度是把它调高调低的旋钮,但即便在最低处,逐比特的完美可复现也无法保证。所以请在多次运行上测试、在需要一致性时调低随机性、对关键输出做校验而非信任单次调用,并围绕变化、而非与之对抗来设计功能。这种行为不是一个要消除的 bug;它是一个要管理的属性。

#sampling#temperature#determinism#reliability