高能幹貨分享,有關提示詞工程的一切都在這份教程里
機器之心報導
編輯:佳琪、Panda
想讓 AI 幫你自動搞掂任務,離不開要在聊天框內用提示詞對它發號施令。
但找到合適的提示詞並不容易,這需要設計、優化和評估,不僅耗時,還需要自己學習技巧。
有時候,你可能感覺這和調參有著異曲同工之妙,怎麼都是玄學?
嘗試了不同的措辭、語氣,甚至還和模型玩上了角色扮演。但實際上,就像一千個人眼中有一千個哈姆雷特一樣,對於完全相同的提示詞,模型也會給出不同的回答。因此,我們難以確定哪些方法真正奏效。
今天,開源社區 DiamantAI 的主理人 Nir Diamant 發佈了一套提示詞工程技術庫,系統性地教我們如何提高和 AI 的溝通技巧,更好發揮 AI 的潛能。
才上線幾個小時,它就在 GitHub 上拿到了 200 多顆 star,並且還在以這個速度不斷攀升。
無論是像Google、微軟這樣的科技巨頭,還是吳恩達等資深專家,以及眾多行業大咖都推出過專業的提示詞課程。更不用提,通過「魔法打敗魔法」,用 AI 自動生成提示詞的方法也是一抓一大把,比如這篇文章《還在人工煉丹?自動提示工程指南來了,還帶從頭實現》。
那麼,為什麼這個提示詞課程還能脫穎而出,收到如此多的關注呢?
答案可能就在作者 Nir Diamant 自己寫下的推薦語中:「所有與提示詞工程相關的內容,你都能在這裏找到!」
從教程的體量上,就已經能感受到它有多全面了。它總共分 7 大部分,22 個章節,由易到難逐步進階,條理分明,從基礎概念入門,到最近流行的思維鏈提示詞,鼓勵 AI 模型將複雜問題分解為逐步推理過程。每節課都附有詳細的代碼。
我們可以看到,教程從最基礎的環境設置入手,如 OpenAI API 和 LangChain 庫,逐步引導你從零樣本提示開始,深入學習如何實現基礎和高級的少樣本學習,以及如何可重覆使用,大大提升效率的結構化提示。
在整個學習的過程中,教程還會教你如何根據模型的響應進行迭代優化,不斷提升提示效果。
在具體課程中,Nir Diamant 設計了各種案例,讓你直觀感受一下,提高自己的溝通技巧,對提升 AI 模型對事實的準確性有什麼效果,即使是提示結構和措辭的微小調整,也能幫助 AI 更好地吃透你的需求。
有時,精心設計的提示詞可能包含過多條件,導致提示過長,反而增加了模型理解的難度。課程還講解了如何在提示詞的細節和簡潔性之間找到平衡。
和其他泛泛講述提示詞工程對等方面有什麼應用的課程不同,學到後期,你就可以上手設計跨多語言工作、防止提示詞注入並在提示詞中實施內容過濾等等高級應用了。
-
GitHub 鏈接:https://github.com/NirDiamant/Prompt_Engineering
課程概覽
基礎概念
1.Introduction to Prompt Engineering,提示詞工程入門:在 AI 和語言模型語境中全面介紹提示詞工程的基礎概念,其中包含理論解釋和實際演示,覆蓋了基礎概念、結構化提示詞、比較分析和解決問題的應用。
2.Basic Prompt Structures,基礎提示詞結構:其中探索了兩種基本類型的提示詞結構,包括單輪提示詞和多輪提示詞(對話)。其實現使用了 OpenAI 的 GPT 模型和 LangChain,演示了單輪和多輪提示詞、提示詞模板和對話鏈。
3.Prompt Templates and Variables,提示詞模板和變量:介紹了如何使用變量來創建和使用提示詞模板,重點是 Python 和 Jinja2 模板引擎。實現上,其中涉及模板創建、變量插入、基於條件的內容、列表處理、整合 OpenAI API。
核心技術
1.Zero-Shot Prompting,零樣本提示:探索了零樣本提示,讓語言模型可以在沒有具體示例或先驗訓練時也能執行任務。具體實現上,其中演示了直接任務規範設定、基於角色的提示詞、格式規範設定和多步驟推理,使用的工具是 OpenAI 的 GPT 模型和 LangChain。
2.Few-Shot Learning and In-Context Learning,少樣本學習和上下文學習:使用 OpenAI 的 GPT 模型和 LangChain 庫介紹少樣本學習和上下文學習技術。其實現包括基礎和高級的少樣本學習、上下文學習,還有示例選取方法和評估的最佳實踐。
3.Chain of Thought (CoT) Prompting,思維鏈提示:介紹思維鏈提示技術,引導 AI 模型將複雜問題分解為逐步推理過程。其實現涵蓋基礎和高級思維鏈技術,解決各種問題的應用場景,並還比較了標準提示詞技術。
進階策略
1.Self-Consistency and Multiple Paths of Reasoning,自我一致性和多路徑推理:探索生成多樣化推理路徑並聚合結果以改進 AI 生成的答案的技術。其實現包括設計多樣化推理提示、生成多個響應、實現聚合方法和應用自我一致性檢查。
2.Constrained and Guided Generation,有約束和引導的生成:專注於設置模型輸出約束和實現基於規則的生成技術。使用 LangChain 的 PromptTemplate 進行結構化提示,實現約束條件,探索基於規則的生成技術。
3.Role Prompting,角色提示:探索為 AI 模型分配特定角色並製定有效的角色描述。展示如何創建基於角色的提示,為 AI 模型分配角色,並針對各種場景優化角色描述。
高級實現
1.Task Decomposition in Prompts,提示詞中的任務分解:探索複雜任務分解技術和提示詞中的鏈式子任務。涵蓋問題分析、子任務定義、定向提示詞工程、按順序執行和結果綜合。
2.Prompt Chaining and Sequencing,提示鏈和序列處理:演示如何連接多個提示詞並為複雜的 AI 驅動的任務構建邏輯流程。其實現中探索了基本的提示鏈、序列提示、動態提示詞生成和提示鏈中的錯誤處理。
3.Instruction Engineering,指令工程:專注於為語言模型製定清晰有效的指令,平衡專用性和通用性。其實現中涵蓋創建和優化指令、實驗不同結構,並基於模型響應實施迭代改進。
優化和改進
1.Prompt Optimization Techniques,提示詞優化技術:探索提示詞優化的高級技術,重點是 A/B 測試和迭代改進。在其實現中,演示了提示詞的 A/B 測試、迭代改進過程,以及使用相關指標進行性能評估。
2.Handling Ambiguity and Improving Clarity,處理歧義和提高清晰度:專注於識別和解決模糊提示,以及編寫更清晰提示的技術。在其實現中,涵蓋分析模糊提示、實現消除歧義的策略,探索了編寫更清晰提示的技術。
3.Prompt Length and Complexity Management,提示詞長度和複雜度管理:其中探索了使用大型語言模型時管理提示詞長度和複雜度的技術。在其實現中,演示了平衡細節和簡潔性的技術,以及處理長上下文的策略,包括分塊、彙總和迭代處理。
專業化應用
1.Negative Prompting and Avoiding Undesired Outputs,負面提示和避免不期望的輸出:探索負面提示和避免大型語言模型產生不期望輸出的技術。在其實現中,涵蓋基本負面示例、明確排除、使用 LangChain 實現約束,以及評估和改進負面提示詞的方法。
2.Prompt Formatting and Structure,提示詞格式化和結構:探索各種提示詞格式和結構元素,展示它們對 AI 模型響應的影響。在其實現中,演示了創建各種提示詞格式、整合結構元素,並比較了不同提示詞結構的響應。
3.Prompts for Specific Tasks,用於特定任務的提示詞:探索為特定任務創建和使用提示詞:文本摘要、問答、代碼生成和創意寫作。在其實現中,涵蓋了設計任務特定的提示詞模板,這些模板使用 LangChain 實現,可執行示例輸入,並分析每種任務類型的輸出。
高級應用
1.Multilingual and Cross-lingual Prompting,多語言和跨語言提示:探索設計在多種語言中有效工作的提示詞和語言翻譯任務的技術。在其實現中,涵蓋創建多語言提示詞、實現語言檢測和適配、設計跨語言翻譯提示詞,以及處理各種書寫系統和腳本。
2.Ethical Considerations in Prompt Engineering,提示詞工程中的倫理考慮:探索提示詞工程的倫理維度,重點是避免偏見並創建包容和公平的提示詞。在其實現中,涵蓋識別提示詞中的偏見、實施創建包容性提示詞的策略,以及評估和改進 AI 輸出倫理質量的方法。
3.Prompt Security and Safety,提示詞安全性:專注於防止提示詞注入和在提示詞中實現內容過濾,以確保 AI 應用程序的安全性。其實現中涵蓋了提示詞注入預防技術、內容過濾實現,以及測試安全措施的有效性。
4.Evaluating Prompt Effectiveness,評估提示詞效果:探索評估 AI 語言模型中提示詞效果的方法和技術。在其實現中,涵蓋設置評估指標、實施手動和自動評估技術,並使用 OpenAI 和 LangChain 提供了實踐示例。
如果你也正需要一個這樣的提示詞工程「百科全書」,那就趕緊:
1. 複製這個庫:
git clone https://github.com/NirDiamant/Prompt_Engineering.git
2. 找到你感興趣的技術:
cd all_prompt_engineering_techniques
3. 跟隨每個技術筆記本中的詳細實現指南。
當然,你也可以為這個項目添磚加瓦,做出自己的貢獻。
參考鏈接:
https://github.com/NirDiamant/Prompt_Engineering https://x.com/NirDiamantAI/status/1844385492801933599