無規矩不成方圓
正式開始之前,大家是否還記得小學時,老師常常要我們寫信給「李明」?
開頭往往要寫「你好」,結尾有時還會加上「此致、敬禮」等格式。尤其是考試時,少一項就要扣分。
那時總在想,為什麼要這麼繁瑣?像寫小紙條一樣,把想說的話寫出來不好嗎?
工作以後,我經常需要寫電子郵件。一開始沒有按照固定格式寫,後來發現,一著急就很容易遺漏。
不是漏了自己的名字,就是漏了日期,或是忘記告訴對方下一步要做什麼。
久而久之,我又開始像小時候那樣,按照固定順序檢查郵件。即使很忙,也不容易漏掉關鍵內容。
同樣的事情也出現在許多產業。護理師、空服員和設備操作員會按照清單反覆確認。看起來像是在做一件很簡單的事,為什麼還要這樣?
因為人總會有疏漏。一套固定流程不能保證永遠不出錯,但可以減少遺漏。
寫 Prompt 也是如此。
那我們能不能準備一份參考範本,在任務複雜時照著檢查一遍?
可以。
但它只是減少遺漏的工具,不是適合所有模型、所有任務的「最佳公式」。
一個好的 Prompt 應該包含什麼?
是不是把所有資訊都塞進去,越詳細越好?
當然不是。
記得《武林外傳》中,燕小六經常問:「姓嘛?叫嘛?從哪來?到哪去?家裡幾口人?人均幾畝地?地裡幾頭牛?」
聽起來問得非常具體,但其中很多資訊和眼前的事情沒有關係。資訊太多,有時反而會造成干擾。
資訊太少,模型只能猜。沒有關係的資訊太多,也會造成干擾。
我們先看一個現實情境:請張三幫忙買兩個牛肉餅。
買兩個牛肉餅
假設完整要求是:
請張三現在去樓下的羅森便利商店,買兩個每個 7 元的牛肉餅。
牛肉餅需要加熱,分別裝進兩個紙袋,並在 20 分鐘內送回來。
這裡有哪些關鍵資訊?
首先,要誰去買?必須有一個明確的人。站在人群中只說「幫我買兩個牛肉餅」,張三不知道是不是在跟他說。這裡是角色或對象。
去哪裡,什麼時候去?否則張三可能明天才買,或去了另一家店。這裡是行動的時間和地點。
買什麼、買幾個、多少錢?這裡是任務和限制。
要不要加熱?這裡是具體操作。
怎麼裝?這裡是交付格式。
多久送回來?這裡也是限制條件。
假如我們只告訴張三:「去幫我買點東西。」
他能剛好買回我們心裡想的兩個牛肉餅嗎?
不排除這種可能。如果真的一項不差,那張三確實很了解我們。
但大多數時候,他只能繼續問,或自己猜。
人尚且如此,那 AI 呢?
如果想讓模型寫一篇小說,卻只說「幫我寫一篇小說」,得到的內容大概也不會剛好符合腦中的構想。
一個可以參考的結構
複雜 Prompt 可以從下面幾個部分中選擇需要的內容:
Role(角色)
說明希望模型從什麼視角工作,或結果是給誰看的。
角色不會讓模型真的獲得某種職業資格,也不會「屏蔽」其他領域的知識。真正有用的是角色背後的具體標準,例如「用程式碼審查者的方式找風險」,而不是「你是全世界最厲害的工程師」。
Skills(需要用到的能力)
列出任務需要哪些能力,例如摘要、分類、翻譯或程式碼解釋。
這不會替模型安裝新技能,只是幫助它把注意力放在任務需要的處理方式上。許多簡單任務可以省略這一項。
Action(行動)
直接告訴模型需要完成什麼。
例如:根據會議記錄擷取待辦事項;檢查程式碼中的錯誤;根據主題寫一份故事大綱。
Constraints(限制)
說明不能做什麼、資訊不足時如何處理,以及長度、語言、安全和事實邊界。
例如:原文沒有的資訊不要補充;不確定時寫「未提供」;使用中文回覆。
Format(格式)
說明希望得到 Markdown、表格、JSON,還是固定欄位。
Example(範例)
當規則很抽象時,提供一個輸入和輸出範例,幫助模型理解對應關係。
把結構放進一條 Prompt
# Role
科幻故事編輯
## Action
根據使用者給出的主題,提供角色設定、故事衝突和三段式大綱。
## Constraints
- 不使用現有作品中的知名角色或情節。
- 資訊不足時先列出需要確認的問題,不自行補全。
- 世界觀可以虛構,但內部規則要前後一致。
## Format
使用 Markdown,按照「角色、衝突、大綱、待確認問題」四個部分輸出。
## Example
角色:一名負責修復星際航線的工程師。
衝突:一次維修任務揭露了兩個文明之間被隱藏的歷史。
這個範本不是必須照抄的標準答案。
如果只是請模型把一句話改通順,不需要把六個部分都寫一遍。如果任務涉及長篇材料、多人協作或交給程式繼續處理,結構才會越來越有價值。
簡單任務,簡單寫。
複雜任務,再用範本檢查有沒有遺漏。
上一章: 獲得優質輸出的六大技巧
下一章: 讓模型輸出 JSON 資料