首页
看点啥
插画图片
首页 看点啥 Temperature 越高越有创造力吗?从概率分布、Top-K 到 LangChain 工作流解析

Temperature 越高越有创造力吗?从概率分布、Top-K 到 LangChain 工作流解析

2026-07-29 0

把同一个问题连续问大模型几遍,得到的回答通常不会完全一致。

Temperature 越高越有创造力吗?从概率分布、Top-K 到 LangChain 工作流

差异有时仅体现在措辞上,有时连结论与代码实现都会变化。很多人简单地将其归因于“AI 有随机性”,随后开始反复调整 temperature:写代码时设成 0,写文案时则提高到 1。

但是 temperature 到底改变了什么?它是否会直接增强模型的创造力?Top-K 以及 Top-P 控制的又是什么?

大模型会依据当前上下文预测下一个 Token,这是它最基础的工作方式;这些参数也必须从这里开始理解。

一、大模型并非一次想出完整答案

上下文里假设已有“你好”,下一个 Token 即将生成。此时 Transformer 计算给出的并非一个唯一答案,而是各个候选 Token 对应的一组分数。

为方便理解,可以将这些分数转成如下概率分布:

Token 候选项概率
0.60
0.15
0.10
0.05
0.01
其余 Token0.09

模型并非每次都必须选择“吗”,即便它拥有最高概率。

生成时通常采用两类策略:

始终采用贪心选择时,输出一般更稳定,却容易显得机械和重复;允许从候选 Token 中采样后,表达会更多样,同时错误或偏题风险也会提高。

temperatureTop-KTop-P,作用都是在实际抽取 Token 前,对候选范围及概率分布进行调整。

二、概率分布的形状如何受 Temperature 影响

一组原始分数通常是模型最先给出的结果,而不是概率,这组分数称作 Logits;在 Softmax 开始前,Temperature 就会参与计算:

调整后的概率 = softmax(logits / temperature)

已有候选词之间的概率差距会被它重新调整,但候选词不会因此凭空新增。

较低的 Temperature

概率分布在 Temperature 小于 1 时会更“尖锐”:高分候选受到强化,低分候选获得机会的可能则继续降低。

原始分布:吗 0.60、啊 0.15、呀 0.10……降低温度:吗的优势继续扩大,其他候选更难被选中

此时输出一般呈现以下特点:

较高的 Temperature

概率分布在 Temperature 大于 1 时会更“平缓”:不同候选的概率差距被拉近,原来概率偏低的 Token 因而得到更多机会。

输出一般更多样,但也可能同时出现:

因此,Temperature 并不控制模型是否聪明,而是决定生成时尝试低概率候选的程度。

如何理解 Temperature 为 0

Temperature 直接除以 0 在数学公式中不可行。至于 API 中的 temperature: 0 通常属于服务端提供的特殊配置,目的是尽可能采用更稳定的生成策略。

完全相同的结果并不能由它在所有情况下保证。输出仍可能因上下文变化、工具返回内容、并行计算、服务端实现和模型版本而产生差异。

所以,更准确的表述是:

三、Top-K:为候选数量设置上限

最多能够留下几个候选 Token,由 Top-K 控制;候选间的概率差距,则由 Temperature 调整。

若进行如下设置:

Top-K = 3

概率先由高至低完成排序,模型随后仅保留排在前面的三个候选:

Token 候选项原始概率
0.60
0.15
0.10

系统会排除“美”“坏”及其他候选,对余下三个 Token 重新归一化后再执行采样。

Top-K 取值偏小时:

Top-K 取值偏大时:

需要留意,Top-K 该参数只在部分大模型 API 中直接开放,Hugging Face Transformers 和一些开源模型推理框架较为常见;而在 OpenAI 兼容接口里,更常见的是 temperaturetop_p

四、Top-P:候选随累计概率动态确定

中文所说的核采样,就是 Top-P,它的另一个名称是 Nucleus Sampling。

候选数量不会被它固定。它从概率最高的 Token 起逐项累计,最终留下的,是累计概率达到或超过指定阈值所需的最小候选集合。

假设:

Top-P = 0.8

从前述概率分布开始累加:

吗:0.60吗 + 啊:0.75吗 + 啊 + 呀:0.85

累计概率在加入第三个 Token 后超过 0.8,所以“吗、啊、呀”这三个候选会在本次得到保留。

候选数量固定与否,构成了 Top-P 和 Top-K 的区别:

参数选择方式特点
Top-K概率排名最高的 K 个 Token 被固定保留候选数量固定
Top-P以达到 P 为累计概率的最小保留集合分布决定候选数量变化

模型越确定,累计概率达到 Top-P 所需的 Token 就越少;概率越分散,必须保留的 Token 就越多。由此可见,不同上下文更容易被 Top-P 适配。

五、三个参数如何共同影响生成

一次 Token 采样,从概念上可以看作:

上下文→ 模型计算下一个 Token 的 Logits→ Temperature 调整概率差距→ Top-K 或 Top-P 缩小候选范围→ 重新归一化概率→ 按概率抽取一个 Token→ 把新 Token 加入上下文→ 继续预测下一个 Token

只有生成结束标记或到达最大输出长度,这个不断循环的过程才会停止。

控制精度不会必然随参数数量增多而提高。拿当前 DeepSeek Chat Completion 接口来说,官方文档给出的通常建议是修改 temperaturetop_p 其中一个,而非同时对两者进行调整。

原因并不复杂:两个参数都会影响最终采样空间。同时修改后,既难以判断输出变化由哪个参数引起,也不利于后续测试与复现。

调参应遵循以下正确方式:

  1. 保持 Prompt、模型和测试数据不变;
  2. 一个参数是每次唯一改变的变量;
  3. 重复执行时始终采用同一组问题;
  4. 把内容多样性、重复性、格式稳定性和正确率放在一起比较;
  5. 依据真实业务结果选择参数,不要直接套用所谓“万能值”。

六、temperature: 0 为何常用于 Agent 和 RAG 项目

模型在现有 LangChain Agent 项目中按以下方式配置:

const model = new ChatOpenAI({modelName: process.env.DEEPSEEK_MODEL || 'deepseek-chat',apiKey: process.env.DEEPSEEK_API_KEY,temperature: 0,configuration: {baseURL: 'https://api.deepseek.com/v1',},});

这里使用低 Temperature,并不是因为 Agent 完全不需要创造力,而是因为这类任务更重视可控性。

以一个 Agent 为例,它需要判断:

错误工具可能被选择,参数也可能不符合 Schema,相同输入甚至会走上差异很大的执行路径;这些都是模型在相关步骤中过度追求多样性可能造成的结果。

同类要求也存在于 RAG。事实依据已经由检索资料提供,因此模型应做的是依照资料组织答案,而非任意发挥。基于这个原因,问答、摘要和事实整理任务通常更匹配较低 Temperature。

但必须特别注意:

正确文档如果没有被 RAG 检索到,即使 temperature: 0,错误或残缺的上下文仍可能成为模型生成答案的依据。

七、LangChain 工作流如何安排 Temperature

LangChain 的作用,是把 Prompt、模型、输出解析器和工具等节点连接成一条工作流。

一条基础链,例如可以写成:

const creativeChain = storyPrompt.pipe(creativeModel).pipe(outputParser);await creativeChain.invoke('一段 prompt');

对应的执行顺序是:

输入→ PromptTemplate 组织提示词→ ChatModel 根据参数生成内容→ StringOutputParser 解析模型输出→ 返回业务结果

Temperature 属于模型节点的配置,不属于 PromptTemplate,也不是输出解析器的能力。

任务不同,同一个应用选用的模型节点也可以不同:

真实工作流的各个节点并不具有相同的稳定性和多样性要求,因此,为不同节点采用这种设计,比整个应用共用同一个 Temperature 更合理。

八、各类任务测试可选择的起始范围

以下数值不是固定标准,只是便于启动测试的经验范围;不同模型和服务商的实际表现可能存在差异。

任务Temperature 建议试用值主要目标
结构化提取、工具调用0~0.2格式准确且参数稳定
资料摘要、RAG 问答0~0.3减少发挥并忠于上下文
普通对话、技术解释0.2~0.6兼顾自然程度与稳定性
标题与文案方案0.6~0.9提高表达差异
故事、创意发散0.8~1.2拓展候选空间

调高 Temperature 之前,应该先把 Prompt 的目标、上下文和输出要求写清楚。一个模糊的 Prompt 配上高 Temperature,只会放大不确定性,不会自动得到高质量创意。

九、常见的几个误区

1. 模型会因 Temperature 升高而更聪明

错误。模型已学到的知识不会被 Temperature 改变,推理能力也不会因它增强;受到影响的只有生成阶段所用的采样分布。

2. 内容创意一定随 Temperature 升高而增加

错误。更随机只意味着候选范围更宽,也可能产生不相关、低质量或事实错误的内容。创意质量还依赖模型能力、Prompt、上下文和筛选流程。

3. 幻觉会在 Temperature 设置为 0 后消失

错误。训练知识局限、工具结果错误、检索错误、上下文缺失或问题含糊,都可能引发幻觉。模型只是会在低 Temperature 下更加偏向高概率表达。

4. Top-K 得到全部模型支持

错误。采样参数是否开放取决于不同厂商。动手写代码之前,要查阅当前模型的接口文档,不能把一个推理框架所用的参数原样套到另一个 API。

5. 更有效的做法是大幅联调 Top-P 与 Temperature

未必如此。多个变量同时改变会增加结果分析难度,应优先固定其中一个,仅测试另一个参数造成的影响。

总结

从候选 Token 的概率分布里进行选择,是大模型每一步生成的本质。

工作流中的节点职责各异,稳定性与多样性应分别控制;可靠的 AI 应用由此建立,而不是依赖一个能够覆盖所有任务的 Temperature。

喜欢(0)

上一篇

重生之我成为模型 第三篇 · 我只提供可能性,答案由你们翻译

重生之我成为模型 第三篇 · 我只提供可能性,答案由你们翻译

下一篇

代码提速10倍,交付仅快18%:AI编程的效率悖论究竟卡在哪

代码提速10倍,交付仅快18%:AI编程的效率悖论究竟卡在哪
猜你喜欢