Temperature是什么意思?AI里的温度参数详解

快速解答

Temperature(温度)是一个通常在0到2之间的数字,用来控制语言模型在挑选每一个下一个token时使用多少随机性。设为0时,模型几乎总是选概率最高的词;设为1时,它按照自己学到的概率分布采样;高于1时,概率分布被拉平,模型会更频繁地选出不太可能的词,这在读者眼中要么是有创意,要么是语无伦次。

模型从不直接挑一个词,它是从一份列表里选

读完你的提示词后,语言模型会给词表里的每一个token打分,当前模型的词表大小在10万到20万之间,然后把这些分数转换成概率:"树叶"45%,"天气"25%,"颜色"15%,以此类推,形成一条长长的尾巴。什么是LLM讲了它为什么是这样工作的。接着它从这份列表里抽出一个token,接在后面,然后重新来一遍。

Temperature作用在打分和抽取之间。每个分数在计算概率之前都会先除以温度值。除以一个小于1的数,分数之间的差距会被拉大,于是最靠前的候选词优势更明显。除以一个大于1的数,差距会缩小,长尾词因此获得真正的机会。当温度恰好为0时,数学计算就退化成"永远取最高分",这也是0被宣传为确定性设置的原因。

这个名字借自物理学,气体越热,粒子的随机运动就越多。模型越"热",选出的词就越随机。模型的知识本身不会改变,改变的只是抽取这一步。

这个数字对概率做了什么,用一个例子讲清楚

假设某个提示词的下一个词,模型给出五个候选,概率分别是45%、25%、15%、10%和5%。这就是温度为1时的分布。把公式套用到0.5和2上,同样这五个候选词会变成下面这样。这些百分比是按公式算出来的,不是实测的,但形状和每一个真实分布是一致的。

温度0.5时排第一的词三次里赢两次,温度2时三次里赢一次
Temperature 0.51第5名3第4名8第3名21第2名67第1名percentTemperature 15第5名10第4名15第3名25第2名45第1名percentTemperature 211第5名15第4名18第3名24第2名32第1名percent

看一下第五名候选词在三个面板里的变化:不到1%,然后是5%,再到11%。在一段500个token的答案里,每个token有11%的概率选到第五好的词,累积起来就会变成那种跑题、编造、最终不知所云的文本,这正是有人把playground的滑块拉到2时看到的效果。再看排名第一的候选词:即便在0.5时,它也有三分之一的机会落选,所以低温度只是更稳定,而不是固定不变。

这一点关系到"确定性"这个说法。Anthropic的API文档写道,即便温度为0,结果也"不会完全确定性",这个保留是真实存在的:并行硬件上的浮点运算以及厂商端的批处理,都意味着同一个提示词在温度为0时仍可能给出两个不同的答案。如果你需要完全一致的输出,把答案存下来,不要指望这个设置。

各家厂商允许的范围,以及默认值是多少

厂商范围默认值说明
OpenAI0到21推理模型(o系列、开启推理的GPT-5)不接受这个参数
Anthropic0到11Opus 4.1及之后的版本会拒绝同时设置两个参数的请求
Google Gemini0到21在AI Studio里以滑块的形式展示
OpenRouter直接透传厂商默认值Whizi用来接入每一个模型的通道

有三点值得注意。所有厂商都默认用1,也就是按模型自身的概率分布采样,所以你在普通聊天里得到的答案,本身就已经是众多可能抽取结果中的一次。Anthropic的范围止步于1,所以Claude的温度1是上限,而OpenAI的1只是中点;这些数字在不同厂商之间不能直接比较。而且推理模型会拒绝这个设置:OpenAI把temperature列为o系列和GPT-5不支持的参数,发送了就会报错,Anthropic则要求只要开启了扩展思考就必须是1。

不同任务该用哪个设置

规则就一句话:有唯一正确答案的任务用低值,有很多种好答案的任务用高值。

任务Temperature原因
提取到表格或JSON、分类、代码0到0.3只有一种正确形状,变化就是缺陷
摘要、翻译、事实性问题0.3到0.7允许一点措辞自由,但不想要编造
起草、改写、头脑风暴0.7到1厂商的默认值,多样但连贯
小说、命名、口号、刻意求怪的想法1到1.3长尾词正是重点所在
高于1.5很少用连贯性下降得比新颖性上升得快

两点提醒。Temperature并不控制真实性。温度为0的模型选的是它认为最可能的答案,如果那个最可能的答案是错的,它会每次都以十足的自信错下去,什么是AI幻觉从训练的角度解释了这一点。而且temperature不是控制语气或长度的旋钮,那些应该写进指令里,面向新手的提示词工程讲了这部分;这个数字只决定模型在一个词上赌一把的频率。

为什么你在聊天应用里从没见过这个滑块

ChatGPT、Claude应用、Gemini和Whizi都不暴露temperature控制。这个设置存在于开发者的playground和API里,而三家厂商没有一家公开自己应用所用的数值。Whizi不发送这个参数,所以这里的每个模型都跑在各自厂商的默认值1上。原因和前面一样:默认值本身就已经是大多数任务想要的设置,把滑块放在错的地方,会把一个好的助手变成一个坏助手,而且完全没有信号告诉你是哪个旋钮出的问题。

一个多模型工作区给你的替代方案是一根更大的杠杆。两个不同的模型就是两份不同的概率列表,在它们之间切换,对答案的改变远大于任何一个temperature值。取代滑块的习惯是:对于有唯一正确答案的任务,问第二个模型,只在它们意见一致时才采用;对于有很多种好答案的任务,问两个模型,然后自己挑。在Whizi里,这就是对话中途换模型,对话中途切换模型讲了哪些内容会被保留下来。

如果你确实需要这个旋钮,它就在厂商自己的API或playground里,按每次请求设置,上面表格里的范围都适用。

操作清单
  • 任何只有一种正确形状的任务用0到0.3:提取、分类、代码
  • 起草和改写保留默认值1,这是每家厂商调优的目标
  • 永远不要把0当成输出完全一致的保证,想保留的答案要自己存下来
  • 不要指望temperature修正语气、长度或准确性,那些是指令问题
  • 聊天应用没有滑块时,换模型来解决,这比任何temperature值都更能改变答案

常见问题

AI里temperature为0是什么意思?

温度为0时,模型总是直接取唯一最可能的下一个token,而不是采样,所以同一个提示词几乎每次都给出相同的答案。Anthropic的API文档写道,即便温度为0,结果也"不会完全确定性",因为硬件和批处理仍可能引入微小差异。它适合提取、分类和代码这类任务,但完全不会让那个最可能的答案变得更正确。

ChatGPT用什么temperature最好?

ChatGPT应用不让你设置这个值,OpenAI也不公开应用所用的数值。通过API的话,结构化输出和事实性提取用0到0.3,写作用0.7到1,只有刻意追求多样化的创意文本才用高于1的值。OpenAI的推理模型只要收到这个参数就会直接报错。

temperature和top-p有什么区别?

Temperature重塑整份概率列表,把它变尖或变平。Top-p则是截断列表,只保留概率加起来达到p的最靠前那些token,再从中抽取。两者都能降低或提高随机性。OpenAI建议只改其中一个,Anthropic在Opus 4.1及之后的版本上会拒绝同时设置两者的请求。

更高的temperature会让AI更有创意吗?

它会让模型更频繁地选出不太可能的词,大约到1.3之前读起来像有创意,过了1.5左右就变得语无伦次。在一个实测例子里,把温度从1提到2,会让排名第五的候选词的概率从5%涨到11%,而这会在每一个token上累积。真正意义上更好的创意来自提示词和模型本身,而不是这个旋钮。

在Whizi里能修改temperature吗?

不能。Whizi不发送temperature,所以每个模型都跑在各自厂商的默认值上;ChatGPT、Claude应用和Gemini同样不暴露这个控制,也不公开数值。在多模型工作区里,等价的杠杆是模型选择器:两个模型就是两种不同的概率分布,对话中途切换对答案的改变比任何temperature设置都更大。