
提示詞工程攻略:結構化 Prompt 與對話設計
從結構化 Prompt 的六大核心模塊出發,介紹意圖路由、上下文管理、狀態機等對話流程設計技巧,結合 Few-shot、Chain-of-Thought、JSON 強制輸出等進階手法,把 LLM 輸出從隨緣變成可控。
提示詞工程攻略:結構化 Prompt 與對話設計
每次讓 ChatGPT、Claude、Gemini 回答同一個問題,結果總是長得不一樣——同樣是「幫我寫一封客戶道歉信」,第一次產出 200 字、第二次 800 字,語氣從正式到口語隨機切換,甚至漏掉你指定的重點。這不是模型「不聰明」,而是 Prompt 本身缺乏結構。本文從結構化 Prompt 的六大模塊出發,再到多輪對話流程設計,教你把 LLM 輸出從「隨緣」變成「可控」。
一、為什麼 LLM 輸出總是不穩定
LLM 的本質是「根據上文預測下一個 token 的機率分佈」。當 Prompt 只給一句模糊指令時,模型會在巨大的可能性空間裡自由取樣,這就是不穩定的根源。常見成因有三個:
- 角色不明:沒有告訴模型「你是誰」,它會在不同專家人格間漂移,今天是行銷顧問、明天變詩人。
- 輸出格式未定義:模型不知道要回 JSON、清單、Markdown 還是純文字,自然每次隨緣。
- 成功標準缺失:沒有給「好答案」的判斷依據,模型只能用平均水準填空。
解法不是「更會聊天」,而是把 Prompt 當成一份工程規格書來寫——這就是結構化 Prompt。
二、結構化 Prompt:六大核心模塊
一個高穩定性的 Prompt 通常包含六個區塊(LangGPT、OpenAI 官方指南、阿里雲 Model Studio 文生文指南都採用類似框架):
- Role(角色):明確身份與專業領域,例如「你是一位 10 年經驗的港股分析師,擅長技術面與基本面結合」。
- Background(背景):交代任務緣由、使用場景、目標讀者。
- Task(任務):用動詞開頭的具體指令,避免「幫我做點東西」這類模糊描述。
- Constraints(限制):列出硬性規則,例如「字數 300 字內、不可使用 emoji、必須包含數據」。
- Output Format(輸出格式):指定結構,例如「先給結論、再列三點理由、最後附風險提示」。
- Examples(示例):提供 1-2 個輸入輸出對,少量樣本(few-shot)能顯著拉高格式遵循率。
實測顯示,加入明確的格式說明與示例,可讓結構化輸出的遵循率從 60% 左右提升到 90% 以上(阿里雲、OpenAI 官方指南的多項實測都觀察到類似幅度)。

三、對話流程設計:把單輪 Prompt 變成系統
真實應用很少只問一輪。客服機器人、研究助理、AI Agent 都需要多輪對話,這時光靠「寫得好的單輪 Prompt」不夠,還需要設計對話流程(Dialogue Flow)。三個核心機制:
- 意圖路由(Intent Routing):先用 LLM 或分類器判斷用戶問題屬於哪條分支(查訂單、技術問題、退款請求),再送進對應的 Prompt 模板。OpenAI 在官方指南中推薦「使用意圖分類來識別與用戶查詢最相關的指令」,能有效避免「一個 Prompt 走天下」的混亂。
- 上下文管理(Context Management):長對話會把對話歷史塞滿 token,需要定期摘要、過濾或滑動視窗。例如每 10 輪總結一次前文重點,壓成 200 字內的「對話記憶」再帶入下一輪;對長文檔則用 RAG(檢索增強生成)只取相關段落。
- 狀態機與工具呼叫:當對話涉及多步任務(先查庫存、再生成報價、最後下單),要把流程拆成節點——每個節點是一個結構化 Prompt,節點之間透過變量(用戶 ID、訂單編號、查詢結果)傳遞狀態。Function Calling / Tool Use 就是把這種流程工程化的標準介面。
四、進階技巧:Few-shot、CoT 與 JSON 強制輸出
- Few-shot(少樣本提示):在 Prompt 中放 2-3 個輸入輸出範例,比純指令遵循率平均提升 20-30%。範例要涵蓋「正常情況」與「邊界情況」,例如分類任務中既要給標準案例,也要給模糊案例。
- Chain-of-Thought(思維鏈):要求模型「先一步步推理,最後再給結論」,對數學、邏輯、多步規劃任務特別有效。變體包括 ReAct(推理 + 行動交錯)、Self-Ask(讓模型自己追問子問題)。
- JSON / Schema 強制輸出:透過
response_format: { type: "json_schema" }(OpenAI)、Structured Output(Google Gemini)或正則校驗,把輸出鎖死在結構化格式。這一步是從「可控」走向「可串接 API」的關鍵——下游程式不用再寫一堆 if-else 解析自由文字。
五、常見陷阱與排查清單
即使按上述框架寫,仍可能踩坑。以下是 5 個最常見的失敗模式與對應排查動作:
- 指令衝突:同時要求「簡潔」與「詳細說明」——刪除其一,或拆成兩個層級(如「總結一句話,再分點展開」)。
- 示例污染:示例本身有錯,模型會學到錯誤模式。示例要經過驗證,並明確標註「這是正確輸出」。
- Token 溢出:把整本 PDF 塞進 Prompt,導致遺忘或截斷。用 RAG 只取相關段落,並設定最大上下文長度。
- 溫度(temperature)誤用:創意任務用 0.7-1.0,數據抽取、分類任務用 0。溫度不是越高越聰明,而是越高越隨機。
- 缺少評測:寫完 Prompt 就上線,沒有 A/B 測試。建立 20-30 條測試集(含正常、邊界、對抗樣本),每次改 Prompt 都跑一遍並記錄遵循率。
六、實戰模板:可直接複製的結構化 Prompt
把上面的知識濃縮成一個通用模板,直接套用:
# Role
你是一位 [具體身份],擅長 [專業領域],目標讀者是 [受眾]。
# Background
[為什麼要做這件事、用在哪個場景]
# Task
請根據用戶輸入,完成 [具體動作]。
# Constraints
- 字數限制
- 必須包含 / 必須排除的內容
- 語氣與風格要求
# Output Format
[Markdown / JSON / 清單 / 表格]
# Examples
輸入:...
輸出:...把這份模板保存下來,每次寫新 Prompt 時填空——這本身就是「對話流程設計」的第一步:把隱性經驗變成可複用資產。當 Prompt 有了結構、對話有了流程,LLM 才會從「偶爾驚豔的玩具」變成「每天能交付的生產工具」。