07 · System Prompt 與多輪對話
System Prompt(系統提示)是你在對話開始前給它設定的身份和行為規範,整段對話裡一直生效。用帶新人打比方:Prompt 是每次派活時交代的話,System Prompt 是入職第一天的約法三章。
兩者的區別
| Prompt(使用者訊息) | System Prompt(系統提示) | |
|---|---|---|
| 什麼時候寫 | 每次派活 | 對話開始前設一次 |
| 生效範圍 | 這一次 | 整段對話的每一輪 |
| 裝什麼 | 這次的任務、材料、具體要求 | 身份、語氣、通用規矩、不許做的事 |
| 優先順序 | 一般 | 通常更高,衝突時它更傾向聽 System |
| 在帶新人裡 | "把這段記錄整理成紀要" | "你是我們專案組的助理,對外文件一律用敬語,數字拿不準就標待確認" |
一句話:每次都要重說的東西,就該搬到 System Prompt 裡去。
在哪兒寫
不同產品叫法不一樣,位置也不一樣。這是通用的對照:
| 你用的東西 | System Prompt 在哪 |
|---|---|
| 網頁聊天框(ChatGPT / Claude / 豆包 / DeepSeek…) | 設定裡的"自定義指令""個性化""系統提示"之類;或者建一個「智慧體 / GPTs / Project」,把規矩寫在裡面 |
| API 呼叫 | 訊息數組裡 role 為 system 的那一條 |
| 命令列 / IDE 裡的編碼工具 | 專案根目錄的規則檔案(各家名字不同,如 CLAUDE.md、AGENTS.md、.cursorrules) |
| 企業內部平臺 | 建"應用"或"助手"時的那個大文本框 |
沒找到設定入口怎麼辦
退而求其次:每個新對話的第一條訊息,就發那段規矩。效果接近,只是每次要粘一遍。這也是很多人手機裡存一段"開場白"的原因。
一段能用的 System Prompt 長什麼樣
你是我所在專案組的助理,服務對象是產品和專案經理。
通用規矩:
1. 輸出預設用簡體中文,條目化,能用表格就用表格。
2. 對外文件語氣正式;內部溝通可以直白,不要客套話。
3. 任何數字、日期、人名,只能來自我給的材料。材料裡沒有的,
標註「待確認」,不要根據常識補全。
4. 你不確定的時候,明確說"我不確定",並指出需要我補充什麼資訊,
不要給一個看起來完整的答案。
5. 不要在回答開頭複述我的問題,直接給結果。注意第 3、4 條:那是 幻覺 的解藥,寫進 System Prompt 之後每一輪都自動生效,不用你在每條訊息裡重複。
第 5 條是效率條款。這類"不要做什麼"的約束在 System Prompt 裡價效比最高,因為它們跟具體任務無關,但你每次都嫌煩。
多輪對話到底是怎麼回事
這一節的資訊最容易讓人意外,值得單獨說清楚。
模型沒有記憶。 你在對話方塊裡聊到第 10 輪的時候,實際發生的事是:
第 10 次請求發出去的內容 =
System Prompt
+ 第 1 輪你說的 + 第 1 輪它答的
+ 第 2 輪你說的 + 第 2 輪它答的
+ …
+ 第 9 輪你說的 + 第 9 輪它答的
+ 你剛敲的這一條整包重發。 它不是"接著上次繼續想",是每次從頭讀一遍。
這一條解釋了你遇到過的所有怪現象:
- 越聊越慢、越聊越貴 —— 每輪的輸入都比上一輪長。
- 聊久了忘掉開頭的要求 —— 最早的內容被擠出上下文視窗了。
- 糾正過的錯誤又犯 —— 如果那次糾正已經被擠出去,等於沒說過。
- 中途改主意特別難 —— 你之前說的話還在包裡,一直在影響它。
- 換個新對話它就"失憶" —— 因為新對話裡那一包是空的。
通用的規矩往 System Prompt 裡搬,一次性解決"每次都要重說"。
一個任務一個對話。 別在一個對話裡連著幹三件不相干的事。
長對話裡定期重申關鍵約束。 一句"再確認一次:不要編造,拿不準標待確認"就夠。
它跑偏了就重開。 把已經拿到的好結果複製出來,作為材料貼進新對話——比在原對話裡反覆掰扯乾淨得多。
別依賴"記憶"功能。 有些產品會自動記住你的偏好,本質是替你把內容重新貼一遍。方便,但你不知道它到底記了什麼、什麼時候會丟。重要的規矩自己寫明。
順手認識兩個參數
如果你在用 API 或者帶進階設定的工具,會看到這兩個:
Temperature —— 挑下一個 Token 時的隨機程度。低(0 ~ 0.3)更穩定、更保守,適合要求格式一致的活;高(0.8 以上)更發散,適合起名、頭腦風暴。要"每次跑出來都一樣",就調到最低。
max_tokens —— 這次輸出的長度上限。輸出到一半突然斷掉,八成是這個設小了,不是模型不會寫。
下一步
08 · 上手:把一坨亂記錄變成能派活的紀要 —— 前面七章的東西,現在一次性用出來。