Stop Sequences(停止序列)

在日常使用大模型时,小伙伴们肯定会发现一个现象:大模型真的太能唠了!

很多时候,我们只希望大模型回答 “是” 或 “否”,它非要长篇大论给你解释一番。或者让大模型写一小段文案,它非要在末尾加上一段客套话:“希望这篇文案能帮到您哦!”

对于普通用户来说,有时我们需要多花时间手动删大模型的废话。而对于开发工程师来说,多余的字符可能会导致程序出错(比如破坏 JSON 格式)。

为了解决这个问题,研究者们为大模型提供了一个参数——Stop Sequences(停止序列)。

大模型的 Stop Sequences 是什么?

Stop Sequences,中文翻译为 “停止序列”、“终止标记”。我们可以把 Stop Sequences 理解成大模型的 “刹车片”。

简单来说,我们可以给大模型指定一组特定的字符串(也叫 “停止词” 或 “终止标记”)。在代码里通常是一个字符串数组,比如:

["\n", "User:", "###"]

大模型在做文字接龙时,只要碰到了我们设定的标记集合中的任何一个,不管它后面还有多少话没说完,都会被系统直接暂停。

大模型 Stop Sequences 原理图解:文字接龙命中停止标记,然后强制暂停输出

正常情况下,大模型只有在遇到自身的底层结束标记(如 <|endoftext|>)时才会自行停下。而 Stop Sequences 这个参数允许我们人为设置拦截,让大模型在最该闭嘴的时候强制停下。

这里还有一个很重要、却经常被忽略的细节:被命中的停止词本身,通常不会出现在最终的输出结果里。也就是说,大模型是在 “即将说出” 这个词的前一刻就被刹停的,这个词本身会被自动丢弃。记住这一点,下面几个例子就能瞬间看懂了。

Stop Sequences 的应用场景

无论小伙伴们是在智能体平台(如 Coze)搭建专属的 AI 助手,还是作为开发工程师去编写前后端业务逻辑,Stop Sequences 参数都能帮我们解决大模型让人头疼的 “废话” 问题。

1. 屏蔽烦人的 “客套话”(适合所有人)

  • 业务场景:开发一个 “小红书文案生成器”,希望 AI 直接输出纯正的文案正文。
  • 痛点:大模型总喜欢在结尾自作多情地加上一句客套话(如:“希望这篇文案能帮到你!”)。这种客套话每次都需要手动删掉,让人非常心烦。
  • 调校策略:这类客套话往往有比较固定的开头,比如 “希望……”、“以上就是……”。此时,我们可以在后台把停止序列设置为:
["希望", "以上"]
  • 分析:一旦大模型准备开始啰嗦这些字眼,就会立刻触发拦截,从而让我们拿到纯净无暇的干货文案。

不过这里要提醒一句:停止词的拦截是 “宁可错杀、不可放过” 。如果你的正文里本身就要用到 “希望” 这个词(比如 “希望大家都能用上”),那它同样会被当成停止信号,导致正文被提前掐断。所以挑选停止词时,要尽量选那些只会出现在 “废话” 里、正文几乎不会用到的词。

停止序列实战场景一:通过设置希望和以上等停止词,来屏蔽大模型结尾的客套话废话

2. 屏蔽代码后的多余解释(开发者必备)

  • 业务场景:对于开发者来说,通常会要求大模型把生成的代码或 JSON 数据包裹在 Markdown 的代码块中,并在后端提取后进行解析。
  • 痛点:大模型自带“话痨属性”,在输出完最后的 ```` 闭合代码块之后,经常喜欢多嘴解释一句:“以上就是为您生成的代码,需要注意……”。这对于自动化脚本来说纯属废话。
  • 调校策略:我们可以直接把停止序列设置为:
["```\n"]
  • 分析:大模型刚刚闭合代码块准备换行啰嗦时,程序就会完美定格。这不仅节省了 Token 费用,后端在使用正则表达式提取数据时也会更加干净利落。

停止序列实战场景二:通过闭合代码块拦截废话,方便后端精确提取 JSON 或代码

3. 精确控制列表生成的数量(通用)

  • 业务场景:让 AI 脑暴 3 个新的英文宣传标语,多一个都不要。
  • 痛点:如果仅仅在 Prompt 里写 “请给我 3 个”,大模型偶尔还是会因为玩嗨了而吐出第 4 个。
  • 调校策略:我们可以另辟蹊径,把停止序列设置为
["4."]
  • 分析:当大模型写完前 3 个标语,刚准备吐出第 4 个列表序号 “4.” 的一瞬间,就会触发强制拦截。

停止序列实战场景三:设置下一个数字序号拦截,精确控制大模型生成的列表数量

实际上,Stop Sequences 参数并不是在限制大模型的思考能力,而是在限制它的 “嘴巴边界”。学会灵活配置这个参数,我们就能让大模型在需要发散时滔滔不绝,在需要严谨时字字珠玑。

最后再补充 3 个使用时的小细节,能让大家少走一点弯路:

  • 停止词的匹配通常是 “区分大小写” 而且 “完全一致” 的,比如你设的是 “User:”,那么 “user:”(小写)是拦不住的。
  • 大多数大模型 API 对停止词的数量有上限(常见是最多 4 个),不能无限添加。
  • Stop Sequences 参数在不同平台叫法不同,写代码调用 API 时它通常叫 stop 或 stop_sequences,我们只需要查一下对应的官方文档即可。

什么是 JSON 格式?

前面提到了一个在 AI 应用开发中非常重要的词——JSON。没有技术基础的小伙伴可能不太熟悉,下面我们用大白话来解释一下。

JSON 是一种标准化的数据格式,既方便人类阅读,也方便计算机处理。你可以把它理解成一张格式固定的 “信息表”。

举个例子,我们让大模型生成一份用户信息,它可能会回答:

“这个人的名字叫张三,今年 20 岁,是一名设计师。”

这种自然语言对人类来说很好理解,但对计算机程序来说,处理起来却很麻烦。因为程序很难保证每次都能准确找到姓名、年龄和职业分别写在哪里。

因此,为了让程序能够稳定地读取这些信息,开发工程师通常会要求大模型按照 JSON 格式输出。例如:

{
    "姓名": "张三",
    "年龄": 20,
    "职业": "设计师"
}

在这段 JSON 中,左边是字段名称,右边是对应的数据。程序不需要分析一整段自然语言,就能直接提取姓名、年龄和职业。

在 AI 导购、智能体等真实应用中,JSON 经常被用来传递结构化数据。不过,JSON 对格式的要求比较严格。如果大模型在 JSON 前后添加解释、客套话或其他多余内容,程序在解析时就可能失败,进而引发报错。

因此,开发工程师需要尽量限制大模型输出无关内容。Stop Sequences 就是一种常见的控制手段:当模型生成指定内容时,系统会立即停止输出,从而减少 JSON 后面出现多余文字的情况。不过,它只能控制模型在什么位置停止,不能保证生成的 JSON 一定完全正确。

总结一下大模型的几个重要参数

最后,我们来总结一下这一章学过的几个大模型参数,主要有以下几个:

  • Temperature(温度):大模型的 “性格调节钮”,控制输出的理智与疯狂(感性程度)。
  • Top-K 与 Top-P:大模型的 “理智底线”,分别按排名和累计概率进行选择候选词,消除大模型胡言乱语的问题。
  • Frequency Penalty(频率惩罚):按出现 “次数” 进行扣分,用于解决复读机问题。
  • Presence Penalty(存在惩罚):按出现 “有无” 进行扣分,用于引导大模型换话题或换思路。
  • Stop Sequences(停止序列):给大模型安装 “人工刹车片”,强制其在遇到特定字符时立刻闭嘴,保证格式和内容的绝对稳定。

大模型推理参数全总结:Temperature、Top-P、频率与存在惩罚以及 Stop Sequences 的作用对比

常见问题

1. 大模型公司开源出来的 “上百亿参数”,和我们这一章讲的参数,是同一个东西吗?

这其实是两码事,小伙伴们千万别搞混了:

  • 模型的权重参数(Weights):指的是大模型在出厂前,通过阅读海量书籍训练出来的大脑 “神经元连接数量”(比如几十亿、上千亿个参数)。开源模型之所以叫开源,就是因为它们大方地把这几百亿个的底层机密数据全部公开了。
  • 推理控制参数(Inference Parameters):这就是咱们这一章学习的 TemperatureTop-P、Stop Sequences 等参数。它们是大模型外面的 “控制面板”。不管你用的是开源模型还是闭源模型,这些参数都是由你(使用者或开发者)来随时调整的。

2. stop_sequences(停止序列),和直接在提示词末尾加上 “请简短回答”、“最多写 3 条” 等,它们之间有什么区别?

一句话总结:提示词“软约束”,停止序列是 “硬约束”

在提示词里写 “请简短回答”、“最多 3 条”,更像是 “好言相劝”,大模型大多数时候会照做,但偶尔也会 “不听话” 多说几句。

而停止序列是在程序层面 “物理截断”,只要命中就立刻停,不给大模型任何 “发挥” 的余地。所以最稳妥的做法是两者搭配使用:先用提示词告诉它 “应该怎么做”,再用停止序列兜底 “绝对不能越过哪条线”。

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号