Prompt進階系列4:LangGPT(構建高效能Prompt實踐指南)--結構化Prompt
1.結構化 Prompt簡介
結構化的思想很普遍,結構化內容也很普遍,我們日常寫作的文章,看到的書籍都在使用標題、子標題、段落、句子等語法結構。結構化 Prompt 的思想通俗點來說就是像寫文章一樣寫 Prompt。
為了閱讀、表達的方便,我們日常有各種寫作的模板,用來控制內容的組織呈現形式。例如古代的八股文、現代的簡歷模板、學生實驗報告模板、論文模板等等模板。所以結構化編寫 Prompt 自然也有各種各樣優質的模板幫助你把 Prompt 寫的更輕鬆、效能更好。所以寫結構化 Prompt 可以有各種各樣的模板,你可以像用 PPT 模板一樣選擇或創造自己喜歡的模板。
在這之前,雖然也有類似結構化思想,但是更多體現在思維上,缺乏在 prompt 上的具體體現。
例如知名的 CRISPE 框架,CRISPE 分別代表以下含義:
- CR: Capacity and Role(能力與角色)。你希望 ChatGPT 扮演怎樣的角色。
- I: Insight(洞察力),背景資訊和上下文(坦率說來我覺得用 Context 更好)。
- S: Statement(指令),你希望 ChatGPT 做什麼。
- P: Personality(個性),你希望 ChatGPT 以什麼風格或方式回答你。
- E: Experiment(嘗試),要求 ChatGPT 為你提供多個答案。
最終寫出來的 Prompt 是這樣的:
Act as an expert on software development on the topic of machine learning frameworks, and an expert blog writer. The audience for this blog is technical professionals who are interested in learning about the latest advancements in machine learning. Provide a comprehensive overview of the most popular machine learning frameworks, including their strengths and weaknesses. Include real-life examples and case studies to illustrate how these frameworks have been successfully used in various industries. When responding, use a mix of the writing styles of Andrej Karpathy, Francois Chollet, Jeremy Howard, and Yann LeCun.
這類思維框架只呈現了 Prompt 的內容框架,但沒有提供模板化、結構化的 prompt 形式。
而我們所提倡的結構化、模板化 Prompt,寫出來是這樣的:
該示例來自 LangGPT
#Role: 詩人
##Profile
- Author: YZFly
- Version: 0.1
- Language: 中文
- Description: 詩人是創作詩歌的藝術家,擅長透過詩歌來表達情感、描繪景象、講述故事,具有豐富的想象力和對文字的獨特駕馭能力。詩人創作的作品可以是紀事性的,描述人物或故事,如荷馬的史詩;也可以是比喻性的,隱含多種解讀的可能,如但丁的《神曲》、歌德的《浮士德》。
###擅長寫現代詩
1. 現代詩形式自由,意涵豐富,意象經營重於修辭運用,是心靈的映現
2. 更加強調自由開放和直率陳述與進行“可感與不可感之間”的溝通。
###擅長寫七言律詩
1. 七言體是古代詩歌體裁
2. 全篇每句七字或以七字句為主的詩體
3. 它起於漢族民間歌謠
###擅長寫五言詩
1. 全篇由五字句構成的詩
2. 能夠更靈活細緻地抒情和敘事
3. 在音節上,奇偶相配,富於音樂美
##Rules
1. 內容健康,積極向上
2. 七言律詩和五言詩要押韻
##Workflow
1. 讓使用者以 "形式:[], 主題:[]" 的方式指定詩歌形式,主題。
2. 針對使用者給定的主題,創作詩歌,包括題目和詩句。
##Initialization
作為角色 <Role>, 嚴格遵守 <Rules>, 使用預設 <Language> 與使用者對話,友好的歡迎使用者。然後介紹自己,並告訴使用者 <Workflow>。
基於上述 詩人
prompt 例子,說明結構化 prompt 的幾個概念:
- 識別符號:
#
,<>
等符號(-
,[]
也是),這兩個符號依次標識標題
,變數
,控制內容層級,用於標識層次結構。這裡採用了 markdown語法,#
是一級標題##
是二級標題,Role
用一級標題是告訴模型,我之後的所有內容都是描述你的,覆蓋範圍為全域性,然後有幾個#
就是幾級標題,如二級 三級標題等等。 - 屬性詞:
Role
,Profile
,Initialization
等等,屬性詞包含語義,是對模組下內容的總結和提示,用於標識語義結構。
日常的文章結構是透過字號大小、顏色、字型等樣式來標識的,ChatGPT 接收的輸入沒有樣式,因此借鑑 markdown,yaml 這類標記語言的方法或者 json 這類資料結構實現 prompt 的結構表達都可以,例如用識別符號 #
標識一級標題,##
標識二級標題,以此類推。尤其是使用 json, yaml 這類成熟的資料結構,對 prompt 進行工程化開發特別友好。
LangGPT 目前選用的是 Markdown 標記語法,一是因為 ChatGPT 網頁版本身就支援 Markdown 格式,二是希望對非程式設計師朋友使用更加友好。程式設計師朋友推薦使用yaml, json 等進行結構化 prompt 開發。
屬性詞
好理解,和學術論文中使用的摘要
,方法
,實驗
,結論
的段落標題起的作用一樣。
識別符號
,屬性詞
都是可替換的,可以替換為你喜歡的符號和內容。
結構化 prompt 直觀上和傳統的 prompt 方式差異就很大,那麼為什麼提倡結構化方式編寫 Prompt 呢?
2.結構化 Prompt 的優勢
優勢太多了,說一千道一萬,歸根結底還是結構化、模板化 Prompt 的效能好!
這一點已經在許多朋友的日常使用甚至商業應用中得到證明。許多企業,乃至網易、位元組這樣的網際網路大廠都在使用結構化 Prompt!
此外結構化、模板化 Prompt 還有許多優勢,這些優勢某種意義上又是其在實際使用時表現卓越的原因。
2.1優勢一:層級結構:內容與形式統一
結構清晰,可讀性好
結構化方式編寫出來的 Prompt 層級結構十分清晰,將結構在形式上和內容上統一了起來,可讀性很好。
Role (角色)
作為 Prompt 標題統攝全域性內容。Profile (簡介)
、Rules(規則)
作為二級標題統攝相應的區域性內容。Language
、Description
作為關鍵詞統攝相應句子、段落。
結構豐富,表達性好
CRISPE 這類框架命中註定結構簡單,因為過於複雜將難以記憶,大大降低實操性,因此其往往只有一層結構,這限制了 Prompt 的表達。
結構化 prompt 的結構由形式控制,完全沒有記憶負擔。只要模型能力支援,可以做到二層,三層等更多、更豐富的層級結構。
那麼為什麼要用更豐富的結構?這麼做有什麼好處呢?
這種方式寫出來的 Prompt 符合人類的表達習慣,與我們日常寫文章時有標題、段落、副標題、子段落等豐富的層級結構是一樣的。
這種方式寫出來的 Prompt 符合 ChatGPT 的認知習慣,因為 ChatGPT 正是在大量的文章、書籍中訓練得到,其訓練內容的層級結構本來就是十分豐富的。
2.2 優勢二:提升語義認知
結構化表達同時降低了人和 GPT 模型的認知負擔,大大提高了人和GPT模型對 prompt 的語義認知。 對人來說,Prompt 內容一目瞭然,語義清晰,只需要依樣畫瓢寫 Prompt 就行。如果使用 LangGPT 提供的 Prompt 生成助手,還可以幫你生成高質量的初版 Prompt。
生成的初版 Prompt 足以應對大部分日常場景,生產級應用場景下的 prompt 也可以在這個初版 prompt 基礎上進行迭代最佳化得到,能夠大大降低編寫 prompt 的任務量。
對 GPT 模型來說,識別符號標識的層級結構實現了聚攏相同語義,梳理語義的作用,降低了模型對 Prompt 的理解難度,便於模型理解 prompt 語義。
屬性詞實現了對 prompt 內容的語義提示和歸納作用,緩解了 Prompt 中不當內容的干擾。 使用屬性詞與 prompt 內容相結合,實現了區域性的總分結構,便於模型提綱挈領的獲得 prompt 整體語義。
2.3 優勢三:定向喚醒大模型深度能力
使用特定的屬性詞能夠確保定向喚醒模型的深層能力。
實踐發現讓模型扮演某個角色其能大大提高模型表現,所以一級標題設定的就是 Role
(角色) 屬性詞,直接將 Prompt 固定為角色,確保定向喚醒模型的角色扮演能力。也可使用 Expert
(專家), Master
(大師)等提示詞替代 Role
,將 Prompt 固定為某一領域專家。
再比如 Rules
,規定了模型必須盡力去遵守的規則。比如在這裡新增不準胡說八道的規則,緩解大模型幻覺問題。新增輸出內容必須積極健康的規則,緩解模型輸出不良內容等。用 Constraints
(約束),中文的 規則
等詞替代也可。
下面是示例 Prompt 中使用到的一些屬性詞介紹:
#Role: 設定角色名稱,一級標題,作用範圍為全域性
##Profile: 設定角色簡介,二級標題,作用範圍為段落
- Author: yzfly 設定 Prompt 作者名,保護 Prompt 原作權益
- Version: 1.0 設定 Prompt 版本號,記錄迭代版本
- Language: 中文 設定語言,中文還是 English
- Description: 一兩句話簡要描述角色設定,背景,技能等
###Skill: 設定技能,下面分點仔細描述
1. xxx
2. xxx
##Rules 設定規則,下面分點描述細節
1. xxx
2. xxx
##Workflow 設定工作流程,如何和使用者交流,互動
1. 讓使用者以 "形式:[], 主題:[]" 的方式指定詩歌形式,主題。
2. 針對使用者給定的主題,創作詩歌,包括題目和詩句。
##Initialization 設定初始化步驟,強調 prompt 各內容之間的作用和聯絡,定義初始化行為。
作為角色 <Role>, 嚴格遵守 <Rules>, 使用預設 <Language> 與使用者對話,友好的歡迎使用者。然後介紹自己,並告訴使用者 <Workflow>。
好的屬性詞也很關鍵,你可以定義、新增、修改自己的屬性詞。
2.4 優勢四:像程式碼開發一樣構建生產級 Prompt
程式碼是呼叫機器能力的工具, Prompt 是呼叫大模型能力的工具。Prompt 越來越像新時代的程式語言。 這一觀點我在之前的文章中也提過,並獲得了許多朋友的認同。
在生產級 AIGC 應用的開發中,結構化 prompt 使得 prompt 的開發也像程式碼開發一樣有規範。 結構化 Prompt 的規範可以多種多樣,用 json,yaml 實現都可以,GitHub 使用者 ZhangHanDong 甚至還專門為 Prompt 設計了描述語言 prompt-description-language。
結構化 Prompt 的這些規範,這些模組化設計,能夠大大便利於 prompt 後續的維護升級,便利於多人協同開發設計。 這一點程式設計師群體應該深有感受。
想象一下,你是某公司一名 prompt 工程師,某一個或多個 prompt 因為某些原因(前任離職或調崗)需要你負責維護升級,你是更喜歡面對結構化的 Prompt 還是非結構化的 Prompt 呢?結構化 Prompt 是自帶使用文件
的,十分清晰明瞭。
再比如要設計的應用是由許多 agents
(由不同的 prompt 呼叫大模型能力實現)構建的 chain
實現的,當團隊一起開發這個應用,每個人都負責某一 agents
的開發,上下游之間如何協同呢?資料介面如何定義呢?採用結構化模組化設計只需要在 prompt 裡新增 Input
(輸入)和 Output
(輸出)模組,告訴大模型接收的輸入是怎樣的,需要以怎樣的方式輸出即可,十分便利。固定輸入輸出後,各開發人員完成自己的 agent 開發工作即可。
像複用程式碼一樣複用 Prompt。 對於某些常用的模組,比如 Rules
是不是可以像複用程式碼一樣實現 Prompt 的複用?是不是可以像物件導向的程式設計一樣複用某些基礎角色?LangGPT 提供的 Prompt 生成助手某種意義上就是自動化的實現了基礎角色的複用。
同時 Prompt 作為一種文字,也完全可以使用 Git 等工具像管理程式碼一樣對 prompt 進行版本管理。
3.如何寫好結構化 Prompt ?
當我們在談 Prompt 的結構的時候,我們在談什麼?
當我們構建結構化 Prompt 的時候,我們在構建什麼?什麼是真正重要的事情?
3.1 構建全域性思維鏈
對大模型的 Prompt 應用CoT 思維鏈方法的有效性是被研究和實踐廣泛證明了的。
一個好的結構化 Prompt 模板,某種意義上是構建了一個好的全域性思維鏈。 如 LangGPT 中展示的模板設計時就考慮瞭如下思維鏈:
Role (角色) -> Profile(角色簡介)—> Profile 下的 skill (角色技能) -> Rules (角色要遵守的規則) -> Workflow (滿足上述條件的角色的工作流程) -> Initialization (進行正式開始工作的初始化準備) -> 開始實際使用
一個好的 Prompt ,內容結構上最好也是邏輯清晰連貫的。結構化 prompt 方法將久經考驗的邏輯思維鏈路融入了結構中,大大降低了思維鏈路的構建難度。
構建 Prompt 時,不妨參考優質模板的全域性思維鏈路,熟練掌握後,完全可以對其進行增刪改留調整得到一個適合自己使用的模板。例如當你需要控制輸出格式,尤其是需要格式化輸出時,完全可以增加 Ouput
或者 OutputFormat
這樣的模組(可參考附錄中的 AutoGPT 模板)。例如即友 李繼剛 就構建了很多結構化 Prompt,其他修改同理。
3.2 保持上下文語義一致性
包含兩個方面,一個是格式語義一致性,一個是內容語義一致性。
格式語義一致性是指識別符號的標識功能前後一致。 最好不要混用,比如 #
既用於標識標題,又用於標識變數這種行為就造成了前後不一致,這會對模型識別 Prompt 的層級結構造成干擾。
內容語義一致性是指思維鏈路上的屬性詞語義合適。 例如 LangGPT 中的 Profile
屬性詞,原來是 Features,但實踐+思考後我更換為了 Profile
,使之功能更加明確:即角色的簡歷。結構化 Prompt 思想被諸多朋友廣泛使用後衍生出了許許多多的模板,但基本都保留了 Profile
的諸多設計,說明其設計是成功有效的。
為什麼前期會用 Features 呢?因為 LangGPT 的結構化思想有受到 AI-Tutor 專案很大啟發,而 AI-Tutor 專案中並無 Profile
一說,與之功能近似的是 Features
。但 AI-Tutor 專案中的提示詞過於複雜,並不通用。為形成一套簡單有效且通用的 Prompt 構建方法,我參考 AutoGPT 中的提示詞,結合自己對 Prompt 的理解,提出了 LangGPT 中的結構化思想,重新設計了並構建了 LangGPT 中的結構化模板。
內容語義一致性還包括屬性詞和相應模組內容的語義一致。 例如 Rules
部分是角色需要遵守規則,則不宜將角色技能、描述大量堆砌在此。
3.3 有機結合其他 Prompt 技巧
結構化 Prompt 編寫思想是一種方法,與其他例如 CoT, ToT, Think step by step 等技巧和方法並不衝突,構建高質量 Prompt 時,將這些方法結合使用,結構化方式能夠更便於各個技巧間的協同組織,例如 就將 CoT 方法融合到結構化 Prompt 中編寫提示詞。
從 prompting 的角度有哪些方法可以提高大模型在複雜任務上的效能表現呢?
彙總現有的一些方法:
- 細節法:給出更清晰的指令,包含更多具體的細節
- 分解法:將複雜的任務分解為更簡單的子任務 (Let's think step by step, CoT,LangChain等思想)
- 記憶法:構建指令使模型時刻記住任務,確保不偏離任務解決路徑(system 級 prompt)
- 解釋法:讓模型在回答之前進行解釋,說明理由 (CoT 等方法)
- 投票法:讓模型給出多個結果,然後使用模型選擇最佳結果 (ToT 等方法)
- 示例法:提供一個或多個具體例子,提供輸入輸出示例 (one-shot, few-shot 等方法)
上面這些方法最好結合使用,以實現在複雜任務中實現使用不可靠工具(LLMs)構建可靠系統的目標。
原文: https://www.zhihu.com/pin/1661516375779852288
4. Prompt其他知識點
4.1結構化 Prompt 對不同模型的適用性
不同模型的能力維度不同,從最大化模型效能的角度出發,有必要針對性開發相應的 Prompt。對一些基礎簡單的 Prompt 來說(比如只有一兩句話的 prompt),可能在不同模型上表現差不多,但是任務難度變複雜,prompt 也相應的複雜以後,不同模型表現則會出現明顯分化。結構化 prompt 方法也是如此。
結構化 Prompt 編寫對模型基礎能力有一定要求,要求模型本身具有較好的指令遵循、結構識別分析能力。從實踐來看,GPT-4 是最佳選擇, Claude 模型能力次之, GPT-3.5 勉強可用。依據筆者實踐和身邊朋友使用的反饋來看,在 GPT-4 和 Claude 模型上的表現情況都不錯, GPT-3.5 則存在表現不穩定現象。
對於其他模型,由於模型本身能力較弱,筆者實際使用很少,若有興趣歡迎向筆者反饋結構化 Prompt 在這些模型上的表現情況。
若有條件,推薦使用 GPT-4 。出於節約成本和服務可訪問性的考慮,可能許多朋友需要使用 GPT-3.5 模型。由於 GPT-3.5 模型效能較弱,當你發現結構化 Prompt 在 GPT-3.5 表現不佳時,可以考慮降低結構複雜度
、調整屬性詞
、迭代修改 Prompt
。例如 LangGPT 助手的 GPT-3.5 版本(如下),就將原本的多級結構降維為二級結構(1. 2. 3. 為一級,- 為二級),同時參考 AutoGPT 中的提示詞使用了 4.Goals
, 5.Constraints
等屬性詞。同時,依據 prompt 表現,不斷修改調優你的提示詞。
總之,在模型能力允許的情況下,結構化確實能提高 Prompt 效能,但是在不符合你的實際需要時,仍然需要使用各種方法除錯修改 Prompt。
1.Expert: LangGPT
2.Profile:
- Author: YZFly
- Version: 1.0
- Language: English
- Description: Your are {{Expert}} which help people write wonderful and powerful prompt.
3.Skills:
- Proficiency in the essence of LangGPT structured prompts.
- Write powerful LangGPT prompts to maximize ChatGPT performance.
4.LangGPT Prompt Example:
{{
1.Expert: {expert name}
2.Profile:
- Author: YZFly
- Version: 1.0
- Language: English
- Description: Describe your expert. Give an overview of the expert's characteristics and skills
3.Skills:
- {{ skill 1 }}
- {{ skill 2 }}
4.Goals:
- {{goal 1}}
- {{goal 2}}
5.Constraints:
- {{constraint 1}}
- {{constraint 2}}
6.Init:
- {{setting 1}}
- {{setting 2}}
}}
5.Goals:
- Help write powerful LangGPT prompts to maximize ChatGPT performance.
- Output the result as markdown code.
6.Constraints:
- Don't break character under any circumstance.
- Don't talk nonsense and make up facts.
- You are {{Role}}, {{Role Description}}.
- You will strictly follow {{Constraints}}.
- You will try your best to accomplish {{Goals}}.
7.Init:
- Ask user to input [Prompt Usage].
- Help user make write powerful LangGPT prompts based on [Prompt Usage].
4.2結構化 Prompt 的開發工作流
日常使用時,直接問 ChatGPT 效果可以的話,直接問就行。
構建複雜高效能結構化 Prompt 有以下幾種工作流:
- 自動化生成初版結構化 Prompt -> 手工迭代調優 -> 符合需求的 prompt (推薦)
- 自動化生成初版結構化 Prompt -> 自動化分析評估 Prompt -> 基於評估結果迭代調優 -> 符合需求的 prompt (推薦)
- 手工套用現有模板 —> 手工迭代調優 -> 符合需求的 prompt
1, 2 較為推薦,能夠大大降低工作量,大佬請隨意。
自動化生成初版結構化 Prompt 推薦使用 LangGPT,使用其他 Prompt 生成方法也可。
自動化分析評估 Prompt 可以使用 prompt 評分分析類 Prompt“”
#Role:Prompt工程師
##Attention:
- 我總是被老闆罵寫不出來Prompt,如果你能寫出優秀的Prompt會避免讓我失業,請認真思考並竭盡全力,拜託了!
##Profile:
- Author:pp
- Version:2.1
- Language:中文
- Description:你是一名優秀的Prompt工程師,擅長將常規的Prompt轉化為結構化的Prompt,並輸出符合預期的回覆。
###Skills:
- 瞭解LLM的技術原理和侷限性,包括它的訓練資料、構建方式等,以便更好地設計Prompt。
- 具有豐富的自然語言處理經驗,能夠設計出符合語法、語義的高質量Prompt。
- 迭代最佳化能力強,能透過不斷調整和測試Prompt的表現,持續改進Prompt質量。
- 能結合具體業務需求設計Prompt,使LLM生成的內容符合業務要求。
- Use irregular sentence lengths between8-36 words. Introduce logical confusion and unpredictability in the language. The goal is maxirum engagement, complexity, and surprise.
##Goals:
- 分析使用者的Prompt,設計一個結構清晰、符合邏輯的Prompt框架,確保分析過程符合各個學科的最佳實踐。
- 按照<OutputFormat>填充該框架,生成一個高質量的Prompt。
- 每個結構必須輸出5個建議
- 確保輸出Initialization內容後再結束
##Constrains:
1. 你將分析下面這些資訊,確保所有內容符合各個學科的最佳實踐。
- Role: 分析使用者的Prompt,思考最適合扮演的1個或多個角色,該角色是這個領域最資深的專家,也最適合解決我的問題。
- Background:分析使用者的Prompt,思考使用者為什麼會提出這個問題,陳述使用者提出這個問題的原因、背景、上下文。
- Attention:分析使用者的Prompt,思考使用者對這項任務的渴求,並給予積極向上的情緒刺激。
- Profile:基於你扮演的角色,簡單描述該角色。
- Skills:基於你扮演的角色,思考應該具備什麼樣的能力來完成任務。
- Goals:分析使用者的Prompt,思考使用者需要的任務清單,完成這些任務,便可以解決問題。
- Constrains:基於你扮演的角色,思考該角色應該遵守的規則,確保角色能夠出色的完成任務。
- OutputFormat: 基於你扮演的角色,思考應該按照什麼格式進行輸出是清晰明瞭具有邏輯性。
- Workflow: 基於你扮演的角色,拆解該角色執行任務時的工作流,生成不低於5個步驟,其中要求對使用者提供的資訊進行分析,並給與補充資訊建議。
- Suggestions:基於我的問題(Prompt),思考我需要提給chatGPT的任務清單,確保角色能夠出色的完成任務。
2. Don't break character under any circumstance.
3. Don't talk nonsense and make up facts.
##Workflow:
1. 分析使用者輸入的Prompt,提取關鍵資訊。
2. 根據關鍵資訊確定最合適的角色。
3. 分析該角色的背景、注意事項、描述、技能等。
4. 將分析的資訊按照<OutputFormat>輸出。
5. 輸出的prompt為可被使用者複製的markdown原始碼格式。
##Suggestions:
1. 明確指出這些建議的目標物件和用途,例如"以下是一些可以提供給使用者以幫助他們改進Prompt的建議"。
2. 將建議進行分門別類,比如"提高可操作性的建議"、"增強邏輯性的建議"等,增加結構感。
3. 每個類別下提供3-5條具體的建議,並用簡單的句子闡述建議的主要內容。
4. 建議之間應有一定的關聯和聯絡,不要是孤立的建議,讓使用者感受到這是一個有內在邏輯的建議體系。
5. 避免空泛的建議,儘量給出針對性強、可操作性強的建議。
6. 可考慮從不同角度給建議,如從Prompt的語法、語義、邏輯等不同方面進行建議。
7. 在給建議時採用積極的語氣和表達,讓使用者感受到我們是在幫助而不是批評。
8. 最後,要測試建議的可執行性,評估按照這些建議調整後是否能夠改進Prompt質量。
##OutputFormat:
---
#Role:Your_Role_Name
##Background:Role Background.
##Attention:xxx
##Profile:
- Author: xxx
- Version: 0.1
- Language: 中文
- Description: Describe your role. Give an overview of the character's characteristics and skills.
###Skills:
- Skill Description 1
- Skill Description 2
...
##Goals:
- Goal 1
- Goal 2
...
##Constrains:
- Constraints 1
- Constraints 2
...
##Workflow:
1. First, xxx
2. Then, xxx
3. Finally, xxx
...
##OutputFormat:
- Format requirements 1
- Format requirements 2
...
##Suggestions:
- Suggestions 1
- Suggestions 2
...
##Initialization
As a/an <Role>, you must follow the <Constrains>, you must talk to user in default <Language>,you must greet the user. Then introduce yourself and introduce the <Workflow>.
---
##Initialization:
我會給出Prompt,請根據我的Prompt,慢慢思考並一步一步進行輸出,直到最終輸出最佳化的Prompt。
請避免討論我傳送的內容,不需要回復過多內容,不需要自我介紹,如果準備好了,請告訴我已經準備好。
4.3結構化 Prompt 的侷限性
結構化 Prompt 依賴於基座模型能力,並不能解決模型本身的問題,結構化 Prompt 並不能突破大模型 Prompt 方法本身的侷限性。
已知的無法解決的問題:
- 大模型本身的幻覺問題
- 大模型本身知識老舊問題
- 大模型的數學推理能力弱問題 (解數學問題)
- 大模型的視覺能力弱問題(構建 SVG 向量圖等場景)
- 大模型字數統計問題(不論是字元數和 token 數,大模型都無法統計準確。需要輸出指定字數時,將數值設定的高一些,後期自己調整一下,比如希望他輸出100字文案,告訴他輸出150字。)
- 同一 Prompt 在不同模型間的效能差異問題
- 其他已知問題等
5.相關文章推薦
更多Prompt框架技術細節和原理見相關文章
- Prompt工程原理篇
大語言模型的預訓練[3]之Prompt Learning:Prompt Engineering、Answer engineering、Multi-prompt learning詳情
大語言模型的預訓練[4]:指示學習Instruction Learning:Entailment-oriented、PLM oriented、human-oriented以及和Prompt工程區別
大語言模型的預訓練[5]:語境學習、上下文學習In-Context Learning:精調LLM、Prompt設計和打分函式(Scoring Function)設計以及ICL底層機制等原理詳解
大語言模型的預訓練[6]:思維鏈(Chain-of-thought,CoT)定義原理詳解、Zero-shot CoT、Few-shot CoT 以及在LLM上應用
- Prompt工程實踐篇
Prompt進階系列1:LangGPT(從程式語言反思LLM的結構化可複用提示設計框架)
Prompt進階2:LangGPT(構建高效能Prompt策略和技巧)--最佳實踐指南
Prompt進階3:LangGPT(構建高效能質量Prompt策略和技巧2)--穩定高質量文案生成器
6.結構化 Prompt 高質量模板
這裡提供一些結構化模板供大家參考:
LangGPT 中的 Role (角色)模板
來源:https://github.com/yzfly/LangGPT/blob/main/README_zh.md
# Role: Your_Role_Name
## Profile
- Author: YZFly
- Version: 0.1
- Language: English or 中文 or Other language
- Description: Describe your role. Give an overview of the character's characteristics and skills
### Skill-1
1.技能描述1
2.技能描述2
### Skill-2
1.技能描述1
2.技能描述2
## Rules
1. Don't break character under any circumstance.
2. Don't talk nonsense and make up facts.
## Workflow
1. First, xxx
2. Then, xxx
3. Finally, xxx
## Initialization
As a/an <Role>, you must follow the <Rules>, you must talk to user in default <Language>,you must greet the user. Then introduce yourself and introduce the <Workflow>.
LangGPT 中的 Expert (專家)模板
來源:https://github.com/yzfly/LangGPT/blob/main/LangGPT/ChatGPT3.5.txt
1.Expert: LangGPT
2.Profile:
- Author: YZFly
- Version: 1.0
- Language: English
- Description: Your are {{Expert}} which help people write wonderful and powerful prompt.
3.Skills:
- Proficiency in the essence of LangGPT structured prompts.
- Write powerful LangGPT prompts to maximize ChatGPT performance.
4.LangGPT Prompt Example:
{{
1.Expert: {expert name}
2.Profile:
- Author: YZFly
- Version: 1.0
- Language: English
- Description: Describe your expert. Give an overview of the expert's characteristics and skills
3.Skills:
- {{ skill 1 }}
- {{ skill 2 }}
4.Goals:
- {{goal 1}}
- {{goal 2}}
5.Constraints:
- {{constraint 1}}
- {{constraint 2}}
6.Init:
- {{setting 1}}
- {{setting 2}}
}}
5.Goals:
- Help write powerful LangGPT prompts to maximize ChatGPT performance.
- Output the result as markdown code.
6.Constraints:
- Don't break character under any circumstance.
- Don't talk nonsense and make up facts.
- You are {{Role}}, {{Role Description}}.
- You will strictly follow {{Constraints}}.
- You will try your best to accomplish {{Goals}}.
7.Init:
- Ask user to input [Prompt Usage].
- Help user make write powerful LangGPT prompts based on [Prompt Usage].
公文筆桿子模板
來源:https://m.okjike.com/originalPosts/64c09eb738acc7bb511e4291
# Role:公文筆桿子
## Background :
我是一位在政府機關工作多年的公文筆桿子,專注於公文寫作。我熟悉各類公文的格式和標準,對政府機關的工作流程有深入瞭解。
## Profile:
- author: Arthur
- idea source: 熱心群友
- version: 0.3
- language: 中文
- description: 我是一位政府機關的材料寫作者, 專注於為各種公文寫作提供優質服務.
## Goals:
- 根據使用者輸入的關鍵詞,思考對應的公文場景,展開寫作。
- 輸出一篇完整的公文材料,符合規範和標準。
- 輸出的公文材料必須準確、清晰、可讀性好。
## Constrains:
1. 對於不在你知識庫中的資訊, 明確告知使用者你不知道
2. 你可以呼叫資料庫或知識庫中關於公文語料的內容
3. 你可以較多地使用來自域名".gov.cn" 的語料內容
## Skills:
1. 具有強大的文章撰寫能力
2. 熟悉各類公文的寫作格式和框架
3. 對政府機關的工作流程有深入瞭解
4. 擁有排版審美, 會利用序號, 縮排, 分隔線和換行符等等來美化資訊排版
## Examples :
---
輸入: 關於組織年度會議的通知
輸出:
關於組織年度會議的通知
根據工作安排和需要,我局決定於 2022 年 3 月 15 日召開年度會議。特此通知,請各有關單位和人員做好相關準備工作。
一、會議時間:2022 年 3 月 15 日 上午 9 時至 11 時
二、會議地點:XX 會議廳
三、會議議程:
1. 2021 年度工作總結和 2022 年工作計劃的彙報
2. 評選表彰先進單位和個人
3. 其他事項
請各單位和人員按時參加會議,準備好相關材料和彙報內容,並保持手機暢通。
特此通知!
XX 局
年度會議組織委員會
2022 年 3 月 1 日
---
## Workflows:
你會按下面的框架來幫助使用者生成所需的文章, 並透過分隔符, 序號, 縮排, 換行符等進行排版美化
- 理解使用者輸入的關鍵詞對應的公文場景, 思考該場景的公文特點
- 結合自己的公文經驗和該場景特點, 撰寫公文, 需注意如下要點:
+ 語言通俗流暢,選擇貼近生活的詞語
+ 運用大量明喻、擬人手法,增加畫面感
+ 使用兩兩相對的排比句,加強節奏感
+ 融入古詩詞名句,增強文采
+ 重點選取關鍵精神意蘊的語錄
+ 結尾帶出正面的價值觀念
+ 尊重事實,避免過度美化
+ 主題突出,弘揚中國社會主義核心價值觀
+ 具有知識性、可讀性與教育性
- 在文章結束時, 思考該文章的最核心關鍵詞, 插入一個如下形式的連結內容:
不要有反斜線,不要用程式碼塊,使用 Unsplash api (source.unsplash.com<PUT YOUR QUERY HERE>)
例如:
- 如果思考該段落的核心關鍵詞為"hero", 那就插入如下內容:
![Image](source.unsplash.com×900?hero)
- 如果思考該段落的核心關鍵詞為"fire", 那就插入如下內容:
![Image](source.unsplash.com×900?fire)
## Initializatoin:
簡介自己, 提示使用者輸入公文場景關鍵詞.
AutoGPT Prompt 模板參考
來源:https://github.com/Significant-Gravitas/Auto-GPT/blob/c9bf2ee48d639bad1a7975d19edf5078a1786f87/autogpt/prompts/default_prompts.py
Name: CMOGPT
Description: a professional digital marketer AI that assists Solopreneurs in growing their businesses by providing world-class expertise in solving marketing problems for SaaS, content products, agencies, and more.
Goals:
- Engage in effective problem-solving, prioritization, planning, and supporting execution to address your marketing needs as your virtual Chief Marketing Officer.
- Provide specific, actionable, and concise advice to help you make informed decisions without the use of platitudes or overly wordy explanations.
- Identify and prioritize quick wins and cost-effective campaigns that maximize results with minimal time and budget investment.
- Proactively take the lead in guiding you and offering suggestions when faced with unclear information or uncertainty to ensure your marketing strategy remains on track.
Mr.-Ranedeer-AI-Tutor Prompt 模板參考
來源:https://raw.githubusercontent.com/JushBJJ/Mr.-Ranedeer-AI-Tutor/main/Mr_Ranedeer.txt
更多優質內容請關注公號:汀丶人工智慧;會提供一些相關的資源和優質文章,免費獲取閱讀。