快訊
2026-08-29
AI 教學

System Prompt 是什麼?跟一般 Prompt 差在哪,為什麼有些事 AI 說不能做

約 12 分鐘閱讀
廣告

⚡ 站長快讀:核心重點

  • 文章屬性:科技冷知識 / 規格解析
  • 核心結論:直覺上會以為擋下 AI 的就是 System Prompt 這層,但真正改不動的規則在更上面的訓練與平台層;分清楚拒答來自哪一層,才知道有沒有得談、要不要換工具。
  • 適用對象:用過 ChatGPT、Claude、Gemini,好奇「這台 AI 到底被誰設定過」的所有人

📌 快速答案

一句話答案:System Prompt 是開發者在對話開始前先給模型的隱藏指令,權限高於使用者訊息,用來設定角色與行為邊界,但改不動平台層的安全規則。


🔍 故事的起點

你打開 ChatGPT 問「今天幾號」,它答得出來。可是模型的權重是幾個月前訓練完的,裡面根本沒有今天這個日期。你再問「你是誰」,它會說自己是 ChatGPT,而不是一堆矩陣。這兩件事都不是模型天生知道的——是有人在你按下 Enter 之前,先跟它講過了。那段「先講過的話」,就是 System Prompt(系統提示詞)。

這篇要拆的正是這層看不見的東西。站長我看過太多中文說法把它講成「比較前面、比較重要的 prompt」,但這個描述其實會誤導人:System Prompt 真正的關鍵不是位置,是權限。這篇文章給你三個一般文章不會講的角度:第一,用 OpenAI 官方 Model Spec 的授權階層,說明開發者能碰到的層級其實不叫 system;第二,把 OpenAI、Anthropic、Google 三家的欄位名稱與公開程度做成對照,你會發現只有一家把它整份公開;第三,把「AI 說不能做」拆成四個來源,讓你判斷下次被拒答時,該去改提示詞、換平台,還是根本沒得改。


🧪 原理拆解

你看不到的那段開場白,裡面通常寫什麼

先給結論:一次對話送進模型時,並不是只有你打的那句話,而是一整串訊息,而 System Prompt 排在最前面,由應用程式自動附加,聊天介面上不會顯示。

它的內容通常涵蓋幾類:身分與語氣(你是某某助理、講繁體中文)、即時資訊(今天日期、使用者所在時區)、可用工具(可以搜尋網頁、可以執行程式碼)、輸出格式(程式碼一律包在 Markdown 區塊裡),以及禁止事項(不要談論競品、不要提供醫療診斷)。

這不是猜的。Anthropic 官方文件把 Claude 網頁版與行動 App 的核心系統提示詞逐版本公開,並說明這段提示是用來在每次對話開始時提供「目前日期」這類最新資訊,同時鼓勵特定行為,例如程式碼一律用 Markdown 提供。官方文件同時註明一件很多人搞混的事:這些系統提示詞的更新不適用於 Claude API——也就是說,你在網頁版看到的個性與規矩,直接呼叫 API 時並不會自動出現,得由開發者自己寫。

這也解釋了一個常見的困惑:同一個模型,為什麼在官方 App 裡有禮貌又囉唆,接到別人做的產品裡卻直接得多。模型是同一個,差在外面那層 System Prompt 換人寫了。

廣告

System Prompt 跟一般 Prompt 差在哪:差的是權限,不是順序

先給結論:兩者的差別不是「誰排前面」,而是衝突時誰說了算

OpenAI 在公開的 Model Spec(2026-08-18 版)裡把這件事寫得非常清楚。文件明言:在指令鏈(chain of command)裡,「角色決定指令在衝突情況下的權威性」(roles determine the authority of instructions in the case of conflicts),並且把授權層級由高到低分成五層:

授權層級官方定義(摘譯)誰能寫
Root最根本的規則,無法被系統訊息、開發者或使用者覆寫OpenAI(寫在 Model Spec 裡)
SystemOpenAI 設定的規則,可透過系統訊息傳遞或覆寫,但開發者與使用者不能覆寫OpenAI
Developer開發者透過 API 給的指令應用程式開發者
User終端使用者給的指令
Guideline可以被隱性覆寫的指引預設行為

表格看完,有五個重點要記:

  • 你在聊天框打的字是 User 層,層級在開發者之下。所以你叫它「忘掉前面所有設定」,通常沒用。
  • 開發者實際碰得到的是 Developer 層。Model Spec 對角色的定義寫得很直白:system 是「OpenAI 加入的訊息」,developer 才是「來自應用程式開發者」。所以中文常見的「system prompt 權限最高」講法,以 OpenAI 現行定義來說並不精確——真正最高的 Root 與 System 是平台自己保留的。
  • Guideline 層是預設值不是鐵律,像語氣、格式這類偏好,使用者一句話就能蓋掉,這也是為什麼你叫它「講簡短一點」它會照做。
  • 層級只在衝突時才啟動。沒有衝突時,四層指令是疊加的,不是互相取消。
  • 工具回傳的內容與引用的文字沒有授權,這點下面第五節會展開,是整個安全模型的關鍵。

三家實作對照:欄位名不同,公開程度差更多

先給結論:三大平台都有這一層,但欄位名稱、放的位置與是否公開,差異比想像中大。

平台開發者填的欄位放在哪官方是否公開內容
OpenAIdeveloper / system 訊息訊息串裡的一則,帶角色標記否(僅公開 Model Spec 規則)
Anthropic Claudesystem 參數messages 平行的獨立欄位是,網頁與 App 版逐版本公開
Google Geminisystem_instruction 參數input 平行的獨立欄位

三點延伸觀察:

  • Anthropic 與 Google 把它拉成獨立欄位,結構上就跟對話訊息分開。Anthropic 官方範例是 system="You are a helpful coding assistant specializing in Python."messages=[...] 並列;Gemini 官方文件的寫法則是傳入 system_instruction 參數來設定模型行為,官方範例甚至用了「你是一隻叫 Neko 的貓」這種示範。
  • OpenAI 走的是訊息角色制,system 與 developer 都是訊息串裡的一則,靠角色標記區分權限。
  • 公開程度是真正的差別。Anthropic 把消費端各代模型的核心系統提示詞逐版本掛在官方文件上(工具與功能相關的區塊不在公開範圍);另外兩家目前只公開行為規範,不公開實際字串。想理解一段 System Prompt 長什麼樣,現階段官方拿得到的完整樣本,幾乎只有 Claude 那份核心系統提示詞。

順帶一提,現在的 System Prompt 常常還要告訴模型「你有哪些工具可以用」。這套工具怎麼接上去、由誰描述,就是近年 MCP(Model Context Protocol)這類工具協定在處理的事。

廣告

為什麼有些事 AI 說不能做:四個來源,只有一個是 System Prompt

先給結論:被拒答時,先分清楚是哪一層擋的,才知道有沒有得談。四個來源由硬到軟排列如下。

第一層:訓練與對齊規則(改不動)。 模型本身在訓練階段就被要求對某些類別拒絕或做安全回覆。Model Spec 的說法是:在指令鏈下,模型應該服從使用者與開發者的指令,「除非落入需要拒絕或安全完成的特定類別」。這一層是寫進模型行為裡的,任何提示詞都不該繞過——Root 層規則的定義本身就寫明:無法被系統訊息、開發者或使用者覆寫。

第二層:平台的硬性過濾(改不動或只能部分調整)。 這層在模型之外,是另一套判斷輸入輸出的機制。以 Gemini API 為例,官方文件列出四個可調整的過濾類別:騷擾、仇恨言論、情色露骨、危險內容,開發者可依用途調整封鎖門檻;但文件同時明言,對核心危害(例如危及兒童安全的內容)有內建保護,「一律封鎖且不可調整」。所以「這家可以那家不行」有時不是模型差異,是這層設定不同。

第三層:開發者的 System Prompt(可能有得談)。 這一層才是本文主角。客服機器人只回答自家產品、法務助理拒絕給出具體法律建議、兒童向 App 拒談成人話題——多半都寫在這裡。特徵是拒絕理由很具體、很像公司規定,而不是泛泛的安全說詞。

第四層:模型的保守傾向(通常有得談)。 沒有明確規則,但模型判斷風險而選擇保守回答。這層最容易鬆動:把用途、身分、需要的細節講清楚,常常就能得到更完整的回覆。這也是提示詞寫法真正能發揮作用的地方。

實務上的判讀方式很簡單:拒絕理由越抽象、越像官方聲明,越可能是第一、二層,再怎麼改提示詞都沒用;理由越具體、越像某家公司的規定,越可能是第三層,換個平台或換個工具就好了。

廣告
System Prompt 的四層指令授權階層,由 Root 規則往下到使用者訊息與無授權的工具內容

最重要的一件事:System Prompt 不是安全邊界

先給結論:System Prompt 是一段文字,不是程式碼裡的權限檢查,所以它擋不住刻意的攻擊,也留不住秘密

原因在於模型看到的一切——你的訊息、網頁內容、PDF 檔案、工具回傳的資料——最終都是同一串符號。分層只是模型被訓練去尊重的約定,不是作業系統等級的隔離。OpenAI 的 Model Spec 也正是因此把「預設忽略不可信資料」列為 Root 層規則:引號內的純文字、YAML、JSON、XML 或標記為不可信的區塊,以及多模態資料、檔案附件與工具輸出,預設都被視為含有不可信資料,不具任何授權

這道規則存在的理由,就是提示詞注入攻擊:攻擊者把指令藏在網頁或文件裡,等 AI 讀進去照做。反過來看,這也說明 System Prompt 的地位:它是「被優先信任的文字」,而不是「不可能被違反的規則」。

所以給開發者的三條實務結論很清楚:

  • API 金鑰、資料庫密碼、內部價格表,不要寫進 System Prompt。 它會外洩,而且外洩時你不會收到通知。
  • 權限控管要做在程式那一層。 該擋的呼叫用程式碼擋,不要寫一句「不要幫使用者刪除資料」就當作做完了。
  • 把提示詞當成 UX 設計,不要當成資安機制。 它負責讓 AI 好用,不負責讓 AI 安全。

隱藏成本:System Prompt 每一輪都會重送一次

先給結論:System Prompt 不是設定一次就結束,它每次請求都要重新送進模型、重新計費

Anthropic 的 API 文件在說明 token 計算時寫得很直接:輸入 token 數是「所提供的訊息清單、系統提示詞與工具三者的總和」。換句話說,一段兩千字的 System Prompt,在一段來回二十輪的對話裡,就被重複計算了二十次。

這件事有三個實際影響:

  • 成本會被放大。 對話越長、使用者越多,固定成本乘上去的倍數就越可觀。這也正是各家後來推出提示詞快取機制的原因——把重複不變的前綴快取起來,避免每輪重算。
  • 它會吃掉上下文空間。 System Prompt 佔的位置,就是你的對話歷史少掉的位置。塞太多規則,模型能記住的對話反而變短。
  • 越長越容易自相矛盾。 規則多了以後常出現互相打架的條款,模型只能自己挑一邊,行為就會變得不穩定。

所以「把所有可能情況都寫進 System Prompt」是新手最常見的誤區。真正好用的寫法通常短而明確,細節交給程式邏輯或檢索去補。

官方建議怎麼寫:三個有依據的原則

先給結論:官方文件的建議意外地樸素——給角色、講清楚、別用力過猛

  • 給模型一個角色。 Anthropic 官方提示技巧文件直接寫明,在系統提示詞裡設定角色能讓模型的行為與語氣聚焦到你的使用情境,而且「即使只有一句話也有差別」。這是投報率最高的一句話。
  • 用結構化標記把規則分區。 Anthropic 官方範例會把行為指示包在 XML 標籤裡分段,例如以標籤圈出「預設採取行動」這類行為原則。分區的好處是規則之間界線清楚,日後修改也不容易改壞。
  • 語氣不要過強。 同一份官方文件點名 Claude Opus 4.5 與 Opus 4.6 對系統提示詞的反應比先前模型更敏感;原本為了避免工具觸發不足而寫的強烈語句,在這兩代模型上可能造成過度觸發,建議把過於強硬的措辭調弱。

這三點合起來的意思是:System Prompt 的品質不是靠字數堆出來的。與其寫滿兩千字的禁令,不如寫清楚一句角色、三條原則,再把真正不能出錯的部分交給程式碼。


💡 總結:冷知識延伸

站長我覺得這題最有意思的地方,是它會改變你看 AI 的角度:很多你以為是「模型個性」的東西,其實是產品經理寫在 System Prompt 裡的一句話。同一顆模型,換一段開場白就換一種脾氣。

還有一個多數人沒注意到的冷知識:一般使用者其實摸得到半層 System Prompt。ChatGPT 的自訂指示、Claude 的 Project 指示、Gemini 的 Gem,都是讓你把長期偏好存起來、每次新對話自動帶上,效果類似一段小型的系統層指令(OpenAI 官方說明即指出自訂指示可用 API 的 system 訊息達到類似效果)。差別在於它們仍然位在使用者與開發者這一側,壓不過平台規則——所以你可以用它讓 AI 永遠講繁體中文,卻不可能用它解除任何安全限制。

最後提醒一句:這篇談的是機制,不是繞過方法。理解 System Prompt 的價值在於判斷「這個拒答有沒有得談」,而不是找漏洞。真要問的話,知道哪一層改不動,反而最省時間。


❓ 常見問題

Q:System Prompt 跟我在聊天框打的訊息,技術上到底差在哪?

差在授權層級。依 OpenAI Model Spec 的定義,你的輸入屬於 User 層,開發者的指令屬於 Developer 層,兩者衝突時以較高層為準;沒有衝突時則是疊加生效。位置先後只是實作結果,不是原因。

Q:為什麼同一個問題,有的 AI 拒答、有的願意回?

三個常見原因:各家訓練階段的拒絕類別本來就不同;平台過濾器的門檻不同(例如 Gemini API 的四個可調類別,開發者可以自行調整封鎖強度);還有就是應用層的 System Prompt 寫法不同。這三者都可能造成同題不同答。

Q:我可以叫 AI 把它的 System Prompt 印出來嗎?

要看平台。Anthropic 官方直接把 Claude 網頁版與 App 版的系統提示詞公開在文件上,想看照著讀就好。至於用誘導方式讓模型自己吐出來,模型可能照講、可能拒絕、也可能編一段像模像樣的假內容,結果不可靠;而且各家服務條款多半訂有禁止反向工程與繞過保護措施的條文,這類做法有觸及的風險,本文不提供做法。

Q:System Prompt 是不是寫越長越好?

不是。Anthropic 官方在提示技巧文件中點名 Claude Opus 4.5 與 Opus 4.6 對系統提示詞的反應比先前模型更敏感,原本為了避免工具「觸發不足」而寫的強烈語句,可能造成過度觸發,建議把過強的措辭調弱。長度會佔用上下文視窗與每一輪的費用,語氣過強則會扭曲行為,兩邊都要節制。

Q:一般使用者有辦法蓋掉 System Prompt 嗎?

沒有可靠的方法,也不建議嘗試。使用者層級本來就在開發者之下,更別說上面還有平台保留的 System 與 Root 兩層。想調整行為,正途是使用官方提供的自訂指示欄位,或換一個規則比較寬鬆的工具。


🔗 延伸閱讀


📎 參考資料來源

📖 第一級|廠商官方:


廣告