一、温度:创造力的“调节旋钮”

在调用大模型 API 时,temperature(温度)是影响输出结果最核心的参数之一。它本质是一个控制随机性的 缩放因子。我们可以把它想象成模型输出时,每个 token(词或子词)概率分布的“平滑器”或“锐化器”。

温度的作用机制是:在模型预测下一个 token 的概率分布上进行一个数学变换。低温度(如 0.1)会使概率分布更“尖锐”,模型会倾向于选择概率最高的那个 token,输出因此更确定、保守、可预测。高温度(如 1.0 或更高)则会使分布更“平坦”,高概率和低概率 token 之间的差距缩小,模型更可能探索那些原始概率较低的选项,输出因此更多样、随机、富有创造性。

提示:温度值通常设定在 0 到 2 之间。0 意味着完全贪婪解码(永远选最大概率),值大于 1 会显著放大低概率事件的可能性,可能产生不合逻辑或发散的内容。

二、Top-k 与 Top-p:采样策略的“过滤器”

仅仅使用温度,有时控制力还不够精细。为了让生成的文本质量更可控,我们引入了 采样策略,最常用的是 top_k 和 top_p。它们都作用于经过温度缩放后的概率分布,目的是缩小“候选 token”的范围。

top_k 采样很简单粗暴:它直接保留概率最高的 k 个 token,并丢弃其他所有 token,然后在这 k 个 token 中重新归一化概率并进行采样。例如,设置 top_k=50,模型就只在最可能的 50 个词里选择。

top_p(又称核采样,Nucleus Sampling)则更智能一些。它按概率从高到低排序 token,然后从头开始累加概率,直到总概率达到设定的阈值 p(如 0.9)。这个过程中累计概率所覆盖的最小 token 集合,就是本次的候选集。top_p=0.9 意味着,模型会考虑那些累计概率刚好超过 90% 的 token,从而动态地根据当前分布的置信度来决定考虑多少选项。

两者通常不同时使用,选择其一与 temperature 配合即可。

三、参数协同:温度与采样的“交响乐”

理解单个参数后,关键在于明白它们如何协同工作。在 API 请求中,temperature 首先对原始 logits(对数几率)进行缩放,改变整个概率分布的形态。随后,top_k 或 top_p 在这个已经“加热”或“冷却”过的分布上进行筛选,确定最终的抽样池。

一个经典的调优思路是:

  1. 创意写作、头脑风暴:使用较高温度(如 0.7-1.2)配合适中或较高的 0(如 0.8-0.95),以鼓励多样性和新颖想法。
  2. 事实问答、代码生成、格式化输出:使用较低温度(如 0.1-0.3)配合严格的 0(如 0.1-0.5)或较小的 top_k,以保证输出的准确性和一致性。
关键提示:不同厂商的 API 实现可能略有差异。有些模型(如 GPT 系列)默认只使用 temperature 和 top_p,而 top_k 可能需要显式设置。请查阅 MiMo API 文档确认其默认行为。

四、动手实验:代码中的参数调优

理论不如实践。下面这段 Python 代码演示了如何通过调整 temperature 和 top_p 来观察输出差异。

import openai # 假设使用兼容 OpenAI 格式的 API 调用方式

def generate_with_params(prompt, temperature=0.7, top_p=1.0):
    response = openai.Completion.create(
        engine="MiMo",  # 假设的模型引擎名
        prompt=prompt,
        max_tokens=150,
        temperature=temperature,
        top_p=top_p,
        n=1
    )
    return response.choices[0].text.strip()

# 原始提示
prompt = "写一句关于秋天的诗:"

# 实验1:低温,高确定性
print("=== 温度0.2, Top-p 0.1 ===")
print(generate_with_params(prompt, temperature=0.2, top_p=0.1))
# 预期输出:可能是常见、稳重的句子,如“秋叶缓缓飘落,铺满金色小径。”

# 实验2:中温,平衡创造与相关
print("\n=== 温度0.7, Top-p 0.9 ===")
print(generate_with_params(prompt, temperature=0.7, top_p=0.9))
# 预期输出:可能更优美或有意象,如“西风卷起一地碎金,诉说着夏日的告别。”

# 实验3:高温,高随机性
print("\n=== 温度1.2, Top-p 0.95 ===")
print(generate_with_params(prompt, temperature=1.2, top_p=0.95))
# 预期输出:可能非常跳跃或出其不意,如“蝉声把夏天缝进落叶的脉络里。”

你可以运行这段代码,用真实的 MiMo API 替换调用部分,亲身感受参数组合带来的奇妙变化。

五、调优心法与常见误区

心法:调参没有“万能值”,它是一个基于具体任务和评估标准的迭代过程。不要指望一次性调到完美。

  1. 从默认值开始:大多数 API 的默认参数(如 temperature=1.0, top_p=1.0)旨在平衡质量与多样性,是很好的起点。
  2. 单变量调整:一次只调整一个参数(例如先固定 top_p=0.9,只调 temperature),观察输出质量的变化,记录下来。
  3. 建立评估标准:你定义“好输出”的标准是什么?是创造性、准确性、流畅度还是格式正确?根据这个标准去评判参数调整的效果。
  4. 批处理评估:对于同一个提示,用不同参数设置生成多个结果(API 通常有 n 参数),进行横向比较,比单次观察更可靠。

常见误区:

六、总结:将参数调优变为你的超能力

temperature、top_k、top_p 这些参数,本质上是我们在模型“原始才华”和“任务需求”之间进行平衡的精密工具。理解其背后的直觉——temperature 控制“探索欲”,top_p/top_k 控制“选择范围”——你就能从“黑盒使用者”转变为“主动的调校师”。

下次调用 MiMo API 时,不妨带着这份理解去尝试。记住,最好的参数永远是那个在你的特定场景下,稳定产出符合你预期结果的组合。多实验,多记录,你对 AI 生成行为的掌控力会随之飞速提升。