📖 定义
Temperature是控制AI模型输出随机性的超参数。取值范围通常为0到2,值越低输出越确定和一致,值越高输出越多样和创造性。
0
完全确定
完全确定
0.3
代码/事实
代码/事实
0.7
默认值
默认值
1.0
创意写作
创意写作
2.0
高度随机
高度随机
⚙️ 原理
Temperature影响模型在生成下一个Token时的概率分布:
- 低温度 (0-0.3):概率分布更尖锐,总是选择最可能的Token
- 中等温度 (0.5-1.0):平衡确定性与多样性
- 高温度 (1.0-2.0):概率分布更平滑,增加低概率Token的选择机会
数学上,Temperature用于缩放logits:scaled_logits = logits / temperature
💡 应用场景
| 场景 | 推荐Temperature | 原因 |
|---|---|---|
| 代码生成 | 0.0 - 0.2 | 需要确定性输出 |
| 问答/事实查询 | 0.0 - 0.3 | 保证答案准确 |
| 日常对话 | 0.5 - 0.7 | 平衡自然与稳定 |
| 创意写作 | 0.8 - 1.2 | 增加多样性 |
| 头脑风暴 | 1.0 - 1.5 | 探索更多可能性 |
💻 代码示例
# OpenAI API中设置Temperature
from openai import OpenAI
client = OpenAI()
# 低温度 - 用于代码生成
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "写一个Python快速排序"}],
temperature=0.0 # 完全确定性输出
)
# 高温度 - 用于创意写作
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "写一首关于AI的诗"}],
temperature=1.2 # 更有创意的输出
)
# 理解Temperature对概率分布的影响
import numpy as np
def softmax_with_temperature(logits, temperature):
scaled = logits / temperature
exp_scaled = np.exp(scaled - np.max(scaled))
return exp_scaled / exp_scaled.sum()
logits = np.array([2.0, 1.0, 0.1]) # 原始logits
print("Temperature=0.5:", softmax_with_temperature(logits, 0.5))
# 输出: [0.86, 0.13, 0.01] - 更集中
print("Temperature=1.0:", softmax_with_temperature(logits, 1.0))
# 输出: [0.66, 0.24, 0.10] - 标准
print("Temperature=2.0:", softmax_with_temperature(logits, 2.0))
# 输出: [0.46, 0.31, 0.23] - 更均匀