什麼是提示工程?給非工程師的實用指南
提示工程就是為 AI 模型撰寫並反覆調整指令,讓它穩定產出你想要的內容。提示詞是你交給模型的任何東西,可以是一個問題、一項任務、一些背景或範例。提示工程的重點在於審慎決定放入什麼內容、檢查產出的結果,並加以調整。它與其說是找神奇用語,不如說是清楚的溝通。
用 AI 建立東西時,為什麼它很重要
使用 AI 應用程式建構工具時,你的提示詞就是規格。AI 只能建立你描述過的東西,而當你的要求有漏洞時,它會用看似合理的猜測來補上。有時猜得很準,但常常不是你要的:表單上多了不需要的欄位、加了你不想要的功能,或是設計不符合你的使用對象。
清楚的提示詞能讓你少來回修正好幾輪,而每一輪都要花時間,通常也要花點數。如果你要在應用程式「內部」加入 AI,提示詞也很重要:你給那個模型的指令,會決定聊天機器人如何與客戶對話、拒絕哪些請求,以及是否忠於你提供的事實。針對應用程式建構,請參閱如何為 AI 應用程式建構工具撰寫提示詞。
日常生活中的比喻
想像你要向一位技術很好的自由工作者交代任務。對方從來沒見過你,對你的業務一無所知,而且你一說完就會開始動工。
「幫我做一個 logo」會得到「一個」logo。「為一間位於杜拜的兒童游泳學校設計 logo;親切但不幼稚;藍色與橘色;縮小後在泳帽上也要看得清楚;附上我們喜歡的兩個範例和一個不喜歡的範例」,則會得到很接近你想要的東西。
AI 模型就像那位自由工作者:能力強、速度快,但完全仰賴你的說明。提示工程就是學會寫出好的說明。
核心技巧
| 技巧 | 意思 | 範例 |
|---|---|---|
| 具體說明目標 | 說明你要什麼,以及原因。 | 「一個預約頁面,讓新客戶可以選擇 30 分鐘或 60 分鐘的課程。」 |
| 提供背景 | 對象是誰、已經有什麼、什麼最重要。 | 「使用者多半是用手機的年長客戶。」 |
| 定義「完成」 | 描述完成後的結果。 | 「完成的標準是客戶能預約,而我會收到電子郵件。」 |
| 設定限制 | 不該做什麼,以及界線。 | 「先不要加登入功能。維持現有的配色。」 |
| 展示範例 | 提供一個好結果的樣本。 | 「請用這種風格撰寫回覆:……」 |
| 指定格式 | 告訴它輸出結果的結構。 | 「請用表格回答,欄位為 X、Y、Z。」 |
| 拆成步驟 | 大型工作一次做一小部分。 | 「先做資料模型,再做表單,最後做電子郵件。」 |
| 先讓它提問或規劃 | 在修改前先取得計畫。 | 「開始建構前,請先列出你的問題和計畫。」 |
| 反覆調整 | 檢查結果並加以改進。 | 「表單可以運作了。現在把日期選擇器放大。」 |
實例:前後對照
修改前:
做一個健身房應用程式。
AI 必須猜測所有細節:會員還是員工使用?是團體課還是私人教練?要不要付款?你大概會得到一個通用的儀表板,裡面是虛構的訓練內容。
修改後:
為一間約有 150 位會員的小型拳擊健身房建立一個網頁應用程式。
誰會使用: 會員用手機預約課程。館主 Sam 用筆電管理課表。
會員可以: 查看本週課程(時間、教練、剩餘名額),並在開課前 2 小時之前預約或取消。
Sam 可以: 新增、編輯和取消課程,並查看每堂課有哪些人預約。
規則: 每堂課最多 12 人。同一時段不可重複預約。
暫時不做: 付款、訓練紀錄、手機應用程式。
風格: 深色背景、紅色強調色,按鈕要大到容易點選。
開始建構前,請列出任何不清楚的地方,並描述你會建立的頁面。
第二個提示詞並不是靠技巧,而是完整。它指明了使用者、動作、規則、暫時不做的項目,以及開始的方式。最後一行請 AI 先規劃並提問,能在寫任何程式碼之前就找出誤解。
應用程式內部的提示詞
當你的應用程式本身呼叫 LLM 時,你撰寫的提示詞會被執行很多次,服務很多使用者。同樣的原則適用,但還要多注意幾點:
- 系統提示詞: 長期指令,決定每一次回答,包含角色、語氣和規則。例如:「你是 Leaf & Pot 植物店的助理。只回答訂單、植物和配送的相關問題。」
- 依據事實(Grounding): 納入模型應該使用的事實,例如你的政策或商品目錄,並要求它以此為準。關於這為何重要,請參閱什麼是 LLM。
- 備用方案: 告訴它不確定時該怎麼做,例如:「如果答案不在提供的資訊中,請直接說明,並提供支援信箱。」
- 輸出格式: 如果你的程式需要讀取回答,請要求嚴格的格式,例如 JSON。
- 測試: 在真實使用者遇到之前,先試試棘手的輸入,例如無禮的訊息、離題的問題,以及試圖讓它忽略指令的嘗試(稱為提示詞注入)。
關鍵術語說明
| 術語 | 意思 |
|---|---|
| 提示詞(Prompt) | 你交給 AI 模型的輸入。 |
| 系統提示詞(System prompt) | 在對話開始前設定的長期指令。 |
| 背景(Context) | 放在提示詞中的背景資訊。 |
| 零樣本/少樣本(Zero-shot / few-shot) | 不提供範例提問,或提供幾個期望輸出的範例再提問。 |
| 思維鏈(Chain of thought) | 要求模型在回答前,一步一步推理問題。 |
| 依據事實(Grounding) | 提供來源資料,並要求模型以此為依據作答。 |
| 提示詞注入(Prompt injection) | 試圖覆寫模型指令的文字,例如「忽略先前的指令」。 |
| 上下文視窗(Context window) | 模型一次能處理的文字量。 |
| 反覆調整(Iteration) | 根據回傳的結果修正提示詞。 |
常見錯誤與迷思
- 尋找神奇用語。 「你是世界級的專家」遠不如清楚說明你實際需要什麼來得有用。
- 一次要求全部。 一次要求 20 個功能,會得到 20 個做到一半的功能。請分批建構。
- 描述解法,而不是問題。 「加一個有三欄的表格」不如「Sam 需要一眼看出每堂課有哪些人預約」來得有用。
- 沒說不該做什麼。 如果你暫時不要登入、付款或重新設計,請直接說明。
- 不檢查結果。 對照你的「完成」定義測試已建構的內容,再繼續下一步。
- 從頭重來,而不是微調。 通常一句簡短的後續指示(「大致可以,把 X 改掉」)會比重寫整個提示詞更有效。
- 把機密貼進提示詞。 除非工具有安全的儲存方式,否則不要把密碼或正式的 API 金鑰貼到聊天中。
可以向 AI 建構工具要求的事項
- 「開始建構前,請先問我任何問題,並給我看你的計畫。」
- 「用三句話重述你認為我想要的東西。」
- 「只修改預約表單,其他地方都不要動。」
- 「你有哪些假設是我沒有說明的?」
- 「把我的筆記整理成簡短的規格,包含使用者、功能、規則,以及「暫時不做」的項目。」請參閱如何用 AI 撰寫產品需求文件。
- 「建議我當初可以怎麼把那個要求說得更好。」
在 Mythex 中撰寫提示詞
Mythex 有三種聊天模式,適合這種工作方式:規劃(Plan) 用來先對做法達成共識,再開始任何修改;建構(Build) 用來進行修改;詢問(Ask) 用來提出不應修改檔案的問題。你可以附上截圖或設計稿作為背景,如果某次修改出了問題,還可以還原到檢查點。文件中關於有效提示詞和反覆調整的頁面有更多範例,而如何反覆調整 AI 建構的應用程式則說明了後續的調整流程。
常見問題
簡單來說,什麼是提示工程?
提示工程是為 AI 模型撰寫並反覆調整指令,讓它穩定產出你想要的結果。內容包括你問了什麼、提供了哪些背景、範例、限制條件,以及你希望它回傳的格式。
我需要什麼特殊技巧或神奇關鍵字嗎?
其實不太需要。現在的模型最能理解清楚、具體、條理分明的指令,這跟幫助同事理解工作的方式一樣。背景、範例,以及清楚描述完成後的成果,遠比特殊用語來得重要。
什麼是系統提示詞?
系統提示詞是在對話開始前交給模型的一組長期指令,例如它的角色、規則和語氣。應用程式用它來塑造每一次回答,使用者的訊息則是之後才送出。
AI 越來越聰明,還需要提示工程嗎?
較好的模型需要的變通做法會變少,但它還是無法讀心。說明你的目標、使用對象、限制條件,以及「完成」的樣子,永遠都能改善結果,因為模型只能根據你告訴它的內容來工作。