站長阿川

站長阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

站長精心設計,帶你實作 63 個小專案,得到作品集!

立即開始免費試讀!

前言

大家好!最近,我在使用 Claude 的專案上遇到了一些困難。「這個 AI 為什麼不能理解我的意圖呢……」當我苦惱不已時,Anthropic 正式公開了他們的內部提示工程技術!這真的是讓我大開眼界。
提示工程的概覽.png

Anthropic 終於公開了他們在內部使用的提示技術。這些技術主要是為 Claude 設計的,但大部分技術也適用於其他 LLM。他們強調,提示工程比模型微調更有效率。原因很簡單,因為它的資源需求低,成本便宜,且迭代速度快。

核心原則:掌握 Claude 4 的四個基本原則

對於最新的 Claude 4 模型,Anthropic 特別強調了四個基本原則:

  1. 明確指示(Be Explicit)
    Claude 4 比起創造性的擴展者,更像是一個精確的執行者。如果想要「超越期待」的表現,就必須明確要求。我一開始也只是委婉地指示,但完全沒用(笑)。

  2. 提供背景(Add Context)
    解釋指示背後的原因會非常有效。例如,不要只說「絕對不使用省略號」,而是說「因為要用語音閱讀,所以請不要使用省略號」,這樣 Claude 4 會更適當地回應。

  3. 注意示例(Vigilant with Examples)
    Claude 4 會非常仔細地觀察細節,並從你的例子中學習。如果我給出不當的例子,它就會直接回覆不當的答案,大失所望(汗)。

  4. 主動指導(Tell What TO Do)
    與其說「不要使用 markdown」,不如說「請用流暢的段落回答」。告訴它應該做什麼,而不是不應該做什麼。

按優先順序排列的 12 種核心技術

下面是我實際測試過後,根據效果介紹的技巧,從高效到低效的排序!

1. 利用提示生成器

利用提示生成器.png

讓 AI 寫自己的提示,聽起來有點奇妙,但這是真的有效!我最初半信半疑,但在使用 Anthropic Console 的提示生成器後,得到的提示比自己想的要好得多。

如果手頭沒有提示草稿,建議直接從 Anthropic Console 的提示生成器開始只需告訴它:「我想要這樣的回答……」,它就會提出合適的提示。

2. 明確且直接地指示

Anthropic 有一條黃金法則:讓你的提示展示給同事,特別是對這項業務不太熟悉的人。如果他們感到困惑,那麼 Claude 也會困惑。

不要使用委婉的說法。必須具體告訴 AI 你想讓它做什麼。例如,不要說「給我一些資訊」,而是說「列出五個要點」。

我把 Claude 想像成「聰明但缺乏背景知識的新員工」。它需要清晰的指導。要點是:

  • 提供背景信息:任務的目的、目標讀者、工作流程中的位置、成功標準
  • 具體列出要求:如果只需要代碼,明確說「只輸出代碼,並不要包含其他內容」
  • 逐步指導:使用編號列表或項目符號來確保按你的要求執行

實際例子比較:

模糊的指示:

請從這些客戶反饋中刪除個人資訊

明確的指示:

這是一個將客戶反饋匿名化的任務,供季度審查使用。

1. 將所有顧客名替換為「CUSTOMER_[ID]」(例如:「田中先生」→「CUSTOMER_001」)
2. 將電子郵件地址替換為「EMAIL_[ID]@example.com」
3. 將電話號碼修正為「PHONE_[ID]」
4. 如果有具體的產品名稱提到,則保留
5. 如果沒有個人資訊,則直接複製
6. 只輸出處理後的資訊,使用「---」作為分隔

結果的差異是顯而易見的!在模糊的指示中,Claude 還是忽略了顧客名,但在明確指示中,處理完全正確。我的專案中也是如此。最開始的時候,我說「好好整理一下」,但當我改為具體指示後,改善效果驚人!

3. 使用多個例子的提示(多鏡頭提示)

給 AI 看幾個好的例子,會比單純的文本說明有效得多。例子是最好的老師。

通過提供幾個精心製作的例子,可以大幅提高 AI 輸出的準確性、一致性和質量。

為什麼例子那麼有效?

  • 準確性:減少指示的誤解
  • 一致性:確保結構和風格統一
  • 表現:精選的例子能提升 Claude 處理複雜任務的能力

我最開始只是告訴它「分析這些數據」,結果是「以這種方式分析」後,得到了質量截然不同的分析結果!

製作有效例子的要點:

  • 相關性:例子應該反映實際用例
  • 多樣性:涵蓋邊界案例和潛在挑戰,避免 AI 學習意想不到的模式
  • 清晰性:用 <example> 標籤包裝(多個例子可用 <examples> 標籤嵌套)

最佳做法:包含3到5個多樣且相關的例子。例子越多,複雜任務的表現會越好。

效果比較案例:客戶反饋分析

  • 無例子版本:Claude 寫了冗長的解釋,格式不統一,可能會忽略多個分類
  • 有例子版本:輸出簡潔且統一,正確識別多個類別,格式完全符合預期

你還可以請 Claude 評估例子的質量,或基於初始例子生成更多樣本。這真的非常便利!

4. 讓 AI 思考(思維鏈)

對於複雜的任務,明確要求 AI 展示推理過程。只需增加一句「讓我們一步一步思考」,品質就會大幅提升。

我最開始只是說「解決這個問題」,但自從開始說「請一步一步思考解決」後,解答的質量大幅上升!

使用思維鏈的時機:

  • 複雜的數學計算、多步分析、複雜的文檔創建
  • 涉及多個因素的決策
  • 需要人類思考的任務一般

三種思維鏈方法:

  1. 基本方法:簡單地增加「一步一步思考」

    請分析這份投資提案。一點一滴地思考。
  2. 指導性方法:明確思考步驟

    請分析投資提案。首先考慮風險因素,然後評估收益潛力,最後提供建議。
  3. 結構化方法:使用 XML 標籤分隔思考和回答

    請分析這份投資提案。<thinking>標籤內思考,<answer>標籤內提供最終建議。

重要要點:如果不讓 Claude 輸出思考過程,它就不會真正進行思考。

效果比較:

  • 無思維鏈:提供合理但深度不足的建議
  • 有思維鏈:計算具體數字,考慮過去變動,深入分析風險容忍度

這在我的專案中也同樣適用。在進行複雜的代碼生成任務時,只需說「一步一步思考」,就能生成質量更高、錯誤更少的代碼!

5. 使用 XML 標籤

XML 標籤是提示工程中最被低估但非常有效的技術。如果提示包含多個組件(背景、指示、例子等),使用 XML 標籤能幫助 Claude 正確解析,並大幅提升輸出品質。

我最開始只用文本編寫,但開始使用 XML 標籤後,Claude 的理解度大幅提升!

為什麼應該使用 XML 標籤?

  • 清晰度:明確分離提示的不同部分,提升結構
  • 準確性:減少 Claude 錯誤理解提示內容的情況
  • 靈活性:無需重寫整個提示,輕鬆添加、刪除、修改內容
  • 可解析性:讓 Claude 在輸出時使用標籤,以便後期處理特定部分

最佳做法:

  1. 保持一致性:在整個提示中使用相同的標籤名稱
  2. 使用嵌套:對於層次內容,使用 <outer><inner></inner></outer> 結構
  3. 語義明確的命名:標籤名稱應與內容相符(例如:<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 的文檔中也有提到。

6. 指定 AI 的角色(系統提示)

告訴 AI「你是一位經驗豐富的數據分析師」等身份,讓回答更加準確。

這是一種許多人已經在默認使用的提示技術。正確的角色設置可以將 Claude 從通用的助理轉變為你專業領域的專家。

我最初使用時不曾指定角色,但設置為「你是一位資深的後端工程師」後,代碼質量明顯提高了!

為什麼角色提示有效?

  • 提高準確性:在法律分析或財務建模等複雜場景中,表現大幅提升
  • 調整語調:可以根據角色提示調整溝通風格,例如 CFO 的簡潔性或文案撰稿人的文才能
  • 優化焦點:設置角色背景,Claude 可以更集中於特定需求

具體實施方法:

system="你是一家 Fortune 500 公司的資深數據科學家"

角色設置的小技巧:試試不同的角色!同樣的數據集,「數據科學家」和「行銷策略家」會得到不同的見解。「專注於 Fortune 500 公司的客戶洞察分析的數據科學家」,可能會得到截然不同的結果。

實際效果比較

在未設置角色的法律分析中,只會說「這份合同看起來標準」,而設置為「一家 Fortune 500 科技公司的法律顧問」後,則會發現數百萬損失的潛在重大風險,並提供「請不要簽署這份合同!」的專業建議。

在未設置角色的財務分析中,僅會總結數字,但設置為「高成長的 B2B SaaS 公司的 CFO」後,將在董事會情境中提供可執行的戰略洞察:預算再分配、凍結不必要的招聘、優化銷售漏斗等具體行動。

7. 預填回答(預填 Claude 的回應)

提供回答的開頭,幫助 AI 朝正確的方向前進。

這是 Claude 獨特的強大功能,通過在助理消息中預填的文本引導 AI 生成回答的方向。這個技術對輸出格式有直接影響,省略冗長的前置語,也有助於 AI 保持角色的一致性。

我從知道這個功能後,尤其是在需要 JSON 或 CSV 輸出時,這招就變得相當實用!

核心原理:在 API 呼叫的 messages 陣列中添加一個「assistant」角色的消息,Claude 會基於這個預填內容進行生成。

重要限制: 預填內容末尾若有空格會出現錯誤。在擴展思考模式下不支援。

兩個實用場景:

  1. 控制格式與跳過前置
    專業技巧:在開頭預填 { ,可以強制 Claude 直接輸出 JSON,跳過「這是 JSON 格式的提取資訊」之類不必要的字眼。
    若是沒有預填, Claude 會這樣說:

    「這是 JSON 格式的提取資訊:`json{...}` 從產品描述提取以下詳細信息......」

    若是在開頭預填 {",Claude 會直接輸出:

    "name": "SmartHome Mini",
    "size": "5 inches wide",
    "price": "$49.99",
    "colors": ["black", "white"]
    }
  2. 角色的一致性
    在長對話中,預填 [角色名稱] 可以防止 Claude 偏離角色。例如,如果在進行了 50 回合的對話後沒有預填,「AI 助手說,我將幫助分析……」但是預填 [Sherlock Holmes],則可以讓它保持「啊,華生,這是何等奇怪的標本!」的語調。

這個技巧的本質是「少量的預填可以帶來巨大的改善」——只需幾個字元,就能夠大幅提升 Claude 的性能。

8. 鏈式複雜提示

在嘗試將複雜任務壓縮到單一提示時,Claude 很容易會漏掉步驟。提示鏈接是一種將複雜任務分解為可管理的子任務的方法。

我也曾在大型代碼生成專案中,嘗試一次生成所有東西但失敗了。但是,當我將其分解為「首先考慮設計」、「然後創建主要類別」、「最後編寫測試」時,得到的代碼品質驚人!

主要優點:

  • 準確性:每個子任務都能獲得 Claude 的完整注意力
  • 清晰性:簡單的子任務意味著更清晰的指示和輸出
  • 可追蹤性:容易特定鏈中的問題並修正

使用場景:

  • 研究整合、文檔分析、重複性內容創建
  • 涉及多次轉換、引用、指示的任務

實施方法:

  1. 識別子任務 - 將任務分解為不同連續步驟
  2. 使用 XML 標籤進行結構化 - 使用 XML 標籤在提示之間傳遞输出
  3. 單一任務目標 - 每個子任務應有一個單一且明確的目標
  4. 反復優化 - 根據 Claude 的表現優化子任務

典型工作流程:

  • 內容創建:研究 → 大綱 → 草稿 → 編輯 → 格式化
  • 數據處理:提取 → 轉換 → 分析 → 可視化
  • 決策制定:信息收集 → 選項列表 → 各項分析 → 推薦

先進技術:自我修正鏈支持 - 讓 Claude 在自己工作完成之前自我檢視,尤其是高風險任務中十分有效。「總結→反饋→改善」的三步驟循環,可以大幅提高輸出質量。

9. 長文本處理的小技巧

在處理大量文本時,採用特殊策略以防重要信息被遺漏。簡而言之:將文檔放在前面,問題放在後面;用標籤進行分割;首先引用再分析。

我在向 Claude 分析冗長技術規範時,使用這種方法後,效果顯著改善!

對於 Claude 的 20 萬 token 的長文本能力,Anthropic 提供了三個核心的小技巧:

  1. 將長文檔放在頂部
    將超過 2 萬 token 的長文檔放在提示的最前面,將查詢和指示放在末尾。根據測試,這樣可以提高回答品質 30%。

  2. 使用 XML 標籤來結構化多個文檔
    使用 <document><document_content><source> 等標籤來包裝多個文檔,讓 Claude 更容易理解文檔的結構。

  3. 首先引用再分析
    讓 Claude 先從長文檔中引用相關部分,然後再執行任務。這樣可以幫助其專注於重要內容,而不是在信息的海洋中迷失。

10. 使用提示模板

建立可重複利用的模板,寫一次並多次使用。這是提高效率的關鍵。

這將內容分為兩部分:固定內容(靜態指示)和 變數內容(用戶輸入、查詢內容等動態要素)。在 Anthropic Console 中,使用 {{雙括號}} 標記變數。

我在使用 API 的專案中,創建模板後,工作效率大幅提升!

主要優點:

  • 一致性:保持提示結構的統一
  • 效率性:快速替換變數內容
  • 可測試性:輕鬆測試不同的輸入
  • 版本管理:能夠分離固定部分和動態部分

使用原則:當提示的任意部分需要重複使用時,使用模板。當前僅支持於 API 和 Anthropic Console。

範例:

請將這段英文文本翻譯成中文:{{text}}

這個簡單的功能是構建可維護 AI 應用的基礎,尤其是在需要大量重複調用的場景下非常適合。

11. 提示改善工具

改善提示.png

Anthropic 也提供了一個專用工具來優化現有的提示。我使用過這個工具,讓我的提示不斷改善。特別是在複雜任務中,這個工具的建議相當有用!

12. 擴展思考提示的小技巧

這是一種為需要深思熟慮的模型設計的特殊技術。Claude 的擴展思考功能可以讓 AI 逐步處理複雜問題,顯著提高困難任務的表現。

我在複雜的優化問題中使用擴展思考模式後,得到了通常模式下未曾想到的解決方案!

技術要點:

  • 思考的 token 最少需要 1024 個,建議從最小預算逐步增加
  • 超過 32K 時使用批次處理以避免超時
  • 英文思考效果最佳,輸出則可使用任何語言

核心技巧:

  1. 一般性指示優於詳細步驟
    與其說「在步驟 1 中識別變數,在步驟 2 中建立方程式」,不如說「徹底思考這個問題,考慮多種方法,展示完整的推理」。

  2. 與多個例子結合
    使用 <thinking> 標籤展示思考模式,AI 可以將其概念化為正式的擴展思考。

  3. 自我驗證
    要求 AI 在任務完成之前進行自我檢查,尤其在編程任務中可以要求其在思考中執行測試用例。

適用場景:

  • 複雜的 STEM 問題,涉及專業知識和邏輯推理
  • 約束優化,需要同時滿足多個競爭性要求
  • 結構化框架,逐步應用多種分析方法

擴展思考的目的是提供 AI 更多的推理空間,而不是僅僅為了輸出更多結果,使其提供更高品質的解決方案。

進階優化技術:

  1. 並行工具調用:對於 Claude 4,增加這句話能將並行執行的成功率提高到 100% 近乎

    為了達到最高效率,若需要多個獨立操作,請同時調用所有相關工具。
  2. 前端代碼生成:使用「請不要保守,務必全力以赴」等鼓勵性語句,Claude 4 會生成更複雜的前端代碼。

  3. 避免硬編碼:明確要求「不僅是測試用例,還要實現通用解決方案」。

Anthropic 還強調了幾個重要的先決條件:明確成功標準、確立測試方式、準備初始版本。若沒有這些基礎,任何技術都將無法發揮作用。

文件中還包括互動式教程,以及 GitHub 版和 Google Sheets 輕量版,適應不同學習習慣的人。

總結

這些技巧在實際專案中試驗過後,最有效的技術是「明確的指示」和「使用 XML 標籤」。尤其是在處理複雜任務時,將思維鏈與角色設定結合將會產生驚人的效果。

AI 提示工程是一個仍在發展中的領域。未來,Anthropic 和其他 AI 公司會開發出更精緻的技術。我們作為開發者,應該學習這些最佳實踐,並將其運用於實踐中,共同發掘 AI 工具的潛力。

大家也一定要試試這些技術,並告訴我你們得到了什麼樣的結果!讓我們一起拓展 AI 的可能性吧。

參考

<iframe id="qiita-embed-content__12199a650611696d52e624b7e16bab38"></iframe>


原文出處:https://qiita.com/Nakamura-Kaito/items/22303be7122e5e8abe2a


共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
站長阿川

站長阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

站長精心設計,帶你實作 63 個小專案,得到作品集!

立即開始免費試讀!