让 AI 写一段 300 字的产品文案,它能把「高效」连用五次,读起来像复读机。频率惩罚就是治这个毛病的参数:模型每输出一个词,就压低这个词再次出现的概率,逼它换词、换说法。它与存在惩罚是同一面板上的两个旋钮。
两个旋钮,各管一种重复
频率惩罚按「用过的次数」加压:一个词用得越多,再选它的概率被压得越低,专治高频复读。存在惩罚只看「用过没有」:只要出现过,概率整体压一档,管的是车轱辘话来回说。两者常配合使用,前者修词频,后者断套路。
可带走的判断:数值越大重复越少,但并非越大越好——压过头,模型会改用生僻词来躲惩罚,句子反而变怪。
类比:控场主持人的两条规矩
把模型当成话太密的主持人。频率惩罚像他给自己立的规矩:同一个词这场只能用一次,再说就换词。存在惩罚是更严的场规:提过的话题别再绕回来。规矩一立,谈吐立刻显得词汇丰富、思路跳跃,不再原地打转。
它和温度参数是两套逻辑,别混着调:温度管整句话的随机程度,调高后用词本来就更多样;惩罚管具体某个词的复现次数,是定点打击。句子平淡先动温度,个别词反复出现再动惩罚,顺序反了容易越调越乱。
在豆包、腾讯元宝这类面向大众的产品里,这两个参数大多藏在开发者选项或接口设置中,日常对话用默认值已经比较均衡,多数人平时不用碰。
类比失效处:规矩太严会噎住主持人
惩罚只认识次数,不懂「该重复时就得重复」。代码里的变量名、古诗里的叠词、术语定义中的关键词,本来就需要反复出现,压狠了会输出残缺甚至错误的句子。所以写代码、写术语密集内容时,这两个参数通常要调低或归零。
长文写作要单独说:文章越长,前面的词越容易被「拉黑」,到后半篇模型可能找不到合适的常用词,开始绕弯子。写长文时与其开高惩罚,不如分次生成,每次开一段新上下文,重复问题自然缓解。
一句话判断:创意写作怕重复,可适度加压;结构化输出怕错,宁可放过。
它和面板上其他旋钮的分工
频率惩罚调「用词的新鲜度」,输出上限管「一共说多少字」,到了额度就硬截断;停止序列管「说到哪里主动停」,见到约定字样即收笔。三者都是运行时参数,只影响这一次输出,模型文件本身纹丝不动。
| 参数 | 管什么 | 什么时候动它 |
|---|---|---|
| 频率惩罚 | 单个词再次出现的概率 | 个别词反复出现时 |
| 温度 | 整句话的随机程度 | 句子平淡时先动它 |
| 输出上限 | 一共能说多少字,到额度硬截断 | 控制篇幅与开销 |
| 停止序列 | 见到约定字样即收笔 | 要答案停在固定位置 |
顺带一提,推理模型还有思考预算这类控制思考长度的设置,与惩罚参数互不干扰:想的过程归思考预算管,说的结果归惩罚管。
两个惩罚参数对照速查
- 看对象:频率惩罚盯单个词的次数,存在惩罚盯是否出现过。
- 看效果:前者拉平词频,后者打散句式套路。
- 看场景:文案创作可小幅加压,代码与术语内容建议归零。
- 看底线:输出开始出现怪词断句,说明压过头,先回调。
参数没有万能默认值,按场景微调才是正解。
频率惩罚相关三问三答
- 频率惩罚和存在惩罚要一起调吗?:建议先动一个。两者叠加效果很强,同时大幅上调容易让用词古怪,试出一个再决定第二个。
- 写代码时需要关掉它吗?:多数情况要调低。变量名、函数名、语法关键字必须精确重复,惩罚一高就可能输出改名的残句。
- 默认值压不住复读怎么办?:先确认问题确实出在重复,再小幅上调观察变化;若产品不开放这个参数,换支持自定义参数的调用方式。


