不是故障,是设计

很多人第一次发现同一句提示词跑出两个不同结果,第一反应是「这工具不稳定」。但生成式模型的输出本来就不是查表式的一一对应,它是按概率逐词生成的:每一步从若干候选里挑一个,挑的过程中带随机性。所以「同一输入、同一输出」这个程序员习惯的确定性,在这里并不成立。理解这一点,比抱怨不稳定有用得多——你要学的不是怎么让它每次一样,而是怎么控制它稳定到什么程度。

随机性从哪来:采样机制

模型每一步会给候选词打分,然后按策略选一个。若总是选分数最高的,输出会非常固定但也容易呆板、重复;若按概率随机抽,输出更有变化,代价是可能抽到不太合适的词。多数工具把这个平衡做成一个可调的参数,默认通常偏向「有点变化」。所以你看到的差异,本质是采样时的随机抽取被放进了流程。这不是缺陷,是让输出不千篇一律的必要代价。

温度参数在改什么

常被提到的温度参数,作用就是调这个随机程度。温度调低,模型更倾向选高分候选,输出稳定、保守、重复度高;温度调高,更多低分候选有机会被选中,输出更有创意也更可能跑偏。做事实性整理、要复现的文档,温度调低;做创意发散、要多个候选方案,温度调高。很多人从头到尾不调这个参数,却在抱怨输出忽好忽坏,其实旋钮一直在那里。

上下文与历史也在影响

除了采样,输出还被上下文影响:同一轮里前面的对话、你给的示例、系统设定,都会改变后面的生成。很多人以为「我只改了最后一句」,实际上前面的内容已经把模型带到了不同的方向。另外不少产品有多轮记忆或历史偏好,隔天再问同样的话,结果也可能不同。想复现结果,要把上下文一起复制,只复制最后那句提示词是不够的。

模型版本与更新

还有一层容易被忽略:模型本身在更新。服务商会在后台换版本、调策略、更新知识范围,你不改任何设置,输出也会随时间变化。这类变化通常不会显著通知,表现就是「上个月还好好的,这个月味道变了」。遇到明显风格或质量漂移,先确认是不是模型换了,再改提示词——否则你会把精力花在优化一句本身没问题的提示词上。

什么时候要稳定,什么时候要多样

判断标准看任务性质:要交付给客户、要多次复现、涉及事实与数据,追求稳定,把温度调低、固定示例与格式;要头脑风暴、要生成多个备选、要打破思维定式,追求多样,把温度调高、一次要多个版本再挑。最忌讳的是不区分——用发散的设置去做要求准确的事,或者用最保守的设置抱怨没创意。先定任务,再定参数,顺序别反。

怎么让结果更可复现

几个有效做法:把温度调到低区间并记录下来;给出明确的格式与长度要求,减少自由发挥空间;提供一到两个示例,让模型有参照;把关键约束写在提示词靠前的位置;同一任务分步骤跑,而不是一句话要它做完所有事。做完这些仍会有细微差异,但差异会小到可接受。完全复现通常做不到,把目标设成「足够一致」更现实。

一个案例

某人用同一句提示词生成产品描述,昨天出的版本客户满意,今天再跑完全不一样,他以为是工具抽风。后来他把温度从默认调到低区间、补了两个示例、并把输出格式写成固定模板,重跑三次结果基本一致,只在用词上有细微差别。他没换工具,也没改提示词的核心内容,只是把随机性管住了。可控性不是模型给的,是设置给的。

常见坑

一是把随机性当故障,反复重跑碰运气,浪费时间;二是不管什么任务都用默认设置,该稳定时发散、该发散时呆板;三是只复制提示词不复制上下文,以为能复现其实条件早变了;四是模型更新导致输出漂移,却一直在改提示词找原因。先分清是哪一类变化,再动手,比盲目重跑有效得多。

边界:不是所有差异都能消除

即使参数固定、示例齐全、上下文一致,长文本生成仍会有措辞差异,这是生成机制决定的。追求逐字一致既不现实,也没必要——多数场景要的是「意思和格式一致」。真正需要严格一致的内容,应当靠模板、脚本或人工定稿来保证,而不是指望模型每次吐出同样的字。把工具的随机性用在合适的地方,比消灭它更实际。

局限声明

不同 AI 工具的参数名称、默认值与随机性控制方式各异,本文基于通用生成机制说明。具体可调项与效果请以你所用工具的官方文档与实测为准,涉及需要严格复现的工作请自行验证后再采用,本文不替代产品说明。