首页 / 教程 / 进阶技巧

Temperature 和 top_p 怎么调?一次讲清 AI 的随机性参数

「同一个问题问两遍,AI 给的答案居然不一样」——这不是模型不稳定,而是你没调过一个叫 temperature 的参数。它和搭档 top_p 一起,控制着模型每吐一个字时的随机程度。这篇把两个旋钮讲清楚:各自管什么、什么场景填多少,以及为什么官方建议只调一个

两个旋钮分别在调什么?

temperature(温度)决定「敢不敢选冷门答案」。模型每生成一个字,本质上都是在一堆候选里抽签,每个候选带一个概率分数。温度调到 0,它每次都只挑概率最高的那个,输出最稳;温度越高,低概率的候选也有机会被抽中,于是答案更多样,也更容易跑偏。取值范围一般是 0 ~ 2,默认 1

top_p(核采样)决定「从哪些候选里抽」。它先把候选按概率从高到低排队,只保留累计概率刚好达到 top_p 的那一小撮,其余的直接踢出局,再在圈内抽签。top_p 设为 0.9,意味着只考虑最核心的那九成概率;设为 1 就等于全部都考虑。取值范围 0 ~ 1,默认 1

划重点:只调一个。temperature 和 top_p 都在改变「抽签的范围」,同时改两个,效果会互相抵消,出了好结果也很难复现。日常习惯是只动 temperature,top_p 保持默认。

具体怎么调?按场景抄这张表

下面的区间是实践里比较通用的起点,不是标准答案。先用中间值跑一遍,效果不满意再往两端微调。

至于 top_p,日常保持在 0.9 ~ 1.0 就够用;确实需要更保守时降到 0.8 左右。别一路降到 0.5 以下——那会把本来合理的词也一起筛掉,句子容易变得干瘪重复。

一个可以直接照抄的请求示例

以写代码场景为例,只需要在请求体里多带两个字段(接口地址 https://api.aigcbreeze.cn/v1,OpenAI 兼容格式):

{"model": "kimi-k3", "temperature": 0.2, "top_p": 1, "messages": [{"role": "user", "content": "把这个函数改写成异步写法"}]}

两个参数都不传时,服务端会用模型自己的默认值(多数模型 temperature 和 top_p 都默认 1)。写脚本批量处理时,建议把 temperature 显式写死在请求里,避免上游默认值调整导致输出风格漂移。

调试小技巧:固定同一段提示词,只改一个参数值连跑三次,比来回换提示词更容易判断到底是哪个变量在起作用。

常见问题

temperature 设成 0,为什么结果还是不完全一样?

三个常见原因:一是服务端为了吞吐会把多个请求并行打包计算,浮点运算的先后顺序不固定;二是提示词里只要有一处没被完全限定(比如没规定输出格式),模型本来就有多个合理答案;三是一些客户端会在请求里覆盖你的设置,比如为了「更有创意」自己加了温度。

调这两个参数会多花钱吗?

不会。计费只看输入和输出的 token 数量,参数怎么填都是免费的,具体单价可以在 模型列表页里逐个查。

推理型模型需要调吗?

大部分不用。部分推理模型官方文档明确说明 temperature、top_p 这类采样参数不生效——传了也不报错,只是不起作用,因为它们的输出由思考过程决定。想让这类模型的回答稳定,正确做法是在提示词里把约束和输出格式写死。

同一个提示词,跑两遍对比一下

把 temperature 分别设成 0.2 和 1.1,同一个问题各问一次,差别一眼就能看出来。

留言交流

有问题、有补充,写两句吧~留言会实时显示在下方(无需注册)。

留言加载中…
← 上一篇:提示词工程入门 下一篇:流式输出是什么 →