原文: https://www.kaggle.com/whitepaper-prompt-engineering
文字提示 (text prompt) 是模型用來預測特定輸出的主要輸入方式,有時也會伴隨圖像等其他模態 (modalities)。雖然人人都能撰寫提示,但打造最有效的提示可能相當複雜。
提示的效果受到多種因素影響,包含使用的模型 (model)、模型的訓練資料 (training data)、模型配置 (model configurations)、用字遣詞 (word-choice)、風格語氣 (style and tone)、結構 (structure) 以及上下文 (context) 等。
因此提示工程 (prompt engineering) 是一個迭代的過程 (iterative process)。不恰當的提示可能導致模糊、不準確的回應,並阻礙模型提供有意義輸出的能力。
回顧 LLM 的運作方式:它是一個預測引擎 (prediction engine)。模型接收序列文字 (sequential text) 作為輸入,然後根據其訓練數據預測下一個應該出現的 token。LLM 被操作化 (operationalized) 以反覆執行此過程,將先前預測的 token 添加到序列文字的末尾,以預測下一個 token。下一個 token 的預測是基於先前 tokens 中的內容與 LLM 在訓練期間所學習到的內容之間的關係。
當您撰寫提示時,您正試圖設定 LLM 以預測正確的 tokens 序列。Prompt engineering 是設計高品質提示的過程,用以引導 LLM 產生準確的輸出。此過程涉及調整 (tinkering) 以找到最佳提示,優化提示長度 (prompt length),並評估提示的寫作風格和結構與任務的關係。在自然語言處理 (natural language processing) 和 LLM 的脈絡下,提示是提供給模型的輸入,用以生成回應或預測。
這些提示可用於實現各種類型的理解和生成任務,例如文字摘要 (text summarization)、資訊提取 (information extraction)、問答 (question and answering)、文字分類 (text classification)、語言或程式碼翻譯 (language or code translation)、程式碼生成 (code generation) 以及程式碼文件 (code documentation) 或推理 (reasoning)。
進行 prompt engineering 時,您將從選擇模型開始。提示可能需要針對您的特定模型進行優化,無論您使用的是 Vertex AI 中的 Gemini 語言模型、GPT、Claude,還是像 Gemma 或 LLaMA 這樣的開源模型 (open source model)。除了提示本身,您還需要調整 LLM 的各種配置。
本節說明在選擇模型後,需要找出模型的配置。大多數 LLM 都帶有各種配置選項,用於控制 LLM 的輸出。有效的 prompt engineering 需要針對您的任務最佳地設定這些配置。
ReAct
,尤其重要,在這些技巧中,LLM 在您想要的回應之後會持續發出無用的 tokens。Temperature
、top-K
和 top-P
是最常見的配置設定,用於決定如何處理預測的 token 機率以選擇單一輸出 token。Temperature
控制 token 選擇中的隨機程度 (degree of randomness)。
temperature
控制可以類似於機器學習中使用的 softmax
函數來理解。低的 temperature
設定反映了低的 softmax temperature (T)
,強調具有高確定性的單一首選溫度。高的 Gemini temperature
設定則像高的 softmax temperature
,使得圍繞所選設定的更廣泛溫度範圍更可接受。這種增加的不確定性適用於不需要嚴格、精確溫度的情境,例如在實驗創意輸出時。Top-K
和 top-P
(也稱為 nucleus sampling
)是 LLM 中使用的兩種取樣設定,用於限制預測的下一個 token 來自具有最高預測機率的 tokens。與 temperature
類似,這些取樣設定控制生成文本的隨機性和多樣性。
top-K
會使模型輸出更具創意和多樣性;較低的 top-K
會使模型輸出更受限和更基於事實。top-K
為 1 等同於 greedy decoding
。greedy decoding
) 到 1 (LLM 詞彙表中的所有 tokens)。top-K
和 top-P
的最佳方法是實驗這兩種方法(或兩者結合),看看哪種方法能產生您想要的結果。top-K
、top-P
、temperature
以及要生成的 tokens 數量,取決於具體的應用和期望的結果,且這些設定會相互影響。理解您選擇的模型如何結合不同的取樣設定也很重要。temperature
為 0: top-K
和 top-P
變得無關緊要,最可能的 token 成為下一個預測 token。temperature
極高 (例如 >1,通常到 10 位數): temperature
變得無關緊要,任何通過 top-K
和/或 top-P
標準的 tokens 都會被隨機取樣以選擇下一個預測 token。top-K
為 1: temperature
和 top-P
變得無關緊要。只有一個 token 通過 top-K
標準,該 token 即為下一個預測 token。top-K
極高 (例如 LLM 詞彙表的大小): 任何具有非零機率成為下一個 token 的 token 都將符合 top-K
標準,沒有 token 會被篩選掉。top-P
為 0 (或非常小的值): 大多數 LLM 取樣實現將僅考慮最可能的 token 以符合 top-P
標準,使得 temperature
和 top-K
無關緊要。top-P
為 1: 任何具有非零機率成為下一個 token 的 token 都將符合 top-P
標準,沒有 token 會被篩選掉。temperature
為 0.2,top-P
為 0.95,top-K
為 30,可以得到相對連貫且具有一定創意的結果。temperature
為 0.9,top-P
為 0.99,top-K
為 40。temperature
為 0.1,top-P
為 0.9,top-K
為 20。temperature
從 0 開始。temperature
、top-K
、top-P
和輸出 tokens)時,LLM 可能會生成不太相關的文本。temperature
和 top-K
/top-P
設定而加劇。temperature
和 top-K
/top-P
值,以找到確定性和隨機性之間的最佳平衡。LLM 經過調整以遵循指示,並在大量數據上進行訓練,因此它們可以理解提示並生成答案。但 LLM 並非完美無缺;您的提示文本越清晰,LLM 就越能更好地預測下一個可能的文本。此外,利用 LLM 訓練方式和運作方式的特定技巧,將有助於您從 LLM 獲得相關結果。
zero-shot
提示是最簡單的提示類型。它僅提供任務的描述和一些供 LLM 開始的文本。此輸入可以是任何東西:一個問題、一個故事的開頭或指示。名稱 zero-shot
代表「沒有範例 (no examples)」。POSITIVE
temperature
應設定為較低的值,因為不需要創意。使用 gemini-pro 預設的 top-K
和 top-P
值,這實際上禁用了這兩個設定。注意生成的輸出。"disturbing" 和 "masterpiece" 這兩個詞應使預測稍微複雜一些,因為它們出現在同一個句子中。zero-shot
無法奏效時,您可以在提示中提供示範 (demonstrations) 或範例 (examples),這就引出了 one-shot
和 few-shot
prompting。one-shot
。其思想是模型有一個可以模仿以最好地完成任務的範例。one-shot
類似,但多個期望模式的範例增加了模型遵循該模式的機會。few-shot
prompting 所需的範例數量取決於幾個因素,包括任務的複雜性、範例的品質以及您使用的生成式 AI (gen AI) 模型的能力。作為一般經驗法則,您應該為 few-shot
prompting 使用至少三到五個範例。但是,對於更複雜的任務,您可能需要使用更多範例,或者由於模型的輸入長度限制,您可能需要使用較少範例。System
, contextual
和 role prompting
都是用於引導 LLM 如何生成文本的技術,但它們專注於不同的方面。
system
、contextual
和 role prompting
之間可能存在相當大的重疊。例如,一個為系統分配角色的提示,也可能帶有上下文。system
、contextual
和 role prompts
提供了一個設計具有明確意圖的提示的框架,允許靈活組合,並更容易分析每種類型的提示如何影響語言模型的輸出。1. System prompting
System prompts
用於生成符合特定需求的輸出。名稱「system prompt」實際上代表「向系統提供額外任務」。NEGATIVE
2. Role prompting
Role prompting
是一種 prompt engineering 技術,涉及為 gen AI 模型分配特定角色。這有助於模型生成更相關和資訊更豐富的輸出,因為模型可以根據已分配的特定角色來製作其回應。3. Contextual prompting
contextual prompts
,您可以幫助確保您的 AI 互動盡可能無縫和高效。模型將能夠更快地理解您的請求,並能生成更準確和相關的回應。Step-back prompting
是一種通過提示 LLM 首先考慮與手頭特定任務相關的一般性問題,然後將該一般性問題的答案提供給後續針對特定任務的提示中,從而提高性能的技術。這種退一步 (step back) 允許 LLM 在嘗試解決特定問題之前,激活相關的背景知識和推理過程。step-back prompting
技巧可以提高提示的準確性。Chain of Thought (CoT)
prompting 是一種通過生成中間推理步驟 (intermediate reasoning steps) 來提高 LLM 推理能力的技術。這有助於 LLM 生成更準確的答案。您可以將其與 few-shot prompting
結合使用,以在需要響應前進行推理的更複雜任務上獲得更好的結果,因為這對於 zero-shot chain of thought
來說是一個挑戰。63 years old
(錯誤答案)Self-consistency
結合了取樣 (sampling) 和多數決 (majority voting) 來生成多樣化的推理路徑並選擇最一致的答案,從而改進了僅使用簡單「greedy decoding」策略的 CoT 的有效性。它提高了 LLM 生成回應的準確性和連貫性。Self-consistency
提供了一個答案正確的pseudo-probability,但成本較高。zero-shot chain of thought
提示,以查看每次提交後的回應是否不同。注意郵件中的友好語氣、用詞選擇和諷刺意味,這些都可能誤導 LLM。Chains of Thoughts
,並選擇最常出現的答案(例如「IMPORTANT」),我們可以從 LLM 獲得更一致正確的答案。此範例顯示了 self-consistency prompting
如何通過考慮多個視角並選擇最一致的答案來提高 LLM 回應的準確性。Tree of Thoughts (ToT)
概括了 CoT prompting
的概念,它允許 LLM 同時探索多個不同的推理路徑,而不是僅僅遵循單一的線性思維鏈。ToT
通過維護一個思維樹來工作,其中每個思維 (thought) 代表一個連貫的語言序列,作為解決問題的中間步驟。ToT
特別適用於需要探索的複雜任務。Input
-> Thought
(方框) -> … (多個 Thought 方框) -> Thought
(方框) -> Output
Input
-> 分支出多個初始 Thought
(綠色和淺紅色方框)。Thought
可以進一步分支成更多的 Thought
。Output
是從樹中某條路徑推導出來的。Reason and act (ReAct)
prompting 是一種使 LLM 能夠通過結合自然語言推理與外部工具 (external tools)(如搜索 (search)、程式碼解釋器 (code interpreter) 等)來解決複雜任務的範式。它允許 LLM 執行某些操作,例如與外部 API 互動以檢索資訊,這是朝向代理建模 (agent modeling) 的第一步。ReAct
模仿人類在現實世界中的運作方式:我們進行口頭推理,並可以採取行動來獲取資訊。ReAct
prompting 通過將推理 (reasoning) 和行動 (acting) 結合到一個思維-行動循環 (thought-action loop) 中來工作。 Executing ReAct Agent in the terminal:
Entering new AgentExecutor chain...
Metallica has 4 members.
Action: Search
Action Input: How many kids does James Hetfield have?
Observation: three children
Thought: 1/4 Metallica band members have 3 children
Action: Search
Action Input: How many kids does Lars Ulrich have?
Observation: 3
Thought: 2/4 Metallica band members have 6 children
Action: Search
Action Input: How many kids does Kirk Hammett have?
Observation: Hammett has been married to his second wife Lani since 1998. They have two sons, Angel (b. September 29, 2006) and Vincenzo (b. June 28, 2008).
Thought: 3/4 Metallica band members have 8 children
Action: Search
Action Input: How many kids does Robert Trujillo have?
Observation: 2
Thought: 4/4 Metallica band members have 10 children
Final Answer: 10
說明: ReAct 進行了五次搜索鏈。LLM 正在抓取 Google 搜索結果以找出樂隊成員的名字。然後,它將結果列為觀察結果,並鏈接下一次搜索的思路。最終,它確定 Metallica 有四名樂隊成員,然後搜索每個成員以請求孩子的總數並加總。
ReAct
prompting 在實踐中需要理解您必須持續重新發送先前的提示/回應(並修剪額外生成的內容),以及使用適當的範例/指示來設定模型。Automatic Prompt Engineering (APE)
是一種自動化撰寫提示過程的方法。該方法不僅減輕了人工輸入的需求,還增強了模型在各種任務中的性能。BLEU (Bilingual Evaluation Understudy)
或 ROUGE (Recall-Oriented Understudy for Gisting Evaluation)
)對候選指令進行評分來評估所有指令。Gemini 主要專注於基於文本的提示,這也包括編寫返回程式碼的提示。
bash
文本包裝器)複製並粘貼到一個名為 rename_files.sh
的新文件中。. rename_files.sh
。它會要求輸入資料夾名稱,例如 test
,然後按 Enter。Files renamed successfully.
。查看測試資料夾,注意到所有文件都已完美重命名為 draft_filename.txt
。file_renamer.py
。通過打開終端窗口並執行以下命令來測試程式碼:python file_renamer.py
。toUpperCase
函數將 prefix
轉換為大寫,但該函數未定義。要解決此問題,可以使用字符串類的 upper()
方法。toUpperCase
):Multimodal prompting
是一個獨立的問題,它指的是一種使用多種輸入格式來引導大型語言模型的技術,而不是僅僅依賴文本。這可以包括文本、圖像、音頻、程式碼甚至其他格式的組合,具體取決於模型的能力和手頭的任務。one shot
/ few shot
)範例。BEFORE: I am visiting New York right now, and I'd like to hear more about great locations. I am with two 3 year old kids. Where should we go during our vacation?
AFTER REWRITE: Act as a travel guide for tourists. Describe great places to visit in New York Manhattan with a 3 year old.
Act, Analyze, Categorize, Classify, Contrast, Compare, Create, Describe, Define, Evaluate, Extract, Find, Generate, Identify, List, Measure, Organize, Parse, Pick, Predict, Provide, Rank, Recommend, Return, Retrieve, Rewrite, Select, Show, Sort, Summarize, Translate, Write.
system
或 context prompting
)可以幫助模型專注於相關內容,從而提高整體準確性。DO NOT: Generate a blog post about video game consoles.
DO: Generate a 3 paragraph blog post about the top 5 video game consoles. The blog post should be informative and engaging, and it should be written in a conversational style.
DO NOT: Generate a 1 paragraph blog post about the top 5 video game consoles. Do not list video game names.
DO: Generate a 1 paragraph blog post about the top 5 video game consoles. Only discuss the console, the company who made it, the year, and total sales.
"Explain quantum physics in a tweet length message."
zero shot
, few shot
, system prompt
)。What was the Sega Dreamcast and why was it such a revolutionary console?
The Sega Dreamcast was a sixth-generation video game console released by Sega in 1999. It...
Write a single paragraph that describes the Sega Dreamcast console and explains why it was so revolutionary.
few-shot prompting
展示瞭如何返回結構化輸出的範例。JSON Schemas
發揮作用的地方。[name and version of your prompt]
[One sentence explanation of the goal of this attempt]
[name and version of the used model]
[value between 0 - 1]
[number]
[number]
[number]
[Write all the full prompt]
[Write out the output or multiple outputs]