停止序列(Stop Sequence)是什麼?

指定特殊的詞彙序列,當模型生成到此序列時立即停止生成,用於控制輸出長度和結構邊界。|本頁含完整原理、應用場景、iPAS 考試重點與 3 個常見問答。

英文
Stop Sequence
主題標籤
大型語言模型、Prompt工程、生成式AI
考點定位
非 iPAS 核心術語
最後更新
2026/07/04
停止序列(Stop Sequence)是什麼? 大型語言模型Prompt工程
術語快查

搜尋意圖: 如果你在找「停止序列 是什麼」或「停止序列 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。

TL;DR: 指定特殊的詞彙序列,當模型生成到此序列時立即停止生成,用於控制輸出長度和結構邊界。

實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。

下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。

指定特殊的詞彙序列,當模型生成到此序列時立即停止生成,用於控制輸出長度和結構邊界。

核心概念

在沒有停止序列的約束下,LLM 生成會持續進行直到達到預設的最大長度或生成特殊的結束標記(如 <|endoftext|>)。然而,最大長度是粗糙的控制,結束標記的生成時機不可預測。

停止序列提供了更精細的控制。透過指定一個或多個停止序列,開發者可以明確定義「生成到哪裡停止」。例如,在 QA 系統中,指定「

」作為停止序列,確保模型只生成一個回答段落;在多輪對話中,指定「User:」作為停止序列,確保生成在用戶輪次開始前停止。

運作原理

基本機制

生成過程正常進行:逐步生成詞彙,形成序列。

在每個生成步驟後,系統檢查當前序列是否包含(或以)停止序列結尾。

如果檢測到停止序列,立即終止生成,返回停止序列之前的部分(通常不包含停止序列本身)。

如果未檢測到停止序列,繼續生成下一個詞彙。

實現細節

停止序列可以在令牌(token)級別或字符級別進行匹配。令牌級匹配對詞彙表的特定詞彙進行(例如,停止序列是 [END] 令牌),字符級匹配對生成的文本字符串進行。

大多數現代實現支持多個停止序列,形成一個停止序列列表。生成會在匹配到列表中的任何一個序列時停止。

某些實現也支持正則表達式停止序列,允許更靈活的匹配模式。

實際應用

應用場景

結構化輸出生成:在生成 JSON 或 YAML 時,使用停止序列確保完整性。例如,指定 }--- 作為停止序列,確保生成到結構邊界。

多輪對話系統:在對話中,用「User:」或「Assistant:」作為停止序列,精確控制角色轉換。

段落級生成:使用「

」(雙換行)作為停止序列,生成單個段落而非整篇文章。

列表生成:使用數字編號(如「3. 」)或項目符號作為停止序列,生成特定長度的列表。

常見停止序列

」:段落邊界,用於單段落生成

」:行邊界,用於單行生成

  • 「<|endoftext|>」或「<|end|>」:正式結束令牌
  • 「User:」「Human:」:對話邊界
  • 「---」或「===」:文件分隔符
  • 「[DONE]」「[END]」:自訂結束標記
  • 「API response:」「Output:」:格式邊界

常見誤區

誤區 1:停止序列會包含在輸出中。大多數實現自動移除停止序列,只返回之前的部分。有些實現可配置此行為,但預設通常是移除。

誤區 2:停止序列必須是長字符串。停止序列可以非常簡短,甚至單個字符。簡短的序列匹配更容易,但可能導致意外提前停止;過長的序列可能無法匹配。

誤區 3:多個停止序列會導致優先衝突。實務中,系統通常在遇到任何停止序列時立即停止,不考慮優先級。如果需要優先級,應該設計不重疊的停止序列。

誤區 4:停止序列影響生成品質。實際上,停止序列只是終止點,不改變生成過程本身的質量。它們是後處理控制。

誤區 5:停止序列可以替代長度限制。雖然停止序列提供更精細的控制,但應該與長度限制結合使用,作為雙重安全保護。

與相關技術的比較

停止序列 vs 最大長度限制

  • 停止序列基於內容,最大長度基於計數
  • 停止序列更精確,最大長度更穩健(保障沒有超長輸出)
  • 應該結合使用:停止序列控制理想邊界,最大長度作為緊急制動

停止序列 vs 終止令牌

  • 終止令牌是模型預訓練中學到的特殊令牌
  • 停止序列是外部施加的硬性限制
  • 終止令牌依賴模型行為,停止序列絕對可靠
  • 兩者都是終止機制,停止序列通常更可控

停止序列 vs 詞彙約束

  • 詞彙約束限制可選詞彙集合
  • 停止序列是內容匹配終止
  • 詞彙約束影響整個生成過程,停止序列只在末端生效
  • 兩者可結合,詞彙約束過程中生成,停止序列終止生成

停止序列是現代 LLM API 的標準功能。OpenAI、Anthropic、Google 等主要提供商都支援此功能,通常作為 API 參數暴露給開發者。

常見問題

可以設定多個停止序列嗎?它們是否有優先級?

可以設定多個停止序列,大多數 API 允許傳遞一個停止序列列表。關於優先級,通常系統不考慮優先級,而是在遇到列表中的任何一個序列時立即停止。如果多個序列同時匹配(例如一個序列是另一個的前綴),具體行為取決於實現。設計停止序列時,應避免重疊的前綴關係。

如果停止序列在輸出中自然出現會怎樣?

如果生成過程中自然出現了停止序列,系統會立即停止,即使這個出現可能不是有意的。例如,如果用「.」作為停止序列,模型生成「The sky is blue.」時會立即停止,可能比預期早。這是為什麼選擇停止序列時需要謹慎,應選擇在自然生成中不太可能出現的序列。複雜或特殊的序列(如「[STOP_GENERATION]」)比簡單標點更安全。

停止序列可以是正則表達式嗎?

某些 API 和框架支援正則表達式停止序列,但不是全部。例如,某些開源框架可能允許指定正則表達式以匹配更複雜的模式。但大多數商業 API(如 OpenAI)只支援字面字符串停止序列。開發者應檢查具體實現的文件。如果需要複雜匹配,也可在生成後進行後處理而非依賴停止序列。