Google 提示工程白皮書 -- 讀書筆記
要了解 Prompt 如何下得更好,先看這本書!
2025/05/24
書的關鍵內容與順序
三種提示用於指導 LLM 生成文本
- 系統提示:定義 AI 模型該做什麼的「大局」設定。像是跟 AI 說,目前主要任務是「生成 SEO 文案」。
- 脈絡提示:提供目前對話或任務相關的細節或背景。像是跟 AI 說,目前任務需要了解美股、科技相關領域等。
- 角色提示:為模型分配一個特定角色或身份,讓模型生成的內容與角色的相關知識、行為一致。比方說,提示角色目前為「美股專業科技寫手」,叫他寫出來的 SEO 文章會更精準。
回退方法 Step-back
先生成一般概念(水平發想),將此生成作為「上下文」提示,進一步生成更深入的內容,會更具有主題性,且更加引人入勝。
- 傳統 Prompt:請幫我寫出一段具有挑戰性,且引人入勝的第一人稱設計遊戲的挑戰關卡。
- 回退方法 Prompt:
- 請你設計五種虛構的「故事情節設定」,以便後續設計引人入勝的第一人稱設計遊戲的挑戰關卡。
- 依照剛剛生成的五個世界觀設計,選擇其中三個,各自寫出 500 ~ 1000 字的「引人入勝的第一人稱設計遊戲的挑戰關卡」。
Chain of Thinking / Chain of Draft 思維鏈
-
Prompt 中特別提示:「讓我們一步步思考」。讓 AI 模型透過生成「中間推理」步驟提高 LLM 推理能力的技術。
- CoT(Chain of Thinking) 是指要求 AI 使用步驟式的方式生成結果。e.g. …,請依照步驟來推理結果,…。
- CoD(Chain of Draft) 也是一種 CoT,只是會要求 AI 「更精簡」產出思考步驟之成果。e.g. …,請簡單扼要列出解題草稿,只包含必要步驟,…。
-
特別適用於「推理邏輯」的需求。
- 如果用傳統 Prompt 方式來詢問「簡單的數學」,像是孫女與爺爺年齡倍數這種問題,AI 常常會算錯。個人經驗是即便像是清單數字加總,也常常會算錯…。
- 然而透過 CoT / CoD 方式請 AI 計算,算出來就會很準確了!
-
應用 CoD 的實務範例
小明和爺爺的年齡問題
Exported on 2025/5/24 at 11:52:55 [GMT+8] from Cursor (0.50.5)
User
今年小明 3 歲,再過 17 年後,他爺爺的歲數會是小明的 4 倍。請問小明和爺爺今年個別幾歲?
Cursor
我們可以用代數來解這個問題。
設小明今年的年齡為 ( x ),爺爺今年的年齡為 ( y )。
根據題目,我們知道:
- 小明今年 3 歲,所以 ( x = 3 )。
- 再過 17 年後,小明的年齡將是 ( x + 17 ),爺爺的年齡將是 ( y + 17 )。
- 在那時,爺爺的年齡會是小明的 4 倍,即 ( y + 17 = 4(x + 17) )。
將 ( x = 3 ) 代入第二個方程式:
[ y + 17 = 4(3 + 17) ]
計算右邊:
[ y + 17 = 4(20) = 80 ]
接下來,解出 ( y ):
[ y = 80 - 17 = 63 ]
所以,小明今年 3 歲,爺爺今年 63 歲。
總結:
- 小明今年 3 歲
- 爺爺今年 63 歲
User
今年小明 3 歲,再過 17 年後,他爺爺的歲數會是小明的 4 倍。請問小明和爺爺今年個別幾歲?
- 請簡單扼要列出解題草稿,只包含必要步驟。
Cursor
解題草稿:
- 設小明今年的年齡為 ( x ),爺爺今年的年齡為 ( y )。
- 根據題目,小明今年 3 歲: ( x = 3 )
- 再過 17 年後,小明的年齡為 ( x + 17 ),爺爺的年齡為 ( y + 17 )。
- 根據題目,爺爺的年齡會是小明的 4 倍: ( y + 17 = 4(x + 17) )
- 將 ( x = 3 ) 代入方程式: ( y + 17 = 4(3 + 17) )
- 計算右邊: ( y + 17 = 80 )
- 解出 ( y ): ( y = 80 - 17 = 63 )
- 結論: 小明今年 3 歲,爺爺今年 63 歲。
-
備註:可能隨著 AI 模型的發展,以後都不用額外加上如此提示。(像是 Cursor 可以直接設定 Thinking(思維鏈) 模式,就不用額外下 Prompt)
Prompt 最佳實踐
- 提供樣本:單樣本或少樣本,說白點就是提供 AI 明確優質的好範例。
- 簡潔設計:有時候講太多反而會讓 AI 混淆,「跟人溝通」也是這麼一般道理。e.g. 你現在是台灣國內旅遊專家。描述在苗栗,適合帶學齡前幼童參觀的好地方,依照熱門度排名列出來。
- 具體說明輸出「要求」:比方說要輸出排行前五名、市佔率前三大…等,而非空泛地說要生成出「大多數人都喜愛」的…。
Prompt 記錄的「迭代」優化
- 目標、輸入、配置和輸出
- 目標:想要嘗試達成的目標。e.g. 可以點擊以計數的功能。
- 輸入(Prompt):「請幫我完成一個可以點擊來計數的功能,實現於網頁中。」
- 配置:諸如 AI 模型的選用,採樣控制(Top-K, Top-P, 溫度等)
- Top-K: 讓生成的「文字接龍」過程,挑選最有可能的前 K 個字詞。e.g. Top-K=2,AI 生成過程只考慮前 2 個機率最高的詞彙做生成接龍。
- Top-P: 讓生成的「文字接龍」過程,挑選最有可能的共百分之 P 的字詞。e.g. Top-P=0.8,代表 80% 的常用字詞,AI 都會將其考慮進來。
- 輸出(成果):顧名思義就是下 Prompt 的結果。
- 紀錄 Prompt 及其結果的模板
-
方便記錄 Prompt 的輸入輸出等設定,以做迭代優化,以其重現 Prompt 的生成結果,讓 Prompt 生成更為可控與標準化。
-
模板:
字段 描述 名称 (Name) [您的提示的名称和版本] ([name and version of your prompt]) 目标 (Goal) [对此尝试目标的一句话解释] ([One sentence explanation of the goal of this attempt]) 模型 (Model) [使用的模型的名称和版本] ([name and version of the used model]) 温度 (Temperature) [0 - 1 之间的值] ([value between 0 - 1]) 令牌限制 (Token Limit) [数字] ([number]) Top-K [数字] ([number]) Top-P [数字] ([number]) 提示 (Prompt) [写下完整的提示] ([Write all the full prompt]) 输出 (Output) [写下输出或多个输出] ([Write out the output or multiple outputs])
-
總結
- 學習各種「提示」(Prompt)技巧。