先说结论:它每一步都在“抽一个词”,不是在“算一个答案”
你大概遇到过这件事:同一句话原封不动问两遍,AI 给你的回答措辞不一样,甚至结论不一样。你以为是它心情不好,或者你以为自己哪里改了字。都不是。
真正的原因是:它生成文字的方式,本来就是“每次抽一个词”。
模型处理完你的话之后,对下一个词,它内部给出的不是一个答案,而是一整排候选和各自的概率——“北京”70%、“首都”20%、其他词凑够剩下的 10%。然后它从这一排里抽一个出来,写下去;再把刚写的这个词接回输入,重新给下一排候选,再抽一个。一篇 500 字的回答,就是连着抽了几百次。
所以“两次不一样”不是故障,是这套机制的正常表现。你真正该关心的不是“为什么不一样”,而是“哪一些不一样是我要的,哪一些不是”。
这篇给你三样东西:一是这套抽签机制到底怎么运作(每一步你都能对上自己的经验);二是我自己算出来的四张表,每个数你都能复算;三是温度、top_p 这些开关的官方口径——包括那句很多教程不敢说的:温度调到 0,官方也不保证你拿到一模一样的回答。
一个词是怎么变成“一排候选加概率”的
模型内部给每个候选打的是一个分数(术语叫 logit,可以理解为“模型觉得这个词有多合适”,注意它还不是概率)。要把一排分数变成一排概率,用的是同一个公式:把每个分数取指数,再除以所有指数的和——这个换算叫 softmax,它的唯一作用就是把任意一排数字压成“加起来等于 100%”的一排概率。
这里有个可以直接查的一手细节:这个公式里本来就写着一个除号。Geoffrey Hinton 那篇被反复引用的知识蒸馏论文(arXiv:1503.02531,2015-03-09)里,公式写作 q_i = exp(z_i / T) / Σ_j exp(z_j / T),并且明写 “where T is a temperature that is normally set to 1.”(T 是通常设为 1 的温度。)同一段还有一句非常好懂的说明:“Using a higher value for T produces a softer probability distribution over classes.”(T 越大,这排概率越“平”。)
所以“温度”不是一个比喻,是公式里那个除号的名字。 它做的事情极其朴素:先把所有分数除以温度,再去换算概率。 分数被一个大于 1 的数除,彼此之间的差距就被压小了——差距一小,冷门候选的概率就上来了。这也顺便解释了为什么温度的作用不是线性的:除法对“分数量级”的压缩,在低温区最猛。
Hugging Face 官方文档对它的定义短到可以背下来:“The value used to module the next token probabilities.”(用来“调制”下一个词概率的值。——这句里 module 是官方文档自己的拼写笔误,本该是 modulate,你在源码论坛里能看到有人专门提过。)注意它没说“改答案”,说的是改概率。这一点很重要:温度碰不到模型的知识,它只碰模型的手感。
还有一个容易被忽略的前提:它抽的那个“词”,未必是你以为的那个字。抽签的单位是模型词表里的块,不是你以为的字母或汉字——这件事我在另一篇里用分词器实测过,读完那篇你会明白为什么“抽字”这个说法本身就要打个折:《为什么 AI 数不清 strawberry 里有几个 r》。
微软 Azure 的文档给了范围和一个可直接抄用的判断标准:“The temperature parameter can be set between 0 and 2.”,并且 “A higher value, for example 0.7 makes the output more random... while a lower value, like 0.2, makes the output more focused and concrete.”(值高更随机,值低更聚焦、更具体。该页 ms.date 2026-05-13。)同页还有一句被大量教程漏掉的话:“The general recommendation is to alter one of these two parameters at a time, not both.”(建议一次只调温度或 top_p 其中一个,不要两个一起动。)原因很直白:这两个旋钮都在改同一排概率的形状,一起调你就没法判断是谁的效果了。
这里有个中文用户专属的类比特别好用:手机输入法的联想候选。你打完“我想去”,输入法下面排出一串词,第一个通常是“北京”或者你上次选的那个。你手一滑点了第三个,句子里就多了个你没打算说的词。
大模型写东西就是这个动作的放大版:每一排候选都带概率,而“手滑的程度”是一个可以调的旋钮。这个旋钮在 API 里叫 temperature(温度)。
温度到底动了什么:我在本地跑了 1,000 次抽签
上面那段是说法,这一节是数。我自己写了十几行代码,造了一个“下一个词”的分布:5 个候选词,各自的“原始分数”(logit,模型给候选打的分,还没换算成概率)是 3.0、2.4、1.2、0.4、-0.3。然后按不同温度把它们换算成概率,每个温度抽 1,000 次,数一数各抽到几次。
| 温度 | 排第一的词被抽中的概率 | 排最后那个词被抽中的概率 | 1,000 次里出现的不同结果数 |
|---|---|---|---|
| 0 | 100% | 0% | 1 种 |
| 0.2 | 95.25% | 0.02% | 2 种 |
| 0.5 | 74.88% | 0.10% | 5 种 |
| 0.7 | 65.18% | 0.58% | 5 种 |
| 1.0 | 54.79% | 2.02% | 5 种 |
| 1.5 | 44.27% | 4.91% | 5 种 |
| 2.0 | 38.29% | 7.35% | 5 种 |
三件事值得停下来看:
一,温度不是“改答案”,是“把手伸进冷门候选的口袋”。 注意最后那一列:排第五的冷门词,在温度 0.2 时抽 1,000 次几乎碰不到,温度 2.0 时已经能占到 7.35%。温度越高,越冷门的词越有机会被点到——这就是“手滑程度”的数学含义。
二,温度的作用不是线性的,低的那一段最陡。 从 0 到 0.2,排首的概率从 100% 掉到 95%;从 1.0 到 1.5,只从 55% 掉到 44%。也就是说在低温区,动一点点差别很大;在高温区,再怎么调都差不多疯。这解释了一个很多人踩过的坑:从 0.7 调到 0.9 感觉没变化,从 0.2 调到 0.5 却像换了个模型。
三,“抽 1,000 次只出 1 种”只在温度 0 出现,而且是在我这个理想实验里。 真实服务里温度 0 能不能保证一模一样,后面两节讲——这是全篇最容易被教程讲错的一条。
顺带一个专业口径:信息论里量“有多不确定”叫熵(entropy,单位是比特,可以理解为“平均要问几个是/否问题才能确定结果”)。我这次抽样的熵随温度是:0 → 0.28 → 0.96 → 1.27 → 1.61 → 1.93 → 2.08。温度 0 时熵是 0,意思是完全没有悬念;温度 2 时熵超过 2 比特,等于每一步都在四五个选项里晃。
为什么短回答稳、长回答飘:一个你能自己按计算器的数
很多人的经验是:问它“中国的首都是哪儿”,问十次答案都一样;让它“写一段产品介绍”,十次能给你八个版本。这不是玄学,是连乘。
假设每抽一次词,有 90% 的概率和上次抽到同一个(听起来挺稳了吧)。那么一整段 L 个词全部逐字一致的概率是 0.9 的 L 次方。我按几个一致率把这张表算了出来:
| 每个词一致的概率 | 10 个词 | 20 个词 | 50 个词 | 100 个词 | 200 个词 |
|---|---|---|---|---|---|
| 99% | 90.4% | 81.8% | 60.5% | 36.6% | 13.4% |
| 95% | 59.9% | 35.9% | 7.7% | 0.6% | 接近 0 |
| 90% | 34.9% | 12.2% | 0.5% | 接近 0 | 接近 0 |
| 80% | 10.7% | 1.2% | 接近 0 | 接近 0 | 接近 0 |
看第三行那个数:每个词有九成把握一致,写到 50 个词,整段逐字一致的概率只剩 0.5%,两百次里碰上一次。 这就是“它每次给我不一样的稿子”的全部原因——不是它想逗你玩,是几十次连乘把一点点随机性放大成了必然不同。
这张表还有个反直觉的用法:它是“长度税”,不是“质量税”。 长回答更容易飘,但飘的是措辞,不一定飘结论。真正该盯的是“结论有没有跟着飘”——问同一个事实题五次,如果五次答案都不同,那问题不在温度,在模型根本不知道(这一层站内这篇讲幻觉的文章说得更直白:《AI 为什么会一本正经地胡说八道》)。“问五次”这个动作本身,是普通人不看任何参数就能用的检测手段,后面“你能自己做的实验”里我给具体做法。
温度调到 0 就能复现吗?官方文档自己写了不行
这是全篇最容易被教程讲错的一条,所以我把它单独拎出来,只用厂商自己写的话。
微软的说法是“尽力而为”。 Azure 有一整页专门讲“生成可复现的输出”(ms.date 2025-11-26),开头第一句就是你的日常体验:“By default if you ask an Azure OpenAI Chat Completion model the same question multiple times you're likely to get a different response.”(默认情况下,同一个问题问多次,你多半会拿到不同的回答。)它的解法是加一个 seed(随机数种子)——固定种子就像让抽签机每次从同一个状态开始摇。但那页里紧跟了一句 “best effort”(尽力),并且用一个 Important 提示框明确写着:“Determinism isn't guaranteed with reproducible output.”(即便开了可复现输出,也不保证确定性。)
更好玩的是微软自己那个示例。 那页给了两段代码:第一段不传 seed,同一个“讲个宇宙起源的故事”跑三遍,输出三段完全不同的开头;第二段把 seed 固定成 42 再跑三遍——结果是前两段一模一样,第三段换了个结尾。 官方文档用自家示例演示了“固定种子也可能不一致”,这比任何免责声明都直白。那一页还有一句和前面那张连乘表完全对得上的话:“Identical API calls with larger max_tokens values, will generally result in less deterministic responses even when the seed parameter is set.”(允许输出的长度上限设得越大,即使固定了种子,确定性也越差。)
Anthropic 说得更狠。 它的模型迁移指南里有一句专门写给老用户:“If you were using temperature = 0 for determinism, note that it never guaranteed identical outputs on prior models.”(如果你过去用 temperature=0 来求确定,注意:它在以前的模型上也从未保证输出完全相同。)注意时态——它说的是 “never guaranteed”,不是“偶尔会飘”。
那到底是谁在捣乱? 不是模型故意耍你,是机器本身。PyTorch 官方的随机数文档里有句被引用很多的话:“Completely reproducible results are not guaranteed across PyTorch releases, individual commits, or different platforms.”(跨版本、跨提交、跨平台都不保证结果完全可复现。)同一句还补了一刀:即使种子相同,CPU 和 GPU 上跑出来的结果也可能不同。更贴近生产的一层来自一篇 IEEE Transactions on Computers 的论文(arXiv:2601.06118,2026-01-03 提交):“produce nondeterministic results when run on GPUs, even when they are configured to produce deterministic results.”(即便配置成确定性模式,GPU 上的推理仍会产出不确定的结果。)
这篇论文还给了一个恰好能解释“事实题稳、开放题飘”的发现(这句是我认为全篇最值的一句):这种不确定性 “are significant for token probabilities that are in the range of 0.1 to 0.9, while they are much smaller when the probabilities are close to 0 or 1.”(概率落在 0.1 到 0.9 之间时影响明显,接近 0 或 1 时影响小得多。)翻译成人话:模型越犹豫的地方,机器噪声越能改变结果;模型非常确定的地方,谁都动不了它。 所以“水的化学式”五次一样,“写段文案”十次八个样——这不是两件事,是同一件事的两端。
一个反直觉的现在时:大厂正在把这些旋钮拆掉
如果你以为“温度”是行业共识参数、各家都支持,那 2026 年的现实是:几个主要厂商正在把它从接口里删掉。 这条变化本身就值得单独讲,因为它直接改变你该怎么用 AI。
| 厂商 | 温度还能调吗 | 官方原文(简) |
|---|---|---|
| 微软 Azure | 能,0–2 | “set between 0 and 2”,建议一次只调一个参数 |
| DeepSeek | 能,默认 1.0 | “Has no effect in thinking mode.”(思考模式下无效) |
| 阿里云百炼 | 能,[0, 2) | qwen-plus 非思考默认 0.7、思考模式 0.6,“低于 0.6 自动修正为 0.6” |
| 智谱 GLM | 能,[0.0, 1.0] | 标注“限两位小数”,GLM-4.6 系列默认 1.0 |
| Kimi | 不能 | kimi-k3 “固定 1.0,传入其他值报错”,并建议“不要显式传入” |
| Gemini | 被忽略 | 3.6+ 与 4 “ignore custom values for temperature, top_p, and top_k and return deprecation warning headers” |
| Claude | 会报错 | Opus 4.7 起非默认值 “returns a 400 error”;SDK 已移除这三个参数 |
这张表怎么读,比表本身重要:
一,“能不能调”已经分化成三种状态。 传统模型(微软、DeepSeek 非思考、阿里、智谱)留着旋钮;主打推理的新一代模型(Kimi、Gemini 新代、Claude 新代)直接把旋钮拆了——有的报错、有的静默忽略、有的干脆从 SDK 里删掉。
二,厂商拆它的理由,官方没写在同一页里,但方向是能看出来的:这些模型在训练阶段自己学会了“该想多久、什么时候该稳”。 你把温度当外置旋钮的东西,被挪进了模型内部。这跟站内那篇讲上下文的文章是同一个趋势——产品层在把参数藏起来,让用户只负责说清要什么:《AI 为什么聊着聊着就忘了你说的话》。
三,DeepSeek 那对参数最有教学价值,因为它的行为不对称。 官方 API 文档里,temperature 写着 “Has no effect in thinking mode.”(思考模式下完全无效);而 top_p 写的是 “It only takes effect in thinking mode, where the effective range is 0.95–1.0”(只在思考模式下生效,且有效区间只有 0.95 到 1.0)。同一个模型的两个“随机性旋钮”,一个在非思考模式管、一个只在思考模式管,还各管一半。 这正好是“别同时调两个”那句建议的活教材:你以为你在调一个东西,其实你在调两套不同的机制。
四,如果你在用网页版而不是 API,这些参数你多半根本碰不到。 大多数消费级产品没有暴露温度开关,只有“创意/严谨”这类滑块,而它背后接的是什么,厂商一般不写。所以“我把温度调低了”这句话,对多数用户其实是没有操作基础的——你能调的只有要求本身。
随机性还能反过来用:抽五次投票,比抽一次更准
如果“抽签”是纯坏事,那把它调到 0 就完事了。但有一类任务恰恰要靠随机性变准:让模型把同一道题独立做五遍,取出现次数最多的那个答案。
这背后的算术很简单,我自己算了一遍:假设模型单次答对率是 p,抽 k 次做多数表决,整体答对率是“至少有一半次答对”的概率。 按二项分布算出来是这样:
| 单次答对率 | 只做 1 次 | 抽 3 次投票 | 抽 5 次投票 | 抽 9 次投票 | 抽 15 次投票 |
|---|---|---|---|---|---|
| 55% | 55.0% | 57.5% | 59.3% | 62.1% | 65.4% |
| 60% | 60.0% | 64.8% | 68.3% | 73.3% | 78.7% |
| 70% | 70.0% | 78.4% | 83.7% | 90.1% | 95.0% |
两个必须一起看的结论:
一,只要单次超过五成,投票就一定更强。 单次七成把握的模型,抽九次投票能到九成——这就是“多问几遍取共识”不是玄学的原因。这个做法在研究里有个正式名字,论文出处与它实测的提升幅度我放在下一节。
二,前提是“每次抽要真的不一样”。 如果模型对错误答案非常有把握(温度 0、或者它压根就是背下来的),五次会给你同一个错答案,投票一点用没有。所以“问五次”这个技巧只在模型“半懂不懂”的时候有效,这恰好也是它最危险的时候。
这个做法有正式名字,也有硬数据。谷歌那篇《Self-Consistency Improves Chain of Thought Reasoning in Language Models》(arXiv:2203.11171,2022-03-21 提交,ICLR 2023;作者 Xuezhi Wang、Jason Wei、Denny Zhou 等八人)在摘要里把方法写成一句话:“It first samples a diverse set of reasoning paths instead of only taking the greedy one, and then selects the most consistent answer by marginalizing out the sampled reasoning paths.”(先采一批多样的推理路径,而不只取那条“最优”的,再选出现次数最多的答案。)它报告的提升幅度是 GSM8K 数学题 +17.9%、SVAMP +11.0%、AQuA +12.2%、StrategyQA +6.4%、ARC-challenge +3.9%(论文注明是在 PaLM-540B 上、跑 10 次平均、每题独立采 40 个输出)。
+17.9 个百分点不是靠模型变聪明,纯粹是把随机性用了两次。 这一点和我上面那张二项表是同一件事:论文用 40 个样本,我表里给了 15 个的版本——样本越多越强,但收益是递减的(单次七成 → 5 次 83.7% → 9 次 90.1% → 15 次 95.0%,前五次就吃掉了大部分红利)。而 40 个样本意味着 40 倍的花费,这是这个技巧唯一的、也是很大的代价:《每百万 tokens 到底是多少字》。
但“越低越准”也不对:把温度调高有时反而更少编
写完前面那些,很容易得出“那我把温度全设 0”的结论。这个结论有两处站不住。
第一处:温度 0 写出来的东西会烂。 这是这套机制存在的根本理由,有一篇很出名的论文专门讲这件事——《The Curious Case of Neural Text Degeneration》(arXiv:1904.09751,Holtzman、Buys、Du、Forbes、Choi 五人,2019-04 提交、ICLR 2020)。它摘要里那句批评几乎可以直接当标题:“using likelihood as a decoding objective leads to text that is bland and strangely repetitive.”(只按“可能性最高”来生成,文字会变得平淡而且古怪地重复。)它提出的解法就是 top-p 采样(也叫 nucleus sampling):不从全部候选里抽,而是先把概率从高往低累加、凑够 p(比如 90%)就截断,只在这一小撮里抽。 摘要里那句定义是 “allows for diversity while effectively truncating”(既保留多样性,又有效截断)。所以 top_p 和温度不是两个独立的旋钮,它们解决的是同一个问题:怎么把“冷门但离谱”的候选挡在外面,同时别把文本压成复读机。
这也解释了为什么前面那句“建议一次只调一个”是对的:两个旋钮都在剪同一排概率的尾巴,一起剪就没人知道自己剪了什么。
第二处:有实测说温度 0 更容易“编”。 这里要引一篇必须降级表述的研究:一篇 2026-03-09 提交的 arXiv 预印本(arXiv:2603.08274,单一作者,评测 35 个模型、172B tokens,页面未见同行评审标注)在文档问答场景里报告:“T=0.0 yields the best overall accuracy in roughly 60% of cases”(温度 0 在约六成情形下总体准确率最好),但“higher temperatures reduce fabrication for the majority of models”(对多数模型,更高的温度反而减少了编造),并且能显著降低“无限生成循环”这类失控——文中给出的量级是温度 0 的循环率可达温度 1.0 的约 48 倍。
这篇只能当线索,不能当定论:单一作者、未见评审、任务面窄(文档问答)。但它指出的方向和我前面那张二项表是互不矛盾的:温度 0 让模型每次都给你“它当前最信的那个词”——如果它信错了,你会得到一份措辞稳定、内容一致错误的报告,而且它更容易在没话可说时硬接下去(这层机制站内那篇讲幻觉的文章讲得更完整:《AI 为什么会一本正经地胡说八道》)。“稳定”和“正确”是两件事,把温度调低只买到前者。
你自己五分钟能做的三个实验
这三个都在对话框里做,不用任何参数、不用 API Key。
实验一,量它有多飘。 挑一道开放但有标准答案结构的题,比如“用三句话介绍光合作用”,同一句话连着问五遍,把五份答案并排看。你会看到三种层次:字数和结构往往差得不多,措辞几乎每份都不同,而结论一般五份一致。如果你发现结论也在变,那这道题它其实不会——这比任何“AI 靠不靠谱”的争论都有用,因为它给了你一个可操作的判据:结论会飘的题,就是它不会的题。
实验二,看它什么时候不飘。 换一道纯事实题(“水的化学式是什么”),同样问五遍。这次你应该五次都拿到一样的答案。原因就回到前面那张表:事实题的关键那几个词,概率被训练得非常陡,抽签抽不出别的结果;而开放题的候选本来就一排并列,随手一抽就换了。同一句“它今天很稳”,在不同题型上含义完全不同。
实验三,用“要求”替它把签筒按住。 这是普通人最实用的一招。同一个写作任务,先正常问一遍,再问第二遍时把格式钉死:字数、段落数、必须出现哪几个词、不许用哪几个词。你会发现第二遍的波动明显小了。道理是:你写的每一条验收标准,都是在减少它可选的候选数——候选从二十个变成三个,抽签的自然就只有三种结果。站内这篇把“把要求写成验收标准”讲得更系统:《12 个真正好用的提示词》;如果你想知道怎么把这类要求固化成可复用的东西,看这篇:《提示词、Skill、MCP 有什么区别》。
一个提醒:这三个实验测出来的都是这个模型今天的表现。换模型、换版本、甚至换个时间段,波动程度都可能不同。别把五次的结果当成“AI 就是这样”的结论,它只是给你手上这一份答案的体检报告。
这对日常用 AI 的四条实际影响
一,要“每次一样”的场景,别指望温度。 很多人以为把随机性调低就能拿到稳定输出。方向对,但温度只是四个变量里最小的那个:真正决定一致性的,是你的要求有没有把候选空间压窄、以及它有没有可核对的事实来源。站内那篇讲上下文的文章说得很直白——它没有“记住”这一步,只有“这次递进去多少”:《AI 为什么聊着聊着就忘了你说的话》。你要的稳定性,一半在参数,一半在你给的素材和格式上。 而“给素材”这件事有它自己的技术门道:你怎么把资料递进去、递多少,直接改变它每一排候选长什么样——这一层站内这篇讲检索的文章说得很清楚:《AI 是怎么翻到你要的那一页的》。
二,要“多给几个方案”的场景,反而别调低。 起名字、想标题、列营销角度,你要的就是它抽到那排候选里第五、第六个。这类任务把温度调高(或者干脆说“给我十个方向差异大的”)比反复“再想想”更有效——“再想想”往往只是又抽了一次,而你说清“差异大”是在告诉它别停在第一排。
三,事实、数字、代码这三类,波动是警报不是风格。 前面那张连乘表说明措辞必飘,但这三类的正确答案不该飘。如果它给你的报错信息、日期、金额每次不同,说明它在生成而不是在查。这类内容最省事的处理是让它把出处一并交出来,然后你自己核——成本怎么算、怎么读它的参数,站内这两篇给了方法:《每百万 tokens 到底是多少字》、《怎么读一份大模型发布稿》。
四,别把“它每次不一样”当成“它不聪明”。 恰恰相反,能抽出不一样,说明它真的在给一排候选打分。真要说机制上更值得警惕的,是另一种情况:它给每个字都打了分,但打分依据是“哪个词常跟在前面的词后面”,而不是“哪个说法是真的”。这一层和分词是同一族问题——它眼里的世界是块和概率,不是词和事实:《为什么 AI 数不清 strawberry 里有几个 r》。
这次我没核到的几件事(以及本文的数是哪来的)
按站里的老规矩,把边界说清楚:
一,OpenAI 自己的 API 参考页这次打不开(403)。 所以本文所有“官方原句”里没有一句直接来自 OpenAI 文档,涉及它家参数口径的地方,我用的是微软 Azure 的公开文档(同一套参数名,微软是它的云平台方)。如果你要引 OpenAI 的原文措辞,请自己去它的 API 参考页确认。
二,谷歌的数值范围与默认值没查到。 它的文档这次只给了那句“新模型忽略这些参数”,具体范围和 seed 支持情况页面没写,所以本文表格里谷歌那一栏只写了“被忽略”,没编数字。
三,Anthropic 早年的 0–1 范围和“什么时候设 0”那段表述,现行文档里已经删掉了。 抓不到我就不写。本文只用了它现在明确挂着的那句“temperature=0 从未保证输出相同”。
四,Kimi 和智谱有没有 seed 参数,本次抓取的内容里没出现。 没出现不等于没有,所以我没在表里写它们。
五,那篇报出“温度 0 的循环率约为温度 1.0 的 48 倍”的研究,是单一作者的 arXiv 预印本,页面没有同行评审标注。 我在正文里只把它当“方向线索”用,并且明确说了不能当定论。
最后一条最重要:本文所有“实测”数字,都是我本地构造的分布上的抽样和算术,不是对某一家线上服务的测量。 我没有对任何产品连问一百次去统计它的真实一致率——那需要 API 花费,也需要你手上的 Key。所以我给的数告诉你的是“这套机制在数学上会导致什么”,不是“某某模型今天表现如何”。 后者请你自己按第三节那三个实验去量,那才是对你有用的数。
三道判断题
一,“把温度调到 0,AI 的回答就一定能复现。” 不对。温度 0 只是让它每步都取排第一的那个候选,但服务端还有一堆不由你控制的因素会让结果不同(上一节用微软、Anthropic、PyTorch 三家原话讲过)。更要紧的是:即使逐字能复现,也不代表那个答案是对的——复现的是它的错误,不是正确。 顺带说,“每步只能从固定候选里选一个”这件事真做到极致的模型是存在的,站内这篇教程里那种只会做选择题的模型就是靠这个换来稳定和低成本的:《Jev 使用教程》。
二,“它每次给我不一样的答案,说明它不懂。” 不对,这是过度推论。措辞不一样是抽签的必然结果,跟懂不懂没关系。真正能当信号用的是:同一道有唯一答案的题,结论层面出现分歧。开放式任务十份不同答案是正常的,事实题五份不同答案才是警报。
三,“多问几遍取多数,答案会更准。” 有条件地对。 我算过那张二项表:单次答对率超过五成时,投票确实单调变强(七成变九成);但如果它每次都会抽到同一个错误答案,问一百遍也还是那个。所以这招只在“它半懂不懂”时有效,而对它彻底不懂的题,投票会给你一种虚假的确定感——五份一致的错误答案,看起来比什么都可信。
现在能做的几件事
第一件,给你最常用的那几个任务定一个“波动预期”。 写作类:接受它每次不同,只挑措辞;事实类:一旦两次不同就当作红色信号,去核来源。别用同一套标准对待两种任务。
第二件,把“格式要求”写死。 字数、段数、必用词、禁用词、输出结构。你写的每条验收标准都在减少它的候选数,这是普通人手上最有效的那个“温度旋钮”。具体怎么写,站内这份速查更实操:《提示词写作技巧》。
第三件,重要结论问三遍,但只问有唯一答案的那种。 三次一致不代表它对(它可能一直错得一致),三次不一致则几乎可以确定它不知道。这是一个只会给你“排除项”的工具,别反过来用。
第四件,如果你在用 API 或者能填参数的客户端,先看清两件事:这个字段的取值范围和默认值(各家不一样,下面有对照),以及它到底有没有把参数透传给模型——很多网页端产品根本没暴露这些开关,你在设置里调的“创意/严谨”滑块背后是什么,官方往往没写。
第五件,知道钱和随机性的关系。 抽五次投票意味着五倍的 token 消耗。要不要花这个钱,取决于这道题值不值得——这正好是成本算法那篇能帮你判断的:《每百万 tokens 到底是多少字》。
一句话版本
它不是在算答案,是在按概率抽字:温度决定签筒有多晃,长度决定晃出多少种结果,而你的要求决定它有多少种可抽。 措辞的波动是机制,结论的波动是警报——把这两件事分开看,你就比大多数使用者更清楚该信它几分。