词元字典CIYUAN ZIDIAN

停止序列 Stop Sequence 是什么意思?作用与用法

更新于 2026-10-23 · ciyuanzidian.com

简答:停止序列 Stop Sequence 就是给模型设置一条“刹车线”:生成内容中出现指定字符串后,模型立即停止继续输出。它不同于最大输出长度,适合控制句子、列表、JSON 或代码片段的结束位置。

定义:停止序列是一个或多个用于终止模型继续生成的字符串,模型输出中首次出现其中任意一个字符串时,生成过程就会停止。

先看结论:停止序列到底控制什么

本文帮你完成的具体一步,是看懂 API 里的 stop、stop_sequences 或 stopSequences,并判断它为什么会让回答提前结束。

可以把停止序列理解成给模型设置的“刹车线”。模型逐步生成文本时,只要生成结果里出现了指定字符串,就停止继续生成。它不是让模型真正“理解任务已经完成”,而是解码阶段执行的机械终止条件。

停止序列与其他停止原因的快速对照
项目触发方式适合解决的问题
停止序列输出中出现指定字符串控制一句话、列表、JSON 或代码片段的边界
Max Tokens生成数量达到上限防止输出无限变长
模型自然结束模型判断回答已经完成普通问答的自然收尾
上下文长度限制输入和输出合计超过模型可处理范围限制一次请求能容纳的总内容

官方资料对这些机制的描述并不完全相同,但共同点是:停止序列是“遇到指定文本就停”,最大输出长度是“达到数量上限就停”。OpenAI 官方说明指出,返回内容通常不包含触发停止的序列;IBM 文档则把停止序列、最小 Token 数和最大 Token 数列为不同的长度控制方式。

它是怎么触发的:单个、多个和不同参数名

单个停止序列

假设你希望模型只生成一条回答,可以把某个不容易在正文中自然出现的标记设为停止序列。模型生成到该标记时,返回结果会停在标记之前,标记本身通常不会出现在最终文本里。

{
  "stop": ["###"]
}

上面只是参数结构示意,实际字段名、接口格式和是否支持该参数,要以所用平台的官方 API 文档为准。

多个停止序列

多个停止序列通常是“命中任意一个就停止”,不是必须全部出现。例如可以同时设置列表边界和对话角色边界:

{
  "stop": ["\n用户:", "\n助手:"]
}

不同平台的字段名可能不同:有的平台使用 stop,有的平台使用 stop_sequences,也有的平台使用 stopSequences。例如,Google Gemini API 文档使用 stopSequences,并说明首次出现停止序列时停止生成且不把它放入回答;Anthropic API 文档使用 stop_sequences,并通过停止原因区分自然结束、达到最大 Token 数和命中自定义停止序列。

参数名不同,不代表作用不同

stop、stop_sequences 和 stopSequences 主要是不同平台的命名方式,不能直接跨平台复制。尤其要确认以下三点:字段是否接受字符串数组、支持多少个停止序列、停止序列是否计入返回文本。

四个常见场景:句子、列表、JSON 和代码

1. 只生成一句话

可以用句号作为停止条件,但这类设置风险较高,因为句号很容易自然出现在文本中,可能导致模型在缩写、小数或第一句话后就停止。IBM 文档将句号作为“一句话输出”的示例,但这更适合受控测试,不适合直接用于所有中文长文本场景。

2. 生成列表

如果提示词要求模型输出多项内容,可以让每项使用固定分隔标记,并把下一段角色标记或结束标记设为停止序列。这样做的重点不是让模型更聪明,而是让下游程序知道从哪里切分。

3. 生成 JSON

JSON 场景中,停止序列可以帮助截断后续解释文字,例如让模型在完整 JSON 后遇到约定标记就停止。但它不能代替 JSON 校验:停止序列设置不当,可能把 JSON 截断在右花括号之前,反而造成解析失败。

4. 代码补全

代码生成可以使用不容易出现在代码正文中的结束标记,例如专门约定的代码结束字符串。IBM 的官方示例也展示了用特定结束标记控制代码输出边界的做法。实际接入时,仍要检查返回文本是否完整、括号是否配对,以及停止原因是什么。

如果你还不清楚 Token 数量和硬性输出上限的区别,可以先阅读站内的最大输出长度 Max Tokens 说明;如果想理解随机性参数,再看温度 Temperature 的解释。

怎么选择停止字符串:一份可执行的检查表

  1. 先确定边界。明确你要截断的是一句话、列表、下一轮对话、JSON 还是代码,不要先随意填写一个符号。
  2. 优先使用专用标记。例如约定一个正文中很少出现的组合字符串,通常比单个句号、逗号或换行更安全。
  3. 让提示词示例保持一致。如果提示词里的示例没有出现停止标记,模型可能不会按预期生成它。IBM 文档明确提醒,提示词包含输入输出示例时,应在示例输出中包含停止序列。
  4. 检查最小输出限制。部分平台在达到最小 Token 数之前不会触发停止序列,因此“设置了停止标记却没有立刻停止”不一定是参数失效。
  5. 确认返回文本是否包含标记。许多平台会在返回内容中移除停止序列,但具体行为应以对应平台文档为准。
  6. 记录停止原因。如果平台提供结束原因,区分 stop_sequence、max_tokens、自然结束等状态,排查会比单看文本更准确。
停止序列自查清单
现象优先检查处理方向
回答刚开始就停止停止字符串是否太常见改用更独特的组合标记
一直没有触发模型是否生成了完全相同的字符串检查空格、换行、大小写和全角半角
JSON 无法解析是否在闭合括号前停止把结束标记放在完整结构之后,并增加后处理校验
输出到上限仍被截断是否先达到 Max Tokens提高上限或缩短输入,不能只依赖停止序列

常见误区与排查步骤

误区一:停止序列等于最大输出长度

不是。停止序列看的是“有没有出现指定字符串”,最大输出长度看的是“生成了多少 Token”。一个回答可能先命中停止序列,也可能先达到最大输出上限。

误区二:停止序列会让模型理解任务完成

不是。它更像程序看到分隔符后的强制截断。模型可能还没有写完,只是输出中出现了触发字符串。

误区三:设置一个换行就最安全

通常不是。换行可能大量出现在段落、列表和代码中,容易让输出提前结束。是否安全取决于任务格式,而不是字符串看起来是否简单。

出现问题时按这个顺序排查

  1. 确认平台是否支持该参数,以及字段名是否写对。
  2. 确认停止序列是字符串还是字符串数组,不能照抄其他平台的格式。
  3. 检查停止序列中的空格、换行、大小写和符号是否完全一致。
  4. 把停止序列临时改成一个明显且罕见的标记,判断是否仍然提前停止。
  5. 查看结束原因,区分停止序列触发、最大长度触发还是模型自然结束。
  6. 对 JSON、代码等结构化输出增加语法校验,不要只凭文本长度判断成功。

如果你正在理解一整套模型参数,可以结合站内的AI 大模型参数说明,再对照上下文窗口的解释,把“单次输出上限”和“输入输出总容量”分开看。

FAQ:停止序列 Stop Sequence 常见问题

停止序列会出现在模型返回结果里吗?

多数平台会在触发停止后不把停止序列放入最终返回文本,但不同平台和接口行为可能不同,接入程序前应查看对应官方文档并实际检查返回字段。

可以把句号设置成停止序列吗?

可以,但句号出现频率很高,可能让模型在第一句话、缩写或小数处提前停止。除非任务就是严格生成一句话,否则通常应选择更独特的标记。

停止序列没有触发,说明参数失效了吗?

不一定。模型只有在实际生成出完全匹配的字符串时才会触发;空格、换行、大小写不同,或者先达到最大输出限制,都可能导致看起来没有触发。

停止序列和上下文窗口是一回事吗?

不是。停止序列控制生成何时主动停止;上下文窗口限制一次请求能够容纳的输入和输出总量。前者是指定字符串触发,后者是容量限制。

常见问题

停止序列会出现在模型返回结果里吗?

多数平台会在触发停止后不把停止序列放入最终返回文本,但不同平台和接口行为可能不同,接入程序前应查看对应官方文档并实际检查返回字段。

可以把句号设置成停止序列吗?

可以,但句号出现频率很高,可能让模型在第一句话、缩写或小数处提前停止。除非任务就是严格生成一句话,否则通常应选择更独特的标记。

停止序列没有触发,说明参数失效了吗?

不一定。模型只有在实际生成出完全匹配的字符串时才会触发;空格、换行、大小写不同,或者先达到最大输出限制,都可能导致看起来没有触发。

停止序列和上下文窗口是一回事吗?

不是。停止序列控制生成何时主动停止;上下文窗口限制一次请求能够容纳的输入和输出总量。前者是指定字符串触发,后者是容量限制。

相关阅读

参考资料

  1. How do I use stop sequences in the OpenAI API? | OpenAI Help Center
  2. Foundation model parameters: decoding and stopping criteria | IBM Documentation
  3. 生成内容:Gemini API | Google AI for Developers
  4. Handling stop reasons | Anthropic API