本篇目标:学会控制 AI 的“脑洞”。无论是想要它严谨地写代码,还是天马行空地写文案,你只需要调这一个参数。
一、为什么它每次说的都不一样?
你有没有发现,同样的 Prompt(“给我讲个笑话”),你发给 AI 两次,它会讲两个不同的笑话。
但如果你问它“1+1等于几”,它永远回“2”。
这是因为 AI 生成内容时,引入了随机性(Randomness)。而控制这个随机性的开关,就叫 Temperature(温度)。
1. 它是怎么“猜”下一个词的?
当你说“今天天气很”,AI 会预测下一个词的概率:
- “好”:50%
- “差”:30%
- “热”:10%
- “棒”:5%
- “紫色”:0.001%(离谱但存在)
2. 温度(Temperature)的作用
温度参数(通常在 0.0 到 1.0 之间,有的模型到 2.0)决定了 AI 敢不敢选概率低的词。
- 低温(Temperature ≈ 0):保守派。
- AI 只选概率最高的词(50% 的“好”)。
- 结果:非常稳定、严谨、重复。
- 适合:写代码、数学题、逻辑推理、JSON 格式化。
- 高温(Temperature ≈ 0.8 ~ 1.0):狂野派。
- AI 有机会选概率较低的词(10% 的“热”甚至 5% 的“棒”)。
- 结果:多样化、有创意、但也容易胡说八道。
- 适合:写小说、创意文案、头脑风暴。
二、另一个开关:Top-p(核采样)
除了温度,还有一个参数叫 Top-p(也叫 Nucleus Sampling)。
它的作用和温度类似,但机制不同。建议新手只调一个,不要两个一起调。
- Top-p = 0.1:只在概率总和为前 10% 的词里挑。
- (效果接近低温,稳!)
- Top-p = 0.9:在概率总和为前 90% 的词里挑。
- (效果接近高温,浪!)
简单记忆:
- 想稳?Temperature 设 0。
- 想浪?Temperature 设 0.8。
- Top-p 一般默认 1.0 不动它,或者设 0.9。
三、写代码该用什么温度?
这是新手最容易踩的坑。写代码千万别用高温!
1. 为什么代码要“冷”?
代码是逻辑严密的语言。
- def 后面大概率跟函数名。
- if 后面大概率跟条件。
如果 AI 突然“有创意”了一下,选了一个概率极低的词,你的代码就跑不通了(Syntax Error)。
2. 推荐设置
- 写代码(Coding):Temperature = 0 或 0.1。
- 我们要的是准确、可复现。
- 代码解释(Explanation):Temperature = 0.3。
- 稍微自然一点,不要像机器人念经。
- 写测试数据(Test Data):Temperature = 0.7。
- 这时候需要一点随机性,生成各种奇奇怪怪的名字和地址。
四、如何调整这些参数?
1. 在网页版(Chat)里
- ChatGPT / Claude:通常不让你调。它们默认设置在 0.6 ~ 0.7 左右(为了兼顾聊天和干活)。所以有时候写代码会不稳定。
- DeepSeek 网页版:在输入框下面有个“深度思考(R1)”开关,或者在设置里能找到“温度”。
2. 在 IDE / API 里
- Cursor / VS Code 插件:在设置(Settings)里搜 Temperature,通常默认是 0(因为它知道你是来写代码的)。
- API 调用:这是最灵活的。response = client.chat.completions.create(
model="gpt-4o",
messages=[...],
temperature=0.0 # 👈 在这里改
)
本篇产出:场景化参数推荐表
以后调用 API 或设置 Agent 时,查这张表:
| 代码生成/补全 | 0.0 – 0.1 | 0.1 | 逻辑必须严密,拒绝随机错误。 |
| 数学解题 | 0.0 | 0.1 | 1+1 必须等于 2。 |
| 数据提取 (JSON) | 0.0 | 0.1 | 格式错一点就解析失败。 |
| 代码解释/文档 | 0.3 – 0.5 | 0.5 | 需要通顺的人话,但不要太发散。 |
| 文案润色/翻译 | 0.7 | 0.8 | 需要词汇丰富,地道的表达。 |
| 头脑风暴/创意 | 0.9 – 1.0 | 0.9 | 给我惊喜,哪怕是惊吓。 |
五、实战演示:温度对代码的影响
任务:写一个 Python 函数,计算斐波那契数列。
-
Temperature = 0.0(稳如老狗)
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n–1) + fibonacci(n–2)(非常标准,教科书式的写法。)
-
Temperature = 1.2(开始发癫)
def fib_seq_generator_cool(num):
# 嘿!让我们来算算兔子!
a, b = 0, 1
result = []
while a < num:
result.append(a)
a, b = b, a + b # 哇哦,魔法发生的地方
return result(变量名变奇怪了,加了奇怪的注释,甚至逻辑可能变成了“生成小于 num 的序列”而不是“第 n 项”。)
结论:写代码,请保持冷静(低温)。
下一步:搞懂了“怎么让它说”,下一章我们要搞懂“它到底在想什么”。LLM 是怎么被训练出来的?为什么它不是在“查数据库”而是在“推理”?这将彻底颠覆你对 AI 的认知。


