一、理解生成“随机性”的关键阀门:温度(Temperature)
当我们调用像 MiMo 这样的大模型 API 生成文本时,模型并非总是“一个字一个字”地选择概率最高的那个词。在每一步,它实际上会计算词表中所有可能下一个词的概率分布。温度(Temperature) 就是控制从这个概率分布中进行采样的核心参数。你可以把它想象成一个控制“创意”与“谨慎”的旋钮。
一个低温度(如 0.1 - 0.4) 会让概率分布变得更加“尖锐”,高概率的词概率被进一步放大,模型会更倾向于选择当前上下文下最有可能、最“安全”的下一个词。这会让生成的内容更确定、聚焦、连贯,适合事实性问答、代码生成等需要严谨性的场景。反之,一个高温度(如 0.8 - 1.2) 会让概率分布更“平坦”,赋予低概率词更多的机会,从而增加输出的多样性、创造性和意外性,适合头脑风暴、诗歌创作或角色对话。
import openai # 假设使用兼容OpenAI的客户端访问MiMo
# 设置不同的温度进行对比
prompt = "写一句关于星空的诗句,开头是‘夜空仿佛’"
for temp in [0.2, 0.8, 1.2]:
response = openai.chat.completions.create(
model="mimo-chat", # 假设的模型标识
messages=[{"role": "user", "content": prompt}],
temperature=temp, # 这里是关键参数
max_tokens=50
)
print(f"温度 {temp}: {response.choices[0].message.content}")
print("-" * 30)
提示:temperature的默认值通常为1.0。这是一个平衡点,但并非万能。没有“最优”温度,只有“最适合当前任务”的温度。你需要根据应用场景反复调试。
二、精确控制候选范围:Top-p 与 Top-k 采样
除了温度,我们还有另外两个利器来精细地控制采样过程:top_p(核采样)和 top_k。