1152 字
6 分钟
LLM 的 Temperature 参数到底是什么?
2026-05-30

LLM 的 Temperature 参数到底是什么?#

之前我对 Temperature 的认识一直停留在它就是个调随机性的参数。

但是后来发现许多地方写的 Temperature 的范围是 0.0~1.0,问豆包有关 Temperature 的时候给我说的是 0.0~2.0。这个不一致的点引起了我的警觉,是不是豆包说错了?到底 Temperature 的范围是多少?还有我发现豆包给我说的 Temperature 不能设置成 0.0,因为公式中这个参数作为了一个分数的分母,但是我记得确实在某个 API 文档里见过这个参数可以设置为 0 的,而且明确说明的是设置为0输出越稳定,这个数值越大越发散,输出越有创意。正是带着这些疑问,不一致的观察,我想知道为什么,所以写下了这篇文章。

也明白了这玩意儿本质上是在修改 Token 的概率分布。搞懂之后,再看各种项目里的 temperature=0temperature=0.1temperature=0.7,一下就顺眼了。

一个让我困惑很久的问题#

刚开始调 LLM API 的时候,经常看到这样的代码:

response = client.chat.completions.create(
model="gpt-4o",
temperature=0.7
)

然后教程告诉我:temperature 越高越有创造力、temperature 越低越严谨。说实话,我记住了,但也只是记住了temperature 越大越发散,temperature 越小回答越忠实稳定。

Temperature 不会提高模型能力#

这是我觉得最容易误解的地方。可能有人潜意识里会觉得:temperature 调高 = 模型更聪明 实际上不是。

Temperature 根本不会增加模型知识,也不会提高推理能力。

它做的事情只有一个:重新调整 Token 的概率分布。

换句话说:模型知道什么,不知道什么。跟 Temperature 没关系。

Temperature 只决定:模型更保守、还是更敢冒险

LLM 实际上在干什么?#

说白了,LLM 本质上一直在干一件事:预测下一个 Token

例如:

中国的首都是?

模型可能会得到这样的结果:

Token分数
北京10
上海7
广州5
深圳4

注意,这里还不是概率,这是 Logit。可以理解成:模型心里的倾向分。然后经过 Softmax,变成概率:

Token概率
北京94%
上海4.7%
广州0.6%
深圳0.2%

最后从这里面抽一个,这就是采样。

Temperature 到底干了什么?#

核心公式其实只有一个:

Softmax(logit / T)

其中:

T = Temperature

Temperature 本质上是在:放大或者缩小 Token 之间的差距。

Temperature < 1:放大差距#

假设:

北京 10
上海 7
广州 5

如果:

temperature=0.5

会变成:

北京 20
上海 14
广州 10

差距直接翻倍,于是概率会变成:

北京 99%
上海 1%

左右。模型几乎一定选北京。

所以低温的本质是:让高概率 Token 更容易赢

Temperature > 1:缩小差距#

如果:temperature=2

则变成:

北京 5
上海 3.5
广州 2.5

差距变小,概率变平。

于是:

上海
广州

这些原本没什么机会的 Token。

也开始有机会被选中了。

所以高温的本质是:给低概率 Token 更多出场机会

那 Temperature=0 到底是什么?#

这里有个特别容易误解的地方。

数学上其实不存在:

temperature=0

因为:

logit / 0

直接炸了。但工程实现里,几乎所有模型都支持temperature=0

原因很简单,厂商会特殊处理。直接变成argmax,也就是谁概率最大选谁,不采样了。

实际项目怎么选?#

场景推荐 Temperature
代码生成0~0.2
法律 RAG0~0.2
知识库问答0~0.3
信息抽取0~0.2
总结归纳0.2~0.5
普通聊天0.7
创意写作0.8~1.2
小说创作1.0~1.5

为什么有的模型是 0~1,有的是 0~2#

这个我后来也查过,答案其实很简单。

数学上,Temperature 没有上限。只要:T > 0 就行。

但问题是:超过某个范围以后,生成质量通常会快速下降。

例如:

temperature=5

很容易出现:

  • 胡言乱语
  • 重复
  • 跑题
  • 幻觉增加

所以很多厂商直接限制:0~20~1 方便用户使用。

最后总结一下#

我觉得 Temperature 最容易记住的一句话是:

Temperature 不会改变模型知道什么,它只改变模型愿意冒多大的风险。

Temperature模型状态
0只选最确定答案
0.1非常保守
0.3稍微润色
0.7正常聊天
1.0开始自由发挥
1.5创意增强
2.0高风险区域

说白了,Temperature 调的不是知识,而是随机性。调的不是能力,而是模型的性格。

LLM 的 Temperature 参数到底是什么?
https://jiqingjiang.github.io/posts/tech/ai/llm的temperature参数/
作者
erode
发布于
2026-05-30
许可协议
CC BY-NC-SA 4.0