调用模型的两个参数 temperature 和 max_new_tokens 指什么
在大语言模型的调用中,temperature和max_new_tokens是两个常用的关键参数,作用分别如下:
-
temperature(温度)
控制模型生成文本的随机性和创造性。- 取值范围通常为 0 到 1(部分模型支持更大范围)。
- 当
temperature=0时,模型会选择概率最高的词,生成结果更确定、保守,重复性可能较高; - 当
temperature接近1时,模型会增加对低概率词的选择,生成结果更灵活、多样,甚至可能出现意外的创意,但也可能更不稳定或偏离主题。
-
max_new_tokens(最大新生成 tokens 数)
限制模型生成的文本长度(以“token”为单位,1个token约等于1-2个汉字或1个英文单词)。- 例如,若设置为
max_new_tokens=500,模型生成的内容(不包含输入的提示词)最多包含500个token; - 实际生成长度可能小于该值(如模型提前结束句子或遇到停止符),但不会超过这个上限,用于控制输出的篇幅。
- 例如,若设置为
这两个参数结合使用,可以平衡生成内容的创造性和长度,适应不同场景需求(如精准回答用低temperature+小max_new_tokens,创意写作用高temperature+大max_new_tokens)。
适用场景:
当模型生成的SQL出现“使用不存在的列”这类准确性问题时,核心是要降低模型的“创造性”,强制它更严格地遵循事实逻辑(如已知的表结构),此时建议将temperature设置为较低的值,通常在0到0.3之间,具体可根据效果微调:
temperature=0:最严格的模式,模型会优先选择概率最高的结果,最大程度减少“虚构”列名的可能性,生成的SQL更保守但准确性更高(前提是输入的表结构信息清晰)。temperature=0.1~0.3:保留极少量随机性,避免完全机械重复,同时仍以准确性为优先,适合需要一定灵活性但必须严格符合表结构的场景。
此外,仅调整温度可能不够,还需配合以下操作提升效果:
- 在提示词中明确提供完整的表结构信息(列名、类型等),让模型有明确的“参考依据”;
- 要求模型生成后自查是否存在不存在的列,并在输出前验证;
- 若多次出错,可尝试进一步降低温度(如0.05),或使用
top_p参数(设置为0.1~0.5)辅助控制输出的确定性(top_p与temperature类似,都是控制随机性的参数,低top_p会限制模型只从高概率词中选择)。
综上,优先以低温度(0~0.3)+ 清晰的表结构提示为主,可显著减少“虚构列”的问题。
