大家好!最近,我在使用 Claude 的專案上遇到了一些困難。「這個 AI 為什麼不能理解我的意圖呢……」當我苦惱不已時,Anthropic 正式公開了他們的內部提示工程技術!這真的是讓我大開眼界。
Anthropic 終於公開了他們在內部使用的提示技術。這些技術主要是為 Claude 設計的,但大部分技術也適用於其他 LLM。他們強調,提示工程比模型微調更有效率。原因很簡單,因為它的資源需求低,成本便宜,且迭代速度快。
對於最新的 Claude 4 模型,Anthropic 特別強調了四個基本原則:
明確指示(Be Explicit)
Claude 4 比起創造性的擴展者,更像是一個精確的執行者。如果想要「超越期待」的表現,就必須明確要求。我一開始也只是委婉地指示,但完全沒用(笑)。
提供背景(Add Context)
解釋指示背後的原因會非常有效。例如,不要只說「絕對不使用省略號」,而是說「因為要用語音閱讀,所以請不要使用省略號」,這樣 Claude 4 會更適當地回應。
注意示例(Vigilant with Examples)
Claude 4 會非常仔細地觀察細節,並從你的例子中學習。如果我給出不當的例子,它就會直接回覆不當的答案,大失所望(汗)。
主動指導(Tell What TO Do)
與其說「不要使用 markdown」,不如說「請用流暢的段落回答」。告訴它應該做什麼,而不是不應該做什麼。
下面是我實際測試過後,根據效果介紹的技巧,從高效到低效的排序!
讓 AI 寫自己的提示,聽起來有點奇妙,但這是真的有效!我最初半信半疑,但在使用 Anthropic Console 的提示生成器後,得到的提示比自己想的要好得多。
如果手頭沒有提示草稿,建議直接從 Anthropic Console 的提示生成器開始只需告訴它:「我想要這樣的回答……」,它就會提出合適的提示。
Anthropic 有一條黃金法則:讓你的提示展示給同事,特別是對這項業務不太熟悉的人。如果他們感到困惑,那麼 Claude 也會困惑。
不要使用委婉的說法。必須具體告訴 AI 你想讓它做什麼。例如,不要說「給我一些資訊」,而是說「列出五個要點」。
我把 Claude 想像成「聰明但缺乏背景知識的新員工」。它需要清晰的指導。要點是:
實際例子比較:
模糊的指示:
請從這些客戶反饋中刪除個人資訊
明確的指示:
這是一個將客戶反饋匿名化的任務,供季度審查使用。
1. 將所有顧客名替換為「CUSTOMER_[ID]」(例如:「田中先生」→「CUSTOMER_001」)
2. 將電子郵件地址替換為「EMAIL_[ID]@example.com」
3. 將電話號碼修正為「PHONE_[ID]」
4. 如果有具體的產品名稱提到,則保留
5. 如果沒有個人資訊,則直接複製
6. 只輸出處理後的資訊,使用「---」作為分隔
結果的差異是顯而易見的!在模糊的指示中,Claude 還是忽略了顧客名,但在明確指示中,處理完全正確。我的專案中也是如此。最開始的時候,我說「好好整理一下」,但當我改為具體指示後,改善效果驚人!
給 AI 看幾個好的例子,會比單純的文本說明有效得多。例子是最好的老師。
通過提供幾個精心製作的例子,可以大幅提高 AI 輸出的準確性、一致性和質量。
為什麼例子那麼有效?
我最開始只是告訴它「分析這些數據」,結果是「以這種方式分析」後,得到了質量截然不同的分析結果!
製作有效例子的要點:
<example>
標籤包裝(多個例子可用 <examples>
標籤嵌套)最佳做法:包含3到5個多樣且相關的例子。例子越多,複雜任務的表現會越好。
效果比較案例:客戶反饋分析
你還可以請 Claude 評估例子的質量,或基於初始例子生成更多樣本。這真的非常便利!
對於複雜的任務,明確要求 AI 展示推理過程。只需增加一句「讓我們一步一步思考」,品質就會大幅提升。
我最開始只是說「解決這個問題」,但自從開始說「請一步一步思考解決」後,解答的質量大幅上升!
使用思維鏈的時機:
三種思維鏈方法:
基本方法:簡單地增加「一步一步思考」
請分析這份投資提案。一點一滴地思考。
指導性方法:明確思考步驟
請分析投資提案。首先考慮風險因素,然後評估收益潛力,最後提供建議。
結構化方法:使用 XML 標籤分隔思考和回答
請分析這份投資提案。<thinking>標籤內思考,<answer>標籤內提供最終建議。
重要要點:如果不讓 Claude 輸出思考過程,它就不會真正進行思考。
效果比較:
這在我的專案中也同樣適用。在進行複雜的代碼生成任務時,只需說「一步一步思考」,就能生成質量更高、錯誤更少的代碼!
XML 標籤是提示工程中最被低估但非常有效的技術。如果提示包含多個組件(背景、指示、例子等),使用 XML 標籤能幫助 Claude 正確解析,並大幅提升輸出品質。
我最開始只用文本編寫,但開始使用 XML 標籤後,Claude 的理解度大幅提升!
為什麼應該使用 XML 標籤?
最佳做法:
<outer><inner></inner></outer>
結構<instructions>
、<example>
、<data>
)實際效果比較:
無標籤(效果低):
請分析這份軟體授權協議的風險:{{協議內容}}。請重點關注賠償、責任限制、知識產權條款。這是我們的標準合約:{{標準合約}}。請提供分析結果和建議。
有標籤(效果高):
請分析這份軟體授權協議的法律風險。
<agreement>
{{協議內容}}
</agreement>
<standard_contract>{{標準合約}}</standard_contract>
<instructions>
1. 分析條款:賠償、責任限制、知識產權
2. 標記異常條款
3. 與標準合約進行比較
4. 在 <findings> 標籤內總結發現
5. 在 <recommendations> 標籤內列出建議
</instructions>
高度技術:使用 XML 標籤與其他方法組合。例如,將 <examples>
與多鏡頭提示相結合,或將 <thinking>
與 <answer>
與思維鏈結合起來,以創造超結構的高性能提示。
「標準」的 XML 標籤並不存在。重要的是,標籤名稱要有意義。常見的有 <context>
、<task>
、<format>
、<output>
、<data>
、<rules>
等等。
這個技術雖然簡單,但非常強大,尤其是在處理複雜的任務時,它讓 AI 的輸出從混亂變得有序。實際上,不僅 XML,JSON,甚至 Lisp 等結構化語言也非常有效。這在 OpenAI 的文檔中也有提到。
告訴 AI「你是一位經驗豐富的數據分析師」等身份,讓回答更加準確。
這是一種許多人已經在默認使用的提示技術。正確的角色設置可以將 Claude 從通用的助理轉變為你專業領域的專家。
我最初使用時不曾指定角色,但設置為「你是一位資深的後端工程師」後,代碼質量明顯提高了!
為什麼角色提示有效?
具體實施方法:
system="你是一家 Fortune 500 公司的資深數據科學家"
角色設置的小技巧:試試不同的角色!同樣的數據集,「數據科學家」和「行銷策略家」會得到不同的見解。「專注於 Fortune 500 公司的客戶洞察分析的數據科學家」,可能會得到截然不同的結果。
實際效果比較:
在未設置角色的法律分析中,只會說「這份合同看起來標準」,而設置為「一家 Fortune 500 科技公司的法律顧問」後,則會發現數百萬損失的潛在重大風險,並提供「請不要簽署這份合同!」的專業建議。
在未設置角色的財務分析中,僅會總結數字,但設置為「高成長的 B2B SaaS 公司的 CFO」後,將在董事會情境中提供可執行的戰略洞察:預算再分配、凍結不必要的招聘、優化銷售漏斗等具體行動。
提供回答的開頭,幫助 AI 朝正確的方向前進。
這是 Claude 獨特的強大功能,通過在助理消息中預填的文本引導 AI 生成回答的方向。這個技術對輸出格式有直接影響,省略冗長的前置語,也有助於 AI 保持角色的一致性。
我從知道這個功能後,尤其是在需要 JSON 或 CSV 輸出時,這招就變得相當實用!
核心原理:在 API 呼叫的 messages 陣列中添加一個「assistant」角色的消息,Claude 會基於這個預填內容進行生成。
重要限制: 預填內容末尾若有空格會出現錯誤。在擴展思考模式下不支援。
兩個實用場景:
控制格式與跳過前置
專業技巧:在開頭預填 {
,可以強制 Claude 直接輸出 JSON,跳過「這是 JSON 格式的提取資訊」之類不必要的字眼。
若是沒有預填, Claude 會這樣說:
「這是 JSON 格式的提取資訊:`json{...}` 從產品描述提取以下詳細信息......」
若是在開頭預填 {"
,Claude 會直接輸出:
"name": "SmartHome Mini",
"size": "5 inches wide",
"price": "$49.99",
"colors": ["black", "white"]
}
角色的一致性
在長對話中,預填 [角色名稱]
可以防止 Claude 偏離角色。例如,如果在進行了 50 回合的對話後沒有預填,「AI 助手說,我將幫助分析……」但是預填 [Sherlock Holmes]
,則可以讓它保持「啊,華生,這是何等奇怪的標本!」的語調。
這個技巧的本質是「少量的預填可以帶來巨大的改善」——只需幾個字元,就能夠大幅提升 Claude 的性能。
在嘗試將複雜任務壓縮到單一提示時,Claude 很容易會漏掉步驟。提示鏈接是一種將複雜任務分解為可管理的子任務的方法。
我也曾在大型代碼生成專案中,嘗試一次生成所有東西但失敗了。但是,當我將其分解為「首先考慮設計」、「然後創建主要類別」、「最後編寫測試」時,得到的代碼品質驚人!
主要優點:
使用場景:
實施方法:
典型工作流程:
先進技術:自我修正鏈支持 - 讓 Claude 在自己工作完成之前自我檢視,尤其是高風險任務中十分有效。「總結→反饋→改善」的三步驟循環,可以大幅提高輸出質量。
在處理大量文本時,採用特殊策略以防重要信息被遺漏。簡而言之:將文檔放在前面,問題放在後面;用標籤進行分割;首先引用再分析。
我在向 Claude 分析冗長技術規範時,使用這種方法後,效果顯著改善!
對於 Claude 的 20 萬 token 的長文本能力,Anthropic 提供了三個核心的小技巧:
將長文檔放在頂部
將超過 2 萬 token 的長文檔放在提示的最前面,將查詢和指示放在末尾。根據測試,這樣可以提高回答品質 30%。
使用 XML 標籤來結構化多個文檔
使用 <document>
、<document_content>
、<source>
等標籤來包裝多個文檔,讓 Claude 更容易理解文檔的結構。
首先引用再分析
讓 Claude 先從長文檔中引用相關部分,然後再執行任務。這樣可以幫助其專注於重要內容,而不是在信息的海洋中迷失。
建立可重複利用的模板,寫一次並多次使用。這是提高效率的關鍵。
這將內容分為兩部分:固定內容(靜態指示)和 變數內容(用戶輸入、查詢內容等動態要素)。在 Anthropic Console 中,使用 {{雙括號}} 標記變數。
我在使用 API 的專案中,創建模板後,工作效率大幅提升!
主要優點:
使用原則:當提示的任意部分需要重複使用時,使用模板。當前僅支持於 API 和 Anthropic Console。
範例:
請將這段英文文本翻譯成中文:{{text}}
這個簡單的功能是構建可維護 AI 應用的基礎,尤其是在需要大量重複調用的場景下非常適合。
Anthropic 也提供了一個專用工具來優化現有的提示。我使用過這個工具,讓我的提示不斷改善。特別是在複雜任務中,這個工具的建議相當有用!
這是一種為需要深思熟慮的模型設計的特殊技術。Claude 的擴展思考功能可以讓 AI 逐步處理複雜問題,顯著提高困難任務的表現。
我在複雜的優化問題中使用擴展思考模式後,得到了通常模式下未曾想到的解決方案!
技術要點:
核心技巧:
一般性指示優於詳細步驟
與其說「在步驟 1 中識別變數,在步驟 2 中建立方程式」,不如說「徹底思考這個問題,考慮多種方法,展示完整的推理」。
與多個例子結合
使用 <thinking>
標籤展示思考模式,AI 可以將其概念化為正式的擴展思考。
自我驗證
要求 AI 在任務完成之前進行自我檢查,尤其在編程任務中可以要求其在思考中執行測試用例。
適用場景:
擴展思考的目的是提供 AI 更多的推理空間,而不是僅僅為了輸出更多結果,使其提供更高品質的解決方案。
進階優化技術:
並行工具調用:對於 Claude 4,增加這句話能將並行執行的成功率提高到 100% 近乎
為了達到最高效率,若需要多個獨立操作,請同時調用所有相關工具。
前端代碼生成:使用「請不要保守,務必全力以赴」等鼓勵性語句,Claude 4 會生成更複雜的前端代碼。
避免硬編碼:明確要求「不僅是測試用例,還要實現通用解決方案」。
Anthropic 還強調了幾個重要的先決條件:明確成功標準、確立測試方式、準備初始版本。若沒有這些基礎,任何技術都將無法發揮作用。
文件中還包括互動式教程,以及 GitHub 版和 Google Sheets 輕量版,適應不同學習習慣的人。
這些技巧在實際專案中試驗過後,最有效的技術是「明確的指示」和「使用 XML 標籤」。尤其是在處理複雜任務時,將思維鏈與角色設定結合將會產生驚人的效果。
AI 提示工程是一個仍在發展中的領域。未來,Anthropic 和其他 AI 公司會開發出更精緻的技術。我們作為開發者,應該學習這些最佳實踐,並將其運用於實踐中,共同發掘 AI 工具的潛力。
大家也一定要試試這些技術,並告訴我你們得到了什麼樣的結果!讓我們一起拓展 AI 的可能性吧。
<iframe id="qiita-embed-content__12199a650611696d52e624b7e16bab38"></iframe>
原文出處:https://qiita.com/Nakamura-Kaito/items/22303be7122e5e8abe2a