最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Temperature 越高就越有创造力吗?从概率分布、Top-K 到 LangChain 工作流
时间:2026-07-29 12:26:49 编辑:袖梨 来源:一聚教程网
连续几次向大模型提出同一个问题,得到的答案通常不会完全一致。

变化有时只体现在措辞上,有时则会影响结论乃至代码实现。许多人把它简单归因于“AI 有随机性”,随后便开始反复调整 temperature:写代码时设为 0,写文案时调到 1。
但 temperature 它实际改变的究竟是什么?是否会直接提升模型的创造力?Top-K 和 Top-P 控制的又是什么?
大模型会依据当前上下文对下一个 Token 作出预测,这是理解这些参数所需回溯的最基础工作方式。
一、大模型并非直接构思出完整答案
上下文里若已有“你好”,经过 Transformer 计算,模型拿到的将是一组候选 Token 的分数,并非下一个 Token 的唯一答案。
为便于理解,可以将这些分数换算为如下概率分布:
| 候选 Token | 概率 |
|---|---|
| 吗 | 0.60 |
| 啊 | 0.15 |
| 呀 | 0.10 |
| 美 | 0.05 |
| 坏 | 0.01 |
| 其他 Token | 0.09 |
尽管“吗”的概率最高,模型也并非每次都必须选择它。
生成阶段一般包含两类策略:
- 贪心选择:当前概率排在首位的 Token 是每次的选择结果;
- 采样选择:一个 Token 会从概率分布中被随机抽出。
始终采用贪心选择时,输出往往更稳定,却也容易显得机械和重复;允许从候选 Token 中采样后,表达会更丰富,但出错及偏题风险也随之提高。
temperature、Top-K 和 Top-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:先限制候选数量
Temperature 改变候选的概率差距,Top-K 则限定最多保留的候选 Token 数量。
如果设置:
Top-K = 3
模型会先按概率由高到低排列,并且仅保留前三个候选:
| 候选 Token | 原始概率 |
|---|---|
| 吗 | 0.60 |
| 啊 | 0.15 |
| 呀 | 0.10 |
系统会排除“美”“坏”及其他候选,再对余下三个 Token 重新归一化,随后进行采样。
Top-K 较小时:
- 候选范围更为集中;
- 输出更容易紧扣主题;
- 但表达可能较为单一。
Top-K 较大时:
- 候选范围更加宽泛;
- 表达可能更为丰富;
- 进入采样范围的机会同样会更多地落到低质量 Token 上。
需要留意,Top-K 这一参数只在 Hugging Face Transformers 和部分开源模型推理框架中较常见,并非所有大模型 API 都直接开放;对于 OpenAI 兼容接口,更常见的是 temperature 与 top_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 的累计概率便能达到 Top-P;概率分散时,保留的 Token 则更多,因此适应性更强。
五、三个参数如何共同影响生成
一次 Token 采样的概念过程如下:
上下文→ 模型计算下一个 Token 的 Logits→ Temperature 调整概率差距→ Top-K 或 Top-P 缩小候选范围→ 重新归一化概率→ 按概率抽取一个 Token→ 把新 Token 加入上下文→ 继续预测下一个 Token
模型只有生成结束标记或达到最大输出长度时才会停止,在此之前,该过程始终循环。
更多参数并不等同于更精确的控制。当前 DeepSeek Chat Completion 接口就是一例,按照官方文档,通常建议修改 temperature 或 top_p 二者中的一个,而非同时调整。
原因在于,两个参数都会改变最终采样空间;若同时修改,不仅难以确认输出变化源自哪个参数,也不利于后续测试与复现。
合理的调参方式应当是:
- 保持 Prompt、模型和测试数据不变;
- 一次只调整一个参数;
- 对同一组问题重复执行;
- 正确率、格式稳定性、重复性与内容多样性都要纳入比较;
- 依据真实业务结果确定参数,而不是照搬所谓的“万能值”。
六、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. 更有效的做法是大幅联调 Temperature 与 Top-P
不一定。多个变量一起变化,会增加结果分析难度。应优先固定其中一个,仅检验另一个参数产生的影响。
总结
从候选 Token 的概率分布里完成选择,构成了大模型每一步生成的本质。
- 候选间的概率差距由 Temperature 调整;
- 概率排名最高的 K 个候选由 Top-K 定量保留;
- 候选集合由 Top-P 随累计概率确定;
- 工具调用、RAG 和结构化任务更匹配低 Temperature;
- 高 Temperature 能提高多样性,却不代表模型能力有所增强;
- 固定测试集是调参的基础,变量每次只能改动一个。
AI 应用的可靠性来自按工作流各节点职责分别控制稳定性与多样性,而非寻找一个能够覆盖所有任务的 Temperature。
相关文章
- 维普论文查重官方导航的正版入口在哪里 07-29
- 红薯阅读手机版怎样设置屏幕常亮 07-29
- 酷酷跑app怎样绑定手机 07-29
- 文档编辑软件精选 实用高效的文档编辑App排行 07-29
- 免费视频提取软件精选 2026高人气实用视频提取工具合集 07-29
- 王者荣耀妲己线条小狗肤价格详情 07-29