生成與推論

Stop Sequences 停止序列是什麼?叫 AI 說到這裡就閉嘴

Stop Sequences 中文叫停止序列,是一個或多個字串組成的清單。當 AI 在生成文字的過程中遇到清單裡的任何一個字串時,就會立刻停止輸出,不再繼續生成後面的內容。它常用來控制結構化輸出、多輪對話與程式碼區塊的結束位置,讓回應乾淨、可預期,不會多說一句廢話。
Stop Sequences 停止序列是什麼?叫 AI 說到這裡就閉嘴:文章重點卡

Stop Sequences 停止序列是什麼?叫 AI 說到這裡就閉嘴

你請 AI 回一段 JSON,它回完 JSON 還熱情地補了三句說明,害你後面的程式解析失敗。這種時候要用的就是停止序列。

它是呼叫 API 時常見的一個參數,名字通常叫 stop 或 stop_sequences。設定好之後,AI 說到指定符號就會自動收手。

你將學到什麼

定義

一份字串清單,AI 生成時遇到其中任一個就立刻停止輸出。

白話比喻

像跟人約好一個暗號,聽到暗號就不要再講下去。

常見用途

結構化輸出、多輪對話控制、程式碼區塊收尾。

跟誰容易搞混

常跟最大輸出代幣混淆,一個管內容,一個管長度。

定義

Stop Sequences 中文叫停止序列,是一個或多個字串組成的清單。當 AI 在生成文字的過程中,遇到這些字串中的任一個時,就會立刻停止輸出,不會再繼續生成後面的內容。

整個流程很單純:使用者發出請求 → AI 開始生成 → 遇到停止序列 → 強制停止輸出。停止點之後的內容不會被輸出。

常見的停止序列

停止序列說明
換行符號遇到換行就停止,常用於單行輸出
[END]自訂的結束標記,最直覺也最常用
三個井字號Markdown 分隔符號,常用於分段輸出
模型內建的結束符號某些開源模型會使用自己的結束標記

實際用例

第一種是結構化輸出。要 AI 只回一段 JSON 時,把連續兩個換行設成停止序列,它吐完物件就會停,不會再補一段親切的說明。

第二種是多輪對話控制。模擬對話時把下一個發言者的標記設成停止序列,AI 就不會自己演完雙方的台詞。第三種是程式碼輸出,把程式碼區塊的收尾符號設成停止序列,避免它在後面多寫一堆解釋。

{
  "model": "your-model-name",
  "messages": [...],
  "stop": ["[END]", "###"],
  "max_tokens": 500
}

跟最大輸出代幣差在哪

面向Stop Sequences 停止序列Max Output Tokens 最大輸出代幣
依據基於內容,遇到特定符號就停基於長度,達到代幣上限才停
結束位置精準停在剛好需要的地方可能在句子中間突然截斷
適合場景結構化輸出、分段控制、多輪對話控制成本與長度上限,避免過長回應

兩者不衝突,實務上通常一起設。停止序列負責讓輸出乾淨,長度上限負責當最後的保險。想把提示詞寫得更可控,可以再看 Prompt 提示詞 這一篇。

常見誤解誤解一,以為停止序列可以寫正則表達式。不行,它就是一段固定字串,一字不差才會觸發。誤解二,把太常出現的字元設成停止序列,例如中文的句號,結果 AI 講完第一句就停了。挑符號的原則是:正常內容裡不會出現,只有你要它結束時才會出現。
本文源起本文內容出自酒Ann 的「AI 實戰陪跑班」課程教材,由酒Ann 編寫成彙編條目。想系統性搞懂 AI 名詞,歡迎追蹤 酒Ann 的 Facebook

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

停止序列可以設定幾個?
可以設定多個,實際上限依平台而定。設定多個時,AI 只要遇到其中任何一個就會停止,不需要全部符合。常見的組合是換行符號、自訂結束標記與分隔符號一起設。
設了停止序列,AI 就一定會停嗎?
不一定。停止序列只在模型真的輸出那個字串時才會觸發。如果模型從頭到尾都沒生出那個符號,它就不會提前停止,還是會一路寫到最大輸出長度為止。所以停止序列通常要搭配長度上限一起用。
停止序列會出現在最後的回應裡嗎?
多數平台不會把觸發停止的那個字串包含在回傳內容中,你拿到的是停止點之前的文字。細節依各家 API 實作而異,串接前值得先用一個小範例實測一次。