停止序列

Stop Sequence / Stop

Stop Sequence(停止序列)是字符串数组,作为生成终止信号;模型一旦命中其中任何一个字符串就立刻停输,常用于 JSON 收尾、对话段结束,避免无限续写。

详细解释

停止序列(Stop Sequences,API 参数写作 stopstop_sequences 是用户主动告诉模型”到此为止,别继续往下写”的一组终止标记。模型生成过程中一旦输出了这组字符串中的任意一个,就会立刻停,后面不再继续生成,最后一个 stop 标记本身一般也会被去掉不返回。

停止序列是控制输出边界的最便宜手段,比”等模型自然停然后再后处理截断”更省 Token 钱 + 更快。

典型使用场景

场景推荐 Stop Sequence原因
多轮对话["\nHuman:", "\nAssistant:"]避免模型自己虚构下一轮对话
Few-Shot 示例["\n\nInput:"]防止输出”下一个示例的输入”
JSON 模式["\n\n", "}"](配合 response_format 更佳)让 JSON 对象闭合后立刻收
代码补全["\ndef ", "\nclass ", "\n\n// next"]避免把后面函数一起”脑补”出来

参数格式(跨厂商差异)

# OpenAI / DeepSeek / 所有 OpenAI 兼容格式:字符串或字符串数组
client.chat.completions.create(model="...", messages=..., stop=["END", "\n\n"])

# Anthropic Claude:使用 stop_sequences 数组
client.messages.create(model="...", messages=..., stop_sequences=["END", "\n\nHuman:"])

# Google Gemini:stopSequences 数组,最多 5 个

唯元智创(Weimeta)聚合层会自动把你传的 stop 参数转成各厂商格式,你不需要手写 if/else 适配每家,SDK 传一次即可。

注意事项

  1. Stop 是纯字符串后缀匹配:不是 Token 级匹配,大小写敏感,endEND 是两个不同 stop;
  2. 命中停止序列后,finish_reason 会标记为 "stop"(区别于长度被截断的 "length");
  3. Stop 序列数量通常限制在 4–16 个,单条长度通常 ≤ 64 字符。

常见问题

Stop 和 max_tokens 谁优先?
谁先触发谁优先:如果在达到 max_tokens 之前先看到 stop 标记,先停(finish_reason=“stop”);否则等生成到 max_tokens 上限被截断(finish_reason=“length”)。业务代码必须同时处理两种 finish_reason。