目錄
1.什么時候適合用提示工程?
2.如何進行提示工程
2.1? 使用提示模板
2.1.1??使用提示模板和變量
2.1.2? 何時使用提示模板和變量
2.1.3?提示模板示例
2.2 保持清晰和直接
2.2.1 如何保持清晰、具有上下文和具體
2.2.2 示例
?2.3?使用示例(多示例提示)來引導 Claude 的行為
2.3.1 為什么要使用示例?
2.3.2 制作有效的示例
2.4 讓 Claude 思考(思維鏈提示)以提高性能
2.4.1 實施思維鏈之前
2.4.2 如何提示思考
2.5 使用XML標簽構建你的提示詞
2.5.1 為什么要使用XML標簽?
2.5.2?標簽使用最佳實踐
2.5.3 示例
2.6?通過系統提示給Claude賦予角色
2.6.1?為什么要使用角色提示?
2.6.2 示例
2.7 預填充 Claude 的回復以獲得更好的輸出控制
2.7.1 示例
2.8 鏈式復雜提示以獲得更強的性能
2.8.1 為什么要鏈式提示?
2.8.2?何時使用鏈式提示
2.8.3 如何鏈式提示
2.8.3.1?鏈式工作流示例
2.8.3.2?高級:自我糾正鏈
2.9 長文本提示的基本技巧
3.Claude 4 提示工程最佳實踐
3.1 一般原則
3.2 針對具體情況的指導
3.2.1?控制響應的格式
3.2.2?利用思考和交叉思考能力
3.2.3?優化并行工具調用
3.2.4?減少代理編碼中的文件創建
3.2.5 增強視覺和前端代碼生成
3.2.6?避免專注于測試通過和硬編碼
??雖然這些技巧廣泛適用于所有 Claude 模型,但您也可以應用于其他模型,邏輯都是相通的。
本指南假設您已:
-
明確定義用例的成功標準
-
對這些標準進行實證檢驗的一些方法
-
您想要改進的初稿提示
如果沒有,我們強烈建議您先花時間建立這個標準。
本指南重點介紹可通過快速工程控制的成功標準。并非所有成功標準或失敗評估都能通過快速工程得到最佳解決。例如,有時可以通過選擇其他模型更輕松地改善延遲和成本。
1.什么時候適合用提示工程?
-
Prompt engineering是用來優化模型輸出質量、風格、結構等與文本內容直接相關的指標的工具。
-
有些性能指標(如速度、成本)與提示詞關系不大,改善它們的最佳方法可能是換模型配置或算法。
-
不要試圖用 prompt 改寫去解決所有類型的問題,要先判斷問題的性質,再選方法。
問題類型 | 是否適合用 Prompt 調整 | 更可取的方法 |
---|---|---|
輸出結構不符格式 | ? 是 | 調整 prompt 中的指令、示例 |
內容邏輯錯誤/不完整 | ? 是 | 提供更多上下文、明確任務目標 |
指令遵循度低 | ? 是 | 增強提示詞的明確性和限制條件 |
響應太慢(延遲高) | ? 否 | 選擇響應速度更快的模型/部署方式 |
成本太高(token費用高) | ? 否 | 選更便宜的模型、縮短上下文、壓縮輸入文本 |
模型知識缺口 | 部分 | 補充外部知識(RAG)、改模型 |
提示工程與微調:
提示工程比其他模型行為控制方法(例如微調)速度更快,并且通常能夠在更短的時間內實現性能飛躍。以下是一些考慮即時工程而非微調的理由:
- 資源效率:微調需要高端 GPU 和大內存,而快速工程只需要文本輸入,因此更加節省資源。
- 成本效益:對于基于云端的 AI 服務,微調會產生大量成本。Prompt Engineering 使用基礎模型,通常成本更低。
- 維護模型更新:當提供商更新模型時,經過微調的版本可能需要重新訓練。提示通常可以跨版本運行,無需更改。
- 節省時間:微調可能需要數小時甚至數天。相比之下,快速工程幾乎可以立即獲得結果,從而快速解決問題。
- 極少的數據需求:微調需要大量特定于任務的標記數據,而這些數據可能稀缺或昂貴。快速工程適用于少樣本學習甚至零樣本學習。
- 靈活性和快速迭代:快速嘗試各種方法,調整提示,并立即看到結果。這種快速實驗很難進行微調。
- 領域適應:通過在提示中提供特定領域的上下文,輕松地將模型適應新領域,而無需重新訓練。
- 理解力提升:快速工程比微調更有效,可以幫助模型更好地理解和利用檢索到的文檔等外部內容
- 保留常識:微調可能會帶來災難性的遺忘,導致模型丟失常識。及時的工程設計可以保留模型的廣泛功能。
- 透明度:提示符易于理解,準確顯示模型接收到的信息。這種透明度有助于理解和調試。
2.如何進行提示工程
本節中的提示工程頁面已按最廣泛有效的技術到更專業的技術進行組織。在進行性能故障排除時,我們建議您按順序嘗試這些技術,盡管每種技術的實際效果取決于您的用例。
2.1? 使用提示模板
2.1.1??使用提示模板和變量
使用 Claude 部署基于 LLM 的應用程序時,您的 API 調用通常包含兩種類型的內容:
-
固定內容:在多次交互中保持不變的靜態指令或上下文
-
可變內容:隨每個請求或對話而變化的動態元素,例如:
-
用戶輸入
-
檢索增強生成 (RAG) 的檢索內容
-
對話上下文,例如用戶帳戶歷史記錄
-
系統生成的數據(例如從其他獨立調用中輸入的工具使用結果)提供給 Claude
-
提示模板將這些固定部分和可變部分組合在一起,并使用占位符來表示動態內容。
2.1.2? 何時使用提示模板和變量
當您希望提示的任何部分在另一次調用 Claude 時重復出現時,您應該始終使用提示模板和變量(僅通過 API 或Anthropic?Console。claude.ai目前不支持提示模板或變量)。
提示模板有幾個好處:
-
一致性:確保在多個交互中提示的結構一致
-
效率:輕松替換變量內容,無需重寫整個提示
-
可測試性:僅通過更改變量部分即可快速測試不同的輸入和邊緣情況
-
可擴展性:隨著應用程序復雜性的增加,簡化提示管理
-
版本控制:通過僅關注提示的核心部分(與動態輸入分開),輕松跟蹤提示結構隨時間的變化
2.1.3?提示模板示例
讓我們考慮一個將英文文本翻譯成西班牙文的簡單應用。翻譯后的文本會有所不同,因為您預計該文本會在用戶操作或調用 Claude 時發生變化。該翻譯文本可以從數據庫或用戶輸入中動態檢索。
因此,對于您的翻譯應用程序,您可以使用這個簡單的提示模板:
將此文本從英語翻譯為西班牙語:{{text}}
2.2 保持清晰和直接
在與 Claude 交互時,可以將其視為一位聰明但非常新的員工(有健忘癥),需要明確的指示。像任何新員工一樣,Claude 并不了解你的規范、風格、準則或首選的工作方式。 你越是精確地解釋你想要什么,Claude 的回應就會越好。
??清晰提示的黃金法則
向同事展示你的提示,最好是對任務了解很少的人,讓他們按照指示操作。如果他們感到困惑,Claude 也可能會感到困惑。
2.2.1 如何保持清晰、具有上下文和具體
-
為 Claude 提供上下文信息:?就像你在了解更多上下文的情況下可能會更好地完成任務一樣,Claude 在有更多上下文信息的情況下也會表現得更好。上下文信息的一些例子:
-
任務結果將用于什么
-
輸出內容面向什么受眾
-
任務屬于什么工作流程,以及這個任務在工作流程中的位置
-
任務的最終目標,或者成功完成任務是什么樣子
-
-
具體說明你希望 Claude 做什么:?例如,如果你只想要 Claude 輸出代碼而不要其他內容,就要明確說明。
-
按順序提供指示:?使用編號列表或項目符號,以更好地確保 Claude 按照你想要的方式執行任務。
2.2.2 示例
示例一:匿名化客戶反饋
注意,在不清晰的提示示例中,Claude 仍然會犯錯誤,比如保留了客戶的姓名。
角色 | 不清晰的提示 | 清晰的提示 |
用戶 | 請從這些客戶反饋信息中刪除所有個人身份信息:{{FEEDBACK_DATA}} | 你的任務是為我們的季度審查匿名化客戶反饋。 指示: 1. 將所有客戶姓名替換為”CUSTOMER_[ID]“(例如,“Jane Doe” → “CUSTOMER_001”) 2. 將電子郵件地址替換為”EMAIL_[ID]@example.com” 3. 將電話號碼編輯為”PHONE_[ID]“ 4. 如果消息提到特定產品(如”AcmeCloud”),保持不變 5. 如果沒有發現個人身份信息,逐字復制消息 6. 僅輸出經處理的消息,用”---“分隔 要處理的數據:{{FEEDBACK_DATA}} |
助手(Claude 的回應) | 以下是匿名化的客戶反饋信息: | CUSTOMER_001:我使用你們的軟件已經多年了,一直都很好。但最近,AcmeCloud 經常崩潰。請修復它! |
示例二:制作營銷電子郵件活動
注意,在模糊的提示中,Claude 會編造細節來填補缺乏上下文的空白。
角色 | 模糊的提示 | 具體的提示 |
---|---|---|
用戶 | 為我們的新 AcmeCloud 功能寫一封營銷郵件 | 你的任務是為我們第三季度 AcmeCloud 功能發布制作一封有針對性的營銷郵件。 |
助手(Claude 的回應) | 這是我們新功能的營銷郵件草稿: | 主題行:AcmeCloud:企業級安全性與實時團隊協作的完美結合 |
示例三:事件響應
注意,在模糊的提示中,Claude 輸出了多余的文本和不同的格式。
角色 | 模糊的提示 | 詳細的提示 |
---|---|---|
用戶 | 分析這份 AcmeCloud 停機報告并總結關鍵點。 | 分析這份 AcmeCloud 停機報告。跳過前言。保持簡潔的回應,只寫最基本的必要信息。僅列出: |
助手(Claude 的回應) | 以下是 AcmeCloud 停機報告的關鍵點總結: | 1) 原因:負載均衡器更新配置錯誤 |
?2.3?使用示例(多示例提示)來引導 Claude 的行為
示例是讓 Claude 精確生成你所需內容的秘密武器捷徑。通過在提示中提供一些精心設計的示例,你可以顯著提高 Claude 輸出的準確性、一致性和質量。 這種技術被稱為少樣本或多示例提示,對于需要結構化輸出或遵循特定格式的任務特別有效。
??增強你的提示: 包含 3-5 個多樣化、相關的示例來向 Claude 準確展示你想要的內容。示例越多 = 表現越好,尤其是對于復雜任務。
2.3.1 為什么要使用示例?
-
準確性:示例減少對指令的誤解。
-
一致性:示例強制執行統一的結構和風格。
-
性能:精心選擇的示例可以提升 Claude 處理復雜任務的能力。
2.3.2 制作有效的示例
為了獲得最大效果,請確保你的示例是:
-
相關的:你的示例反映了你的實際用例。
-
多樣化的:你的示例涵蓋邊緣情況和潛在挑戰,并且有足夠的變化使 Claude 不會無意中捕捉到不必要的模式。
-
清晰的:你的示例用?
<example>
?標簽包裝(如果有多個,則嵌套在?<examples>
?標簽中)以保持結構。
??請 Claude 評估你的示例的相關性、多樣性或清晰度。或者讓 Claude 基于你的初始集合生成更多示例。
示例:分析客戶反饋
注意在”無示例”版本中,盡管其書面分析表明某些反饋有多個類別,但 Claude 并沒有為每個類別列出多個選項。它還包含了一個我們可能不需要的長篇解釋。
角色 | 無示例 | 有示例 |
---|---|---|
用戶 | 分析這個客戶反饋并對問題進行分類。使用這些類別:UI/UX、性能、功能請求、集成、定價和其他。同時評估情感(積極/中性/消極)和優先級(高/中/低)。 以下是反饋:{{FEEDBACK}} | 我們的客服團隊被非結構化反饋淹沒了。你的任務是為我們的產品和工程團隊分析反饋并對問題進行分類。使用這些類別:UI/UX、性能、功能請求、集成、定價和其他。同時評估情感(積極/中性/消極)和優先級(高/中/低)。這里有一個示例: <example> 輸入:新儀表板一團糟!加載需要很長時間,而且我找不到導出按鈕。請盡快修復這個問題! 類別:UI/UX、性能 情感:消極 優先級:高</example> 現在,分析這個反饋:{{FEEDBACK}} |
助手(Claude 的回應) | 以下是客戶反饋的分析: 問題:UI/UX 情感:消極 優先級:高 客戶對新儀表板設計感到沮喪,認為它雜亂且加載緩慢。他們特別提到缺少”導出”按鈕,這可能是一個關鍵功能。這個問題需要作為高優先級來解決。 問題:集成 情感:積極 優先級:中 客戶對現有的 Salesforce 集成感到滿意,但希望看到對 Hubspot 的支持。這是一個可以考慮在未來產品更新中實現的功能請求。 問題:定價 情感:消極 優先級:高 客戶認為定價不合理,特別是對于基本功能而言。他們威脅要轉向競爭對手,所以這是一個需要審查的高優先級問題。 問題:性能 情感:消極 優先級:高 客戶在移動應用程序中遇到關鍵問題,大文件上傳持續導致崩潰。這是一個顯著影響客戶有效使用產品的問題,應該作為高優先級來解決。 問題:UI/UX 情感:積極 優先級:低 客戶總體上對產品滿意,特別提到了直觀的 UI 和出色的客戶支持。這是一個不需要任何即時行動的積極反饋。 | 以下是客戶反饋的分析: |
2.4 讓 Claude 思考(思維鏈提示)以提高性能
在面對研究、分析或問題解決等復雜任務時,給 Claude 思考的空間可以顯著提高其表現。這種被稱為思維鏈(CoT)提示的技術,鼓勵 Claude 逐步分解問題,從而產生更準確和細致的輸出。
2.4.1 實施思維鏈之前
為什么要讓 Claude 思考?
-
準確性:?逐步解決問題可以減少錯誤,尤其是在數學、邏輯、分析或一般復雜任務中。
-
連貫性:?結構化思維可以產生更連貫、組織更完善的回答。
-
調試:?查看 Claude 的思維過程有助于你找出提示可能不清晰的地方。
為什么不讓 Claude 思考?
-
增加輸出長度可能影響延遲。
-
并非所有任務都需要深入思考。明智地使用思維鏈以確保性能和延遲的適當平衡。
??對于人類需要思考的任務,如復雜數學、多步驟分析、編寫復雜文檔或涉及多個因素的決策,請使用思維鏈。
2.4.2 如何提示思考
下面的思維鏈技術按從簡單到復雜的順序排列。較簡單的方法在上下文窗口中占用較少空間,但通常功能也較弱。
??思維鏈提示:?始終讓 Claude 輸出其思考過程。如果不輸出思維過程,就不會發生思考!
-
基本提示:?在提示中包含”逐步思考”。
-
缺乏關于如何思考的指導(如果任務特別針對你的應用、用例或組織,這尤其不理想)
-
示例:撰寫捐贈者郵件(基本思維鏈)
角色
內容
用戶
起草個性化郵件,向捐贈者請求為今年的關愛兒童計劃捐款。
項目信息:
<program>{{PROGRAM_DETAILS}}
</program>
捐贈者信息:
<donor>{{DONOR_DETAILS}}
</donor>
在寫郵件之前逐步思考。
-
-
引導式提示:?概述 Claude 在思考過程中要遵循的具體步驟。
示例:撰寫捐贈者郵件(引導式思維鏈)
-
缺乏結構化,難以剝離和分離答案與思考過程。
-
示例:撰寫捐贈者郵件(引導式思維鏈)
角色 內容 用戶 起草個性化郵件,向捐贈者請求為今年的關愛兒童計劃捐款。
項目信息:
<program>{{PROGRAM_DETAILS}}
</program>
捐贈者信息:
<donor>{{DONOR_DETAILS}}
</donor>
在寫郵件之前先思考。首先,根據他們的捐贈歷史和他們過去支持過的活動,思考什么信息可能吸引這位捐贈者。然后,根據他們的歷史,思考關愛兒童計劃的哪些方面會吸引他們。最后,使用你的分析寫出個性化的捐贈者郵件。
-
-
結構化提示:?使用像?
<thinking>
?和?<answer>
?這樣的 XML 標簽來分離推理和最終答案。-
示例:撰寫捐贈者郵件(結構化引導思維鏈)
角色 內容 用戶 起草個性化郵件,向捐贈者請求為今年的關愛兒童計劃捐款。
項目信息:
<program>{{PROGRAM_DETAILS}}
</program>
捐贈者信息:
<donor>{{DONOR_DETAILS}}
</donor>
在寫郵件之前在 <thinking> 標簽中思考。首先,根據他們的捐贈歷史和他們過去支持過的活動,思考什么信息可能吸引這位捐贈者。然后,根據他們的歷史,思考關愛兒童計劃的哪些方面會吸引他們。最后,在 <email> 標簽中使用你的分析寫出個性化的捐贈者郵件。
-
2.5 使用XML標簽構建你的提示詞
當你的提示詞包含多個組件(如上下文、指令和示例)時,XML標簽可以成為改變游戲規則的工具。它們可以幫助Claude更準確地解析你的提示詞,從而產生更高質量的輸出。
??XML提示: 使用像
<instructions>
、<example>
和<formatting>
這樣的標簽來清晰地分隔提示詞的不同部分。這可以防止Claude混淆指令與示例或上下文。
2.5.1 為什么要使用XML標簽?
-
清晰度:?清晰地分隔提示詞的不同部分,確保提示詞結構良好。
-
準確性:?減少因Claude誤解提示詞部分而導致的錯誤。
-
靈活性:?無需重寫所有內容即可輕松查找、添加、刪除或修改提示詞的部分內容。
-
可解析性:?讓Claude在輸出中使用XML標簽,可以通過后處理更容易提取其響應的特定部分。
??Claude并沒有經過特定的”最佳”XML標簽訓練,盡管我們建議你的標簽名稱要與它們所包含的信息相符。
2.5.2?標簽使用最佳實踐
-
保持一致性: 在整個提示詞中使用相同的標簽名稱,并在談論內容時引用這些標簽名稱(例如,
使用<contract>標簽中的合同...
)。 -
嵌套標簽: 對于層次結構內容,你應該嵌套標簽
<outer><inner></inner></outer>
。
??高級用戶提示: 將XML標簽與其他技術結合使用,如多示例提示(
<examples>
)或思維鏈(<thinking>
、<answer>
)。這將創建超結構化、高性能的提示詞。
2.5.3 示例
示例一:生成財務報告
沒有XML標簽時,Claude會誤解任務并生成不符合所需結構或語氣的報告。替換后,Claude也可能會誤解某個部分(如Q1報告示例)的結束位置和另一部分的開始位置。
角色 | 不使用XML標簽 | 使用XML標簽 |
---|---|---|
用戶 | 你是AcmeCorp的財務分析師。為我們的投資者生成Q2財務報告。包括收入增長、利潤率和現金流等部分,就像去年的這個示例:{{Q1_REPORT}}。使用這個電子表格中的數據點:{{SPREADSHEET_DATA}}。報告應該非常簡潔、切中要點、專業,并采用列表格式。它應該突出優勢和需要改進的領域。 | 你是AcmeCorp的財務分析師。為我們的投資者生成Q2財務報告。 AcmeCorp是一家B2B SaaS公司。我們的投資者重視透明度和可行的見解。 使用這些數據生成報告:<data>{{SPREADSHEET_DATA}}</data> <instructions> 1. 包括以下部分:收入增長、利潤率、現金流。 2. 突出優勢和需要改進的領域。 </instructions> 使用簡潔專業的語氣。遵循這個結構: <formatting_example>{{Q1_REPORT}}</formatting_example> |
助手 | AcmeCorp投資者Q2財務報告 尊敬的投資者: 我很高興向您呈現我們的Q2財務報告,展示AcmeCorp在B2B SaaS市場持續增長和韌性。 1. 收入增長: 我們的Q2收入達到1520萬美元,同比增長22%。這一增長主要由企業客戶群增長30%推動。然而,我們的中小企業部分略有下降5%,我們計劃通過Q3的定向營銷計劃來解決這個問題。 2. 利潤率: 得益于基礎設施優化,毛利率提升至72%(較Q1上升3%)。然而,由于我們在即將推出的AI驅動功能上投入大量研發,EBITDA利潤率下降至18%(下降2%)。 3. 現金流: 運營現金流保持強勁,達410萬美元。我們的現金儲備為2800萬美元,按當前消耗率計算可維持15個月。我們確實看到客戶獲取成本增加20%,我們正通過更有效的銷售策略來解決這個問題。 總之,AcmeCorp的核心財務狀況保持穩健。我們在平衡增長投資和審慎的現金管理。我們在Q3的重點將是振興中小企業增長和優化銷售效率。 感謝您一如既往的信任。 此致, AcmeCorp首席財務官 | Q2 Financial Report for AcmeCorp Investors</output> 收入增長: - Q2收入:1520萬美元(同比增長22%↑) - 企業客戶:30%↑ - 中小企業部分:5%↓ 行動:Q3定向營銷 利潤率: - 毛利率:72%(較Q1上升3%↑) 原因:基礎設施優化 - EBITDA利潤率:18%(2%↓) 原因:AI功能研發投資 現金流: - 運營現金流:410萬美元(強勁) - 現金儲備:2800萬美元(15個月運營資金) - 客戶獲取成本:20%↑ 行動:優化銷售策略 展望: - 核心財務:穩健 - Q3重點:振興中小企業、優化銷售 管理層繼續致力于平衡增長投資與財務紀律。 |
示例二:法律合同分析
沒有XML標簽時,Claude的分析缺乏組織且遺漏關鍵點。使用標簽后,它提供了一個法律團隊可以采取行動的結構化、全面的分析。
角色 | 不使用XML標簽 | 使用XML標簽 |
---|---|---|
用戶 | 分析這份軟件許可協議的潛在風險和責任:{{CONTRACT}}。重點關注賠償、責任限制和知識產權所有權條款。另外,注意任何不尋常或令人擔憂的條款。這是我們的標準合同供參考:{{STANDARD_CONTRACT}}。為我們的法律團隊提供調查結果和建議摘要。 | 分析這份軟件許可協議的法律風險和責任。 我們是一家考慮將此協議用于核心數據基礎設施的跨國企業。 <agreement> {{CONTRACT}}</agreement> 這是我們的標準合同供參考: <standard_contract>{{STANDARD_CONTRACT}}</standard_contract> <instructions> 1. 分析以下條款: - 賠償 - 責任限制 - 知識產權所有權 2. 注意不尋常或令人擔憂的條款。 3. 與我們的標準合同進行比較。 4. 在<findings>標簽中總結調查結果。 5. 在<recommendations>標簽中列出可行的建議。</instructions> |
助手 | 提供的軟件許可協議存在幾個令人擔憂的方面。賠償條款過于寬泛,可能使我們面臨重大責任。責任限制部分將損害賠償上限設定為僅500美元,這對于我們的企業級使用來說是不夠的。關于知識產權,該協議授予供應商對我們創建的任何修改或集成的共同所有權。 總之,這份協議不符合我們的最佳利益。它使我們面臨不當風險,限制了我們在發生故障時的追索權,并損害了我們的知識產權。我建議重新談判這些條款或尋找替代供應商。 | <findings> 1. 賠償(第8條): - 問題:過于寬泛。我們需要對”任何和所有”因使用而產生的索賠進行賠償。 - 風險:即使是供應商的疏忽或產品缺陷也可能使我們承擔責任。 - 偏差:我們的標準合同將賠償限制在因我們違反協議而產生的索賠。 2. 責任限制(第9條): - 問題:將所有損害賠償(包括直接損害)上限設為500美元。 - 風險:對企業使用來說嚴重不足。關鍵故障可能造成數百萬美元損失。 - 偏差:我們的標準允許直接損害賠償最高達已付費用的12個月。 3. 知識產權所有權(第12條): - 問題:授予供應商對我們的修改/集成的共同所有權。 - 風險:供應商可能使用或出售我們的專有算法或數據洞察。 - 偏差:我們的標準保留我們工作的完全所有權。 4. 不尋常條款: - 第5.3條:供應商可以”出于任何目的”使用我們的使用數據。 - 第7.2條:供應商可以僅提前7天通知就”隨意”終止。 - 第11條:不提供任何保證,即使是基本的適銷性保證。 </findings> <recommendations> 1. 拒絕這份協議。對企業來說風險遠大于收益。 2. 提出反建議: - 賠償:限制在因我們違反協議而產生的索賠。 - 責任:直接損害上限設為12個月費用;就間接損害進行談判。 - 知識產權:完全擁有我們的修改/集成。 - 數據使用:僅限于服務改進。 - 終止:最少90天通知;僅限有正當理由。 - 保證:要求基本的適銷性和適用性保證。 3. 如果供應商拒絕,探索替代供應商或內部解決方案。 4. 鑒于風險較高,聘請法律顧問進行合同談判。 </recommendations> |
2.6?通過系統提示給Claude賦予角色
在使用Claude時,您可以通過使用system
參數來賦予它一個角色,從而顯著提升其表現。這種被稱為角色提示的技術,是使用系統提示與Claude交互的最強大方式。
合適的角色可以將Claude從一個通用助手轉變為您的虛擬領域專家!
??系統提示技巧:使用
system
參數來設置Claude的角色。將其他所有內容(如特定任務的指令)放在user
輪次中。
2.6.1?為什么要使用角色提示?
-
提高準確性:在復雜場景中(如法律分析或財務建模),角色提示可以顯著提升Claude的表現。
-
定制語氣:無論您需要CFO的簡潔還是文案撰寫人的文采,角色提示都可以調整Claude的溝通風格。
-
提升專注度:通過設置角色背景,Claude能更好地保持在您任務特定要求的范圍內。
??角色提示技巧:嘗試不同的角色!對于相同的數據,
數據科學家
可能會看到與營銷策略師
不同的見解。而專門為世界500強公司進行客戶洞察分析的數據科學家
可能會產生又一種不同的結果!
2.6.2 示例
示例1:法律合同分析
沒有角色時,Claude可能會錯過關鍵問題:
角色 | 內容 |
---|---|
User | 分析我們第二季度的財務數據: <data> {{FINANCIALS}} </data> 突出關鍵趨勢并提出建議。 |
Assistant | 以下是您第二季度財務狀況的總結: 1. 收入:1520萬美元,同比增長22%。企業客戶群增長30%。 2. 毛利率:72%,環比增長3%。 3. EBITDA利潤率:18%,由于研發投資下降2%。 4. 現金流:運營現金流410萬美元,儲備2800萬美元。 總的來說,財務狀況良好,收入增長且利潤率健康。增加的研發支出影響了盈利能力,但長期可能會帶來回報。保持當前方向。 |
有了角色后,Claude能發現可能造成數百萬損失的關鍵問題:
角色 | 內容 |
---|---|
User | 您是一家高增長B2B SaaS公司的CFO。我們正在董事會會議上討論第二季度財務狀況: <data> {{FINANCIALS}} </data> 分析關鍵趨勢,標出問題,并提出戰略行動建議。我們的投資者希望實現激進增長,但對我們的資金消耗率表示擔憂。 |
Assistant | 各位董事會成員,以下是我對第二季度財務狀況的分析: 1. 收入(1520萬美元,同比+22%): - 洞察:企業增長(+30%)超過整體增長。 - 問題:中小企業部分下降5%。 - 行動:將20%的中小企業營銷預算重新分配到企業銷售。要求產品團隊簡化中小企業入門流程。 2. 利潤率(毛利率:72%,環比+3%;EBITDA:18%,環比-2%): - 洞察:基礎設施優化提升了毛利率。 - 問題:AI功能的研發支出影響了EBITDA。 - 行動:維持不變。我們的AI路線圖對企業客戶粘性至關重要。 3. 現金(運營現金流410萬美元,儲備2800萬美元): - 洞察:按當前消耗率可維持15個月。 - 問題:獲客成本上升20%,降低了LTV/CAC。 - 行動:凍結非必要招聘。實施銷售漏斗分析,第三季度將獲客成本降低15%。 戰略立場:我們正在增長和消耗之間尋找平衡。企業市場是我們的增長引擎——在這里投資。但要關注中小企業流失;它可能會影響到企業業務。我們對AI的押注是明智的,但必須在第四季度將其轉化為年度經常性收入,否則我們將削減30%的研發支出。 總結:加倍投入企業市場,精簡中小企業業務,優化銷售,實現AI變現。有問題嗎? |
2.7 預填充 Claude 的回復以獲得更好的輸出控制
在使用 Claude 時,您有獨特的能力通過預填充?Assistant
?消息來引導其回復。這種強大的技術允許您指導 Claude 的行動,跳過前言,強制使用特定格式如 JSON 或 XML,甚至幫助 Claude 在角色扮演場景中保持角色一致性。
在某些 Claude 表現不如預期的情況下,幾句預填充的句子可以極大地改善 Claude 的表現。一點預填充就能產生很大的效果!
??預填充內容不能以尾隨空格結束。像?
"As an AI assistant, I "
?這樣的預填充(末尾有空格)將導致錯誤。
2.7.1 示例
示例 1:控制輸出格式并跳過前言
高級用戶提示:預填充?{
?強制 Claude 跳過前言并直接輸出 JSON 對象。這樣更簡潔、更清晰,也更容易被程序解析而無需額外處理。
1.不使用預填充的結構化數據提取
角色 | 內容 |
---|---|
User | Extract the name, size, price, and color from this product description as a JSON object: <description> The SmartHome Mini is a compact smart home assistant available in black or white for only $49.99. At just 5 inches wide, it lets you control lights, thermostats, and other connected devices via voice or app—no matter where you place it in your home. This affordable little hub brings convenient hands-free control to your smart devices. </description> |
Assistant | Here’s the extracted information in JSON format: ```json { “name”: “SmartHome Mini”, “size”: “5 inches wide”, “price”: “$49.99”, “colors”: [“black”, “white”] } ``` I’ve extracted the following details from the product description: -?Name: SmartHome Mini -?Size: 5 inches wide -?Price: $49.99 -?Colors: Available in black and white The JSON object provides a structured format that’s easy for programs to parse and use. Let me know if you need any modifications or have any other questions! |
2.使用預填充的結構化數據提取
角色 | 內容 |
---|---|
User | Extract the name, size, price, and color from this product description as a JSON object: <description> The SmartHome Mini is a compact smart home assistant available in black or white for only $49.99. At just 5 inches wide, it lets you control lights, thermostats, and other connected devices via voice or app—no matter where you place it in your home. This affordable little hub brings convenient hands-free control to your smart devices. </description> |
Assistant (prefill) | { |
Assistant (Claude’s response) | “name”: “SmartHome Mini”, “size”: “5 inches wide”, “price”: “$49.99”, “colors”: [ “black”, “white” ] } |
示例 2:在角色扮演場景中保持角色
角色扮演提示:預填充一個帶方括號的?[角色名稱]
?可以提醒 Claude 保持角色,即使在更長更復雜的對話中也是如此。當與?system
?參數中的角色提示結合使用時,這種方法特別強大。
1.不使用角色提示保持角色
角色 | 內容 |
---|---|
User (與”夏洛克·福爾摩斯” Claude 的第50輪對話) | What do you deduce about the owner of this shoe? <image>muddy_shoe.jpg</image> |
Assistant | As an AI assistant, I would be happy to analyze the image of a muddy shoe as if you had provided it. Here’s my deduction… |
2.使用角色提示保持角色
角色 | 內容 |
---|---|
User (與”夏洛克·福爾摩斯” Claude 的第50輪對話) | What do you deduce about the owner of this shoe? <image>muddy_shoe.jpg</image> |
Assistant (prefill) | [Sherlock Holmes] |
Assistant (Claude’s response) | Ah, what have we here? A most curious specimen, Watson! Let us examine this shoe with a discerning eye. The mud, you see, is not your common London clay, but rather the distinctive reddish hue of the iron-rich soil found only in the environs of Hampstead Heath. And yet, the wear on the sole suggests a gait more suited to the cobblestones of Whitechapel than the gentle slopes of the Heath. Now, observe the laces! They are tied with a particular knot favored by those in the medical profession—doubtless a habit acquired during years of tying surgical gowns. But the scuff marks on the toe box tell a different tale: they are consistent with the kicking motion one might employ in the martial arts, specifically Baritsu. We may conclude, then, that our absent shoe owner is a doctor, possibly a surgeon, who resides in Whitechapel but frequents Hampstead Heath—perhaps for a secret Baritsu practice, away from prying eyes. A most intriguing case, Watson! We must make haste; the game is afoot! |
2.8 鏈式復雜提示以獲得更強的性能
在處理復雜任務時,如果你試圖在單個提示中處理所有內容,Claude有時可能會出錯。思維鏈(CoT)提示很好,但如果你的任務有多個不同的步驟,每個步驟都需要深入思考怎么辦?
這就需要提示鏈:將復雜任務分解成更小、可管理的子任務。
2.8.1 為什么要鏈式提示?
-
準確性:每個子任務都能得到Claude的充分關注,減少錯誤。
-
清晰度:更簡單的子任務意味著更清晰的指令和輸出。
-
可追溯性:輕松定位和修復提示鏈中的問題。
2.8.2?何時使用鏈式提示
對于多步驟任務如研究綜合、文檔分析或迭代內容創作,使用鏈式提示。當任務涉及多個轉換、引用或指令時,鏈式提示可以防止Claude遺漏或處理錯誤步驟。
記住:鏈條中的每個環節都能得到Claude的充分關注!
??調試提示:如果Claude遺漏了某個步驟或表現不佳,將該步驟單獨放在一個提示中。這樣你可以微調有問題的步驟,而無需重做整個任務。
2.8.3 如何鏈式提示
-
識別子任務:將任務分解為不同的、連續的步驟。
-
使用XML構建清晰的交接:使用XML標簽在提示之間傳遞輸出。
-
設定單一任務目標:每個子任務應該有一個明確的單一目標。
-
迭代:根據Claude的表現改進子任務。
2.8.3.1?鏈式工作流示例
-
多步驟分析:參見下面的法律和商業示例。
-
內容創作流程:研究 → 大綱 → 草稿 → 編輯 → 格式化。
-
數據處理:提取 → 轉換 → 分析 → 可視化。
-
決策制定:收集信息 → 列出選項 → 分析每個選項 → 推薦。
-
驗證循環:生成內容 → 審查 → 改進 → 重新審查。
??優化提示:對于具有獨立子任務的任務(如分析多個文檔),創建單獨的提示并并行運行以提高速度。
2.8.3.2?高級:自我糾正鏈
你可以鏈式提示讓Claude審查自己的工作!這可以捕獲錯誤并改進輸出,特別是對于高風險任務。
1.示例:自我糾正研究摘要
提示1
角色 | 內容 |
---|---|
User | 總結這篇醫學研究論文。 <paper>{{RESEARCH_PAPER}}</paper> 重點關注方法、發現和臨床意義。 |
Assistant {{SUMMARY}} | 方法:500名2型糖尿病患者的雙盲隨機對照試驗。A組(n=250)接受新型GLP-1/GIP雙激動劑;B組(n=250)接受標準GLP-1激動劑。24周試驗,主要終點:HbA1c降低。 發現: - A組:平均HbA1c降低1.8% - B組:平均HbA1c降低1.1% - A組68%vs B組52%達到HbA1c <7% - A組:平均減重5.2kg - B組:平均減重3.1kg 安全性:類似的不良事件特征,無嚴重事件歸因于治療。 臨床意義:雙激動劑相比標準治療顯示出更好的血糖控制和減重效果。可能是一個突破性進展,特別是對肥胖糖尿病患者。 |
提示2
角色 | 內容 |
---|---|
User | 你的任務是對一篇研究論文摘要提供反饋。這是一篇醫學研究論文的摘要: <summary> {{SUMMARY}} </summary> 這是研究論文: <paper> {{RESEARCH_PAPER}} </paper> 按A-F等級評審這個摘要的準確性、清晰度和完整性。 |
Assistant {{FEEDBACK}} | 1. 準確性:A - 正確報告了關鍵數據:HbA1c降低、減重。 - 準確記錄了安全性特征和無嚴重不良事件。 - “突破性進展”的說法由顯著更好的結果支持。 2. 清晰度:A- - 簡潔且結構良好,章節清晰。 - 很好地使用了比較語言(如”較Q1上升3%“)提供背景。 - 小問題:未定義縮寫”RCT”、“GLP-1”和”GIP”。考慮首次使用時拼寫完整。 3. 完整性:B+ - 涵蓋了所有要求的領域:方法、發現、臨床意義。 - 缺失:組別的基線特征(是否匹配良好?)。 - 缺失:任何次要終點(如血壓、血脂)。 - 考慮:長期影響或進一步研究的需求。 總的來說,摘要準確清晰,提供了快速把握研究的關鍵見解。要達到A+,需定義縮寫,提及組別基線數據,注明任何次要結果,并簡要提及長期研究的需求。 |
提示3
角色 | 內容 |
---|---|
User | 你的任務是根據反饋改進論文摘要。這是醫學研究論文摘要的第一稿: <summary> {{SUMMARY}} </summary> 這是研究論文: <paper> {{RESEARCH_PAPER}} </paper> 這是反饋: <feedback> {{FEEDBACK}} </feedback> 根據反饋更新摘要。 |
Assistant | 方法:500名2型糖尿病患者的雙盲隨機對照試驗(RCT)。A組(n=250)接受新型胰高血糖素樣肽-1/葡萄糖依賴性促胰島素分泌多肽(GLP-1/GIP)雙激動劑;B組(n=250)接受標準GLP-1激動劑。24周試驗的主要終點是HbA1c降低。兩組在年齡、BMI和基線HbA1c方面匹配良好。 發現: - A組:平均HbA1c降低1.8% - B組:平均HbA1c降低1.1% - A組68%vs B組52%達到HbA1c <7% - A組:平均減重5.2kg - B組:平均減重3.1kg 次要終點顯示兩組的血壓和血脂特征都有改善,A組效果略好。 安全性:類似的不良事件特征,無嚴重事件歸因于任一治療。 臨床意義:GLP-1/GIP雙激動劑相比標準GLP-1治療顯示出更好的血糖控制和減重效果。這些結果表明它可能是一個重要進展,特別是對肥胖糖尿病患者。然而,需要更長期的研究來確認持續的有效性和安全性,并研究潛在的心血管獲益。 |
2.9 長文本提示的基本技巧
-
將長文本數據放在頂部:將您的長文檔和輸入(約20K+ tokens)放在提示的頂部,位于查詢、指令和示例之上。這可以顯著提高Claude在所有模型中的表現。
??測試表明,將查詢放在末尾可以將響應質量提高多達30%,特別是在處理復雜的多文檔輸入時。
-
使用XML標簽構建文檔內容和元數據:在使用多個文檔時,用
<document>
標簽包裝每個文檔,并使用<document_content>
和<source>
(以及其他元數據)子標簽以提高清晰度。<documents><document index="1"><source>annual_report_2023.pdf</source><document_content>{{ANNUAL_REPORT}}</document_content></document><document index="2"><source>competitor_analysis_q2.xlsx</source><document_content>{{COMPETITOR_ANALYSIS}}</document_content></document> </documents>分析年度報告和競爭對手分析。識別戰略優勢并推薦第三季度重點關注領域。
-
用引用支持響應:對于長文檔任務,請先讓Claude引用文檔中的相關部分,然后再執行任務。這有助于Claude從文檔內容的”噪音”中篩選出重要信息。
您是一位AI醫生助手。您的任務是幫助醫生診斷可能的患者疾病。<documents><document index="1"><source>patient_symptoms.txt</source><document_content>{{PATIENT_SYMPTOMS}}</document_content></document><document index="2"><source>patient_records.txt</source><document_content>{{PATIENT_RECORDS}}</document_content></document><document index="3"><source>patient01_appt_history.txt</source><document_content>{{PATIENT01_APPOINTMENT_HISTORY}}</document_content></document> </documents>從患者記錄和就診歷史中找出與診斷患者報告癥狀相關的引用。將這些引用放在<quotes>標簽中。然后,根據這些引用,列出所有能幫助醫生診斷患者癥狀的信息。將您的診斷信息放在<info>標簽中。
3.Claude 4 提示工程最佳實踐
下面提供了針對 Claude 4 模型(Opus 4.1、Opus 4 和 Sonnet 4)的具體快速工程技術,以幫助您在應用中取得最佳效果。這些模型經過訓練,能夠比前幾代 Claude 模型更精確地遵循指令。
3.1 一般原則
1.明確你的指示
Claude 4 型號對清晰明確的指令反應良好。明確地描述您的期望輸出有助于提升效果。如果客戶希望獲得之前 Claude 型號“超越”的性能,可能需要更明確地向 Claude 4 提出這些要求。
示例:創建分析儀表盤
效果較差:
“創建一個分析儀表板”
更有效:
“創建一個分析儀表板。包括盡可能多的相關功能和交互。超越基礎,創建一個功能齊全的實現。”
2.添加上下文以提高性能
提供指令背后的背景或動機,例如向Claude解釋為什么這種行為很重要,可以幫助Claude 4更好地理解您的目標并提供更有針對性的回應。
示例:格式首選項
效果較差:
“不要使用省略號”
更有效:
“你的回復會被文本轉語音引擎大聲朗讀,所以不要使用省略號,因為文本轉語音引擎不知道如何發音。”
3.對示例和細節保持警惕
Claude 4 模型注重細節和示例,并將其作為遵循指導的一部分。確保你的例子與你想要鼓勵的行為相符,并盡量減少你想要避免的行為。
3.2 針對具體情況的指導
3.2.1?控制響應的格式
我們發現有幾種方法對于控制 Claude 4 模型中的輸出格式特別有效:
-
告訴Claude該做什么而不是不該做什么
? ? ? ?不推薦:“不要在回復中使用 markdown”
? ? ? ?試試這樣說:“你的回答應該由流暢的散文段落組成。”
-
使用 XML 格式指示符
? ? ? ?嘗試:“在<smoothly_flowing_prose_paragraphs>標簽中寫下你回復的散文部分。”
-
將您的提示風格與所需的輸出相匹配
提示中使用的格式樣式可能會影響 Claude 的響應樣式。如果您仍然遇到輸出格式方面的可控性問題,我們建議您盡可能將提示樣式與所需的輸出樣式相匹配。例如,從提示中移除 Markdown 可以減少輸出中的 Markdown 數量。
3.2.2?利用思考和交叉思考能力
Claude 4 提供的思考能力尤其適用于涉及工具使用后反思或復雜的多步驟推理的任務。您可以引導其初始或交叉思考,以獲得更好的結果。
示例提示:
在收到工正文具結果后,仔細反思其質量,并在繼續之前確定最佳的下一步步驟。用你的思維來計劃和迭代這些新信息,然后采取最好的下一步行動。
3.2.3?優化并行工具調用
Claude 4 模型在并行工具執行方面表現出色。它們在無需任何提示的情況下就能實現很高的并行工具調用成功率,但一些細微的提示可以將并行工具調用成功率提升至 100% 左右。我們發現以下提示最為有效:
為了獲得最大的效率,無論何時需要執行多個獨立的操作,都要同時調用所有相關的工具,而不是依次調用。
3.2.4?減少代理編碼中的文件創建
Claude 4 模型有時會創建新文件用于測試和迭代,尤其是在處理代碼時。這種方法允許 Claude 在保存最終輸出之前將文件(尤其是 Python 腳本)用作“臨時暫存器”。使用臨時文件可以改善結果,尤其是在代理編碼用例中。
如果您希望盡量減少新文件的創建,您可以指示 Claude 自行清理:
如果您為迭代創建了任何臨時的新文件、腳本或輔助文件,請在任務結束時刪除這些文件。
3.2.5 增強視覺和前端代碼生成
對于前端代碼生成,您可以通過提供明確的鼓勵來引導 Claude 4 模型創建復雜、詳細和交互式的設計:
不要退縮。全力以赴。
您還可以通過提供額外的修飾符和關注點細節來提高 Claude 在特定領域的前端性能:
- “包含盡可能多的相關功能和交互”
- “添加周到的細節,例如懸停狀態、過渡和微交互”
- “創建一個令人印象深刻的演示來展示 Web 開發能力”
- “應用設計原則:層次、對比、平衡和動感”
3.2.6?避免專注于測試通過和硬編碼
前沿語言模型有時會過于注重測試通過,而忽略了更通用的解決方案。為了避免這種情況并確保解決方案的穩健性和可推廣性,請執行以下操作:
請寫出一個高質量、通用的解決方案。實現對所有有效輸入正確工作的解決方案,而不僅僅是測試用例。不要硬編碼值或創建只適用于特定測試輸入的解決方案。相反,實現解決問題的實際邏輯。
重點是理解問題需求并實現正確的算法。測試的作用是驗證正確性,而不是定義解決方案。提供遵循最佳實踐和軟件設計原則的原則實現。
如果任務不合理或不可行,或者任何測試不正確,請告訴我。解決方案應該是健壯的、可維護的和可擴展的。
總結:
本文對Anthropic發布的Prompt Engineering做了全面的翻譯和總結,對于想系統化提升自己提示工程能力的同學來有幫助,希望閱讀本文能對你有所啟發。