Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
獨立知識媒體
與任何項目無關聯
學會用 Claude,每件事都做得更好
claudeskill-me.com
最新
Claude Temperature 參數怎麼設?從 0 到 1,還有那個讓開發者集體踩雷的隱藏限制  ·  Claude 為什麼「忘記」我剛剛說的話?搞懂 Context Window,你就懂了  ·  System Prompt 跟 User Prompt 差在哪?搞懂這個結構,你的 Prompt 才會真的聽話  ·  Subagent 什麼時候是神隊友,什麼時候只是把簡單任務搞複雜  ·  Skill 跟 Subagent 該怎麼分工?不是二選一,是誰負責「知道」、誰負責「執行」  ·  CLAUDE.md 講了 Claude 還是沒照做?用 Hooks 把「請求」變成「保證」
beginners

System Prompt 跟 User Prompt 差在哪?搞懂這個結構,你的 Prompt 才會真的聽話

30 秒速讀
你打的話沒被聽進去,可能不是措辭問題——是你把該放進 System 層的規則,寫成了 User 層裡的一句話。

完整解析 +
01 · 為什麼發生?

如果我沒有寫程式,只是用 Claude.ai 網頁版聊天,System Prompt 這件事跟我還有關係嗎?

有關係,只是你接觸到的是簡化版。標準的 Claude.ai 對話裡,System Prompt 是由 Anthropic 平台預先設定好的,一般使用者無法直接查看或修改;但如果你用了 Projects 功能,裡面的「Custom Instructions」欄位在效果上就是一個你可以自己設定的簡化版 System Prompt——你不需要碰任何程式碼,只要在建立 Project 時把角色設定、語氣偏好、固定要遵守的規則寫進去,之後這個 Project 底下的每場新對話都會自動套用。

換句話說,你不需要理解 API 或 system 參數怎麼寫,只需要知道「這類全域規則該放進 Custom Instructions,而不是每次重新打」,就已經抓到這個概念對你實際有用的那一部分。

02 · 運作原理是什麼?

如果 System Prompt 的權重比較高,那是不是代表我在對話裡打的任何指示都會被忽略?

不是。System Prompt 權重較高,指的是它比較不容易被單一句話「覆蓋」,不代表使用者的指示會被忽略。實務上,你在對話中臨時給的指示(例如「這次請用條列式回答」)通常還是會被採納,只是它的效力通常僅限於當下這次或這段對話,而不會像 System 層那樣持續套用到之後的每一場新對話。

真正的差別在於「持續性」而不是「有沒有效」:User 層的指示是有效的,但範圍窄、容易被下一句話取代;System 層的指示範圍廣,會一直存在,除非你自己去修改設定。理解這一點能幫你判斷一條規則「值不值得」花力氣搬到 System 層——如果只是一次性的需求,留在 User 層反而更方便。

03 · 如何應用

開發者在寫 System Prompt 時,常犯的錯誤是什麼?

最常見的錯誤是把 System Prompt 寫成一份「所有可能情境」的規則清單,試圖預先窮舉每一種使用者可能問的問題該怎麼回答。這樣做的結果通常是 System Prompt 越寫越長,彼此規則之間開始互相打架,模型反而更難判斷該優先遵守哪一條。

比較穩健的做法是把 System Prompt 聚焦在「這個角色是誰、核心語氣是什麼、有哪些絕對不能做的事」這幾個層面,其餘會隨情境變化的細節,留給 User 層的訊息去補充。Anthropic 官方文件裡建議的做法也是類似方向:用 system 參數設定角色,其他任務相關的細節放進 user turn,而不是把兩者混在一起寫成一大段。

04 · 我該怎麼做?

如果我想開始練習分辨 System 跟 User 層,可以從哪裡下手?

最簡單的起手式,是回頭檢視你最近幾次跟 Claude 的對話:把你打過的每一句指示挑出來,問自己「這句話是不是不管我這次問什麼都該一直成立」。如果答案是「對」,代表這句話其實一直都該放進 System 層(如果你用 Projects,就是 Custom Instructions);如果答案是「要看情況」,留在 User 層反而是對的。

實際做法上,可以先挑一個你經常重複使用 Claude 的場景(例如固定幫你寫某類型的信、固定用某種語氣回覆客戶),建一個 Project,把那些你每次都要重打的規則搬進 Custom Instructions,測試幾次看看是不是真的省下了重複輸入的力氣。這個練習做過一輪之後,你會對「這句話該放哪裡」建立起比較直覺的判斷。

完整內容 +

很多人第一次寫 Prompt 遇到的困惑,不是「不知道要打什麼」,而是「明明打了指令,Claude 卻好像沒完全照做」。這個現象背後,經常不是措辭的問題,而是你把該放進 System Prompt 的規則,寫成了 User Prompt。這兩者不是同一種指令換個位置寫,而是兩個權重完全不同的結構層級。

兩者在結構上根本不是同一回事

在 Claude 的 API 裡,這個差異是寫死在資料結構裡的:`system` 是獨立於對話之外的一個參數,跟實際的對話內容完全分開存放;而 `messages` 陣列裡只有 `user` 和 `assistant` 兩種角色,一來一往地輪流講話。也就是說,System Prompt 從一開始就不是「對話的一部分」,它更接近舞台劇開拍前,導演對演員說的整體設定:這場戲你要演一個什麼角色、語氣怎麼拿捏、有哪些台詞絕對不能講;User Prompt 則是演員在戲裡當下要唸的具體台詞,一句換一句,隨情境變化。

這個結構差異直接決定了兩者的可靠度不同。System Prompt 因為在權重設計上優先於使用者當下輸入,比較不容易被一句臨時的話蓋過去;User Prompt 則相對容易被下一句話覆蓋或修正——這正是為什麼你在對話中途改變主意時,Claude 通常會順著新的指示調整,但整體角色設定不會跟著跑掉。

一般人最常在哪裡碰到 System Prompt 這個概念

如果你是開發者,用 Anthropic API 寫程式,System Prompt 就是 `messages.create()` 呼叫裡獨立的 `system` 參數,你只要設定一次,例如「你是一位資深的財務顧問,回答時使用正式但親切的語氣」,這個設定就會套用在整段對話裡,不需要每一句話都重申一次角色身份。

但你不需要寫程式也會用到這個概念。Claude.ai 的 Projects 功能裡有一個「Custom Instructions(自訂指示)」欄位,效果上就是一個簡化版的 System Prompt:你在建立 Project 時設定一次「這個專案是做什麼的、我希望回答時注意什麼格式、有哪些背景資訊」,之後在這個 Project 底下開的每一場新對話,都會自動套用這套設定,不用每次重新打一遍。這也是為什麼很多人用了 Projects 之後會覺得「Claude 好像比較懂我了」——不是模型變聰明了,是你終於把該放在 System 層的規則,真的放到了 System 層。

為什麼「打了指令卻沒被聽」,問題常常出在放錯層級

新手最常見的做法,是把所有規則都塞進每一句對話裡:「請用正式語氣回答」「記得只回答跟財務有關的問題」「不要提到競爭對手」,每次開新對話都要重打一遍,而且因為這些話跟其他一次性的問題混在同一個層級,模型有時候會優先處理你這次問的具體問題,而把稍早提過的規則放輕。這不是模型「不聽話」,而是這些規則本來就該放在 System 層,卻被寫成了 User 層裡眾多訊息中的一句。

判斷一條規則該放哪裡的簡單原則是:如果這句話「不管你這次問什麼,都應該一直成立」,它就該進 System Prompt(或 Projects 的 Custom Instructions);如果這句話「只跟你這次的問題有關」,它才該留在 User Prompt 裡。例如「用繁體中文回答」「語氣保持專業」通常適合放進 System 層一次設定好;而「幫我把這段會議記錄整理成三點重點」則是典型的 User 層任務,換個對話就不需要重複。

這跟你的錢有什麼關係

如果你是自己用 Claude.ai 處理工作,理解這個差異能幫你省下大量重複輸入的時間:把角色設定與固定規則放進 Projects 的 Custom Instructions,等於一次性投資,之後每場對話都能省下重打指令的時間,對按小時計費或需要頻繁切換任務的自由工作者來說,這是實打實的效率差異。如果你是企業在評估要不要導入 AI 客服或內部工具,理解 System Prompt 的權重設計,能幫你判斷廠商說的「AI 不會亂講話」是不是真的有把關鍵規則放進正確的結構層級,而不是天真地相信使用者自律就夠——這通常是決定一套 AI 應用能不能上線的關鍵細節,也直接關係到後續要花多少人力去修補漏洞。

資料來源:Anthropic — Give Claude a role with a system promptAnthropic — Human and assistant formatting (system prompt in Messages API)How-To Geek — Claude's "Projects" custom instructions walkthrough
圖解
System Prompt 與 User Prompt 的結構位置system 參數獨立於 messages 陣列之外,設定一次套用整場對話;user/assistant 輪流出現在 messages 陣列裡,範圍僅限當下回合System Prompt vs. User Promptsystem parameterSet once, outside messages[]Role · Tone · Hard rulesApplies to entire conversationHigher weight, harder to overridee.g. Projects → Custom Instructionsmessages[] arrayAlternating user / assistant turnsuser: this turn's questionassistant: prior replyuser: next questionScoped to this turn, easily revisedframesClaude Skill Me · claudeskill-me.com
歡迎截圖分享,轉載請註明來源
提問
請至少輸入 10 個字
相關文章
Claude Temperature 參數怎麼設?從 0 到 1,還有那個讓開發者集體踩雷的隱藏限制
beginners · 08/28
Claude 為什麼「忘記」我剛剛說的話?搞懂 Context Window,你就懂了
beginners · 08/28
開發者第一次用 Claude Code 跑 Code Review:完整流程與常見誤區
beginners · 08/14
Subagent 什麼時候是神隊友,什麼時候只是把簡單任務搞複雜
advanced · 08/25
更多相關主題