怎么用chatgpt分析文檔 你還在用聽不懂人話的 ChatGPT 嗎?
導讀
近年來,大模型如 等愈發強大的生成能力一次次引爆行業討論。你真的玩明白 GPT 等等 AIGC 工具了嗎?它是否足夠“聽話”、理解并滿足你所有的需求?提示詞工程是激活大模型能力的關鍵所在。可以說誰掌握 能力,誰就拿到了激活大模型強能力的鑰匙。本篇文章講述了 的基礎實用技巧和進階操作門道,無論你是 AIGC 入門小白還是已上手的玩家,看完文章將會有新啟發。歡迎閱讀~
目錄
1 什么是提示工程
2 提示工程基礎
2.1 提示四要素
2.2 通用技巧
2.3 簡單提示解析
3 提示工程進階
3.1 零/少樣本提示
3.2 思維鏈提示
3.3 思維鏈
3.4 主動提示
3.5 思維樹
3.6 頭腦風暴提示
3.7 多模態思維鏈
3.8 一致性提示
3.9 -Hint 提示
3.10 Plan-and- 提示
3.11 增強(檢索)提示
4 懶人萬能提示工程
01
什么是提示工程
提示工程是一門新興學科,就像是為大語言模型(LLM)設計的"語言游戲"。通過這個"游戲",我們可以更有效地引導 LLM 來處理問題。只有熟悉了這個游戲的規則怎么用chatgpt分析文檔,我們才能更清楚地認識到 LLM 的能力和局限。
這個"游戲"不僅幫助我們理解 LLM,它也是提升 LLM 能力的途徑。有效的提示工程可以提高大語言模型處理復雜問題的能力(比如一些數學推理問題),也可以提高大語言模型的擴展性(比如可以結合專業領域的知識和外部工具,來提升 LLM 的能力)。
提示工程就像是一把鑰匙,為我們理解和應用大語言模型打開了新的大門,無論是現在還是未來,它的潛力都是無窮無盡的。
02
提示工程基礎
2.1 提示四要素
通常一個 會包含以下四個元素中的若干個:
指令:希望 LLM 執行什么任務;
上下文:給 LLM 提供一些額外的信息,比如可以是垂直領域信息,從而引導 LLM 給出更好的回答;
輸入數據:希望從 LLM 得到什么內容的回答;
輸出格式:引導 LLM 給出指定格式的輸出。
2.2 通用技巧
設計提示詞經常是一個迭代的過程,需要不斷試驗才能獲得最佳結果。你可以從簡單的提示詞開始,隨著實驗深入,逐步添加更多的元素和上下文。在處理復雜任務時,可以將任務分解為簡單的子任務,逐步構建并優化。
比如你想讓一個語言模型來寫一首關于春天的詩。一個簡單的提示詞可能是:“寫一首關于春天的詩。” 隨著你對模型輸出的觀察,你可能發現需要更具體的指示,例如:“寫一首四行關于春天的詩,用押韻的方式。”
設計有效的提示詞,最好是使用明確的命令來指導模型完成你想要的任務,如“寫作”、“分類”、“總結”、“翻譯”、“排序”等。然后,根據具體任務和應用場景,嘗試使用不同的關鍵詞、上下文和數據,找出最佳的組合。
假設你希望模型能夠將一段英文翻譯成中文。你可以開始使用這樣的提示詞:“將以下文本翻譯成中文”,接著提供你要翻譯的英文段落。然而,如果你希望翻譯得更具有正式感,你可能需要添加更多上下文:“將以下的正式英文報告翻譯成同等正式的中文。”
當你需要模型執行特定任務或生成特定風格的內容時,詳細且明確的提示詞會得到更好的結果。
如果你想要模型生成一段描述美食的文本,你可能會這樣指示:“描述一道美味的意大利面。”但是,如果你希望得到關于某個特定菜品的詳細描述,你可能需要指示得更具體:“描述一道由新鮮番茄、大蒜、橄欖油和羅勒葉制成的意大利面的味道和口感。”
這里的明確類似于給 LLM 限定一些范圍,而不是泛泛而談。
比如你可能希望模型解釋一個科學概念,例如:“解釋相對論。”但如果你需要用非專業的語言來描述,你可能需要更明確的指示:“用易于理解的非科學語言解釋愛因斯坦的相對論。”
設計提示詞時,避免指示模型不要做什么,而是明確告訴它應該做什么。這將鼓勵更多的確定性,并聚焦于引導模型產生好的回應。
例如,你正在設計一個電影推薦的聊天機器人。一種可能的提示詞是:“推薦一部電影,但不要詢問任何個人信息。”然而,更有效的提示可能是:“根據全球熱門電影推薦一部電影。”
2.3 簡單提示解析
提示:“Reid 的簡歷:[粘貼完整的簡歷在這里]。根據以上信息,寫一個關于 Reid 的風趣的演講者簡介。”
分析:這個提示直接提供了 LLM 所需的信息,使得 LLM 能夠根據給定的信息來編寫一段介紹,并明確了簡歷的風格和用途。
提示:“[在這里粘貼全文]。總結上面文章的內容,用五個要點。”分析:這個提示明確地指出了任務——對文章進行總結,并制定了輸出的形式——五個要點。
提示:"寫一篇關于小型企業的生產力重要性的博客文章。"
分析:這個提示提供了明確的上下文,告訴 LLM 所需的內容類型(博客),以及博客文章需要涵蓋的具體主題(小型企業的生產力的重要性)。
提示:“以李白的風格寫一首關于落葉的詩。”
分析:這個提示要求 LLM 以特定的風格(李白的風格)寫詩,并給出了詩的主題(落葉)。這讓 LLM 知道了應該采用的寫作風格和主題。
提示:“作為一名專業的狗訓練師,寫一封電子郵件給一位剛剛得到一只3個月大的柯基的客戶,告訴他們應該做哪些活動來訓練他們的小狗。”
分析:在這個提示中,我們要求 LLM 扮演一個特定的角色(狗訓練師),并提供特定的上下文信息,如狗的年齡和類型。我們也指出了我們想要的內容類型(電子郵件)。
03
提示工程進階
3.1 零/少樣本提示
Zero-Shot :在這種情況下,模型接收到的提示沒有包含任何特定任務的示例。這意味著模型需要基于給定的提示,而沒有任何相關任務的先前示例,來推斷出應該執行的任務。例如,如果我們向模型提供提示 " the text to : ', how are you?'",那么模型將要根據這個提示,而沒有任何額外的翻譯示例,來執行翻譯任務。
Few-Shot :在這種情況下,模型接收到的提示包含了一些(通常是幾個)特定任務的示例。這些示例作為上下文,提供了關于期望輸出的線索。例如,如果我們想要模型進行文本翻譯,我們可能會提供如下的提示:
English: 'Cat'
French: 'Chat'
English: 'Dog'
French: 'Chien'
English: 'Bird'
French: 'Oiseau'
English: 'Elephant'
在這個例子中,模型通過前三個英法翻譯對的示例,理解了我們希望它將 '' 從英文翻譯成法文。因此,它會輸出 'élé'。
3.2 思維鏈提示
思維鏈的思想其實很簡單,就是給 LLM 通提供一些思考的中間過程,可以是用戶提供,也可以讓模型自己來思考。
少樣本思維鏈:就是用戶提供一些“解題步驟”,如下圖所示,左側直接讓 LLM 回答問題時它給出了錯誤的答案,但是右側通過在 中告訴模型解答步驟,最終給出的答案就是準確的。
零樣本思維鏈:嫌棄提供中間過程太麻煩?偷懶的辦法來了,零樣本思維鏈通過一句 實現了這一目標 “Let’s step by step”。
然而過于簡化的方法肯定也會存在一定局限性,比如 LLM 可能給出的是錯誤的思考過程。因此有了自動化思維鏈,通過采用不同的問題得到一些推理過程讓 LLM 參考。它的核心思想分兩步:
首先進行問題聚類,把給定數據集的問題分為幾個類型;
采樣參考案例,每個類型問題選擇一個代表性問題,然后用零樣本思維鏈來生成推理的中間過程。
3.3 思維鏈
這個工作的主要目的是讓 LLM 在對話時考慮用戶的狀態,比如用戶的 , 和 ,遵循的還是思維鏈套路,并且將思維鏈拆成了多個步驟(LLM 每次回答一點,不是一次性基于思維鏈全部回答)。這樣的好處在于用戶還可以修改、刪除中間過程的一些回答,原始的上下文和所有中間過程都會用于最終回答的生成。
3.4 主動提示
本質上還是思維鏈,由于人工設計的思維鏈或者自動化思維鏈的結果也并不一定理想(思維鏈的設計跟具體任務相關),因此提出了用不確定性來評估思維鏈的好壞,然后再讓人來修正一些不確定性比較大的思維鏈。
3.5 思維樹
Tree of (ToT)是思維鏈的進一步拓展,主要想解決 LM 推理過程存在兩個問題:不會探索不同的可能選擇分支;無法在節點進行前后向的探索。
ToT 將問題建模為樹狀搜索過程,包括四個步驟:問題分解、想法生成、狀態評價以及搜索算法的選擇。
3.6 頭腦風暴提示
主要考慮的是代碼生成方向,不過思想還是可以用在各種領域的提問。核心思想分為三步:
頭腦風暴:通過多個 喂給 LLM 得到多樣化的“思路”;
選擇最佳思路:這里用了一個神經網絡模型來打分,并用最高分的思路來作為最終 ;
代碼生成:基于問題和選擇出來的最佳思路進行代碼生成。
3.7 多模態思維鏈
今年一些需要多模態 LLM 也被提出,自然也有了一些多模態提示工程的嘗試,它包括兩個階段:
理由生成:在這個階段,我們將語言和視覺輸入提供給模型,以生成推理的理由。這個理由可以看作是解決問題的中間步驟或思考鏈的一部分。這個過程可以幫助模型理解問題的上下文,并為下一步的答案推斷做好準備。
答案推斷:在這個階段,我們將從第一階段生成的理由添加到原始的語言輸入中。然后,我們將更新后的語言輸入和原始的視覺輸入一起提供給模型,以推斷出答案。這個過程允許模型利用在理由生成階段獲得的信息來做出更準確的推斷。
3.8 一致性提示
核心思想就是少數服從多數,多讓模型回答幾次(這里的提問也用到了少樣本思維鏈),然后在 LLM 的多次回答中選擇出現多次的答案。
3.9 -Hint 提示
-Hint (PHP)類似于一致性提示的進階,試圖模擬人類推理的過程,通過反復檢查和修正答案來提高推理的準確性。具體來說,PHP 方法會對上一次的推理過程進行處理,然后將其合并到初始問題中,讓模型進行再次推理。當連續兩次的推理結果一致時,就認為得出的答案是準確的,并返回最終答案。
在 PHP 方法中,首次與 LLM 交互使用的 稱為基礎提示(Base )。基礎提示可以是標準提示、CoT 提示或者其他改進版本的提示。在隨后的交互中,將使用 PHP 提示,直到最新的兩個答案一致。
3.10 Plan-and- 提示
Plan-and- 提示的設計理念是讓模型制定一個解決問題的計劃,然后按照這個計劃來執行子任務,以此達到明確生成推理步驟的效果。
為了進一步增強 PS 提示的效果,作者擴展了它,形成了一種名為 PS+的新提示方式。PS+提示在 PS 提示的基礎上,添加了“pay to ”這樣的引導語句,要求模型在計算過程中更加精確。為了避免模型在處理問題時忽略了關鍵的變量和數值,PS+提示還增加了“ and ”這樣的引導語句。此外,為了強化模型在推理過程中計算中間結果的能力,PS+提示也加入了“ ”這樣的引導語句。通過這種方式,PS+提示進一步提高了模型在處理多步推理任務時的效果。
3.11 增強(檢索)提示
增強 LLM 本質上在做的事情還是提高提示詞的信息怎么用chatgpt分析文檔,從而更好地引導模型。這里主要可以有兩種方式,一種是用自己的私有知識庫來擴充 LLM 的知識,一種是借用 LLM 的知識庫來提高 的信息量。
3.11.1 外部知識庫
這里可以結合網上的信息或者個人的本地信息,如果是結合網上的信息(比如 ),其實就是需要結合一些爬蟲工具,撈出一些相關信息一起拼到 當中(也會需要比如做一些相關性的比較、摘要等)。結合本地知識庫也是目前業界內比較關注的方向,主要有以下幾步:
將本地知識庫轉為 保存。
對于用戶提問轉為 ,然后去數據庫查相關的信息。
檢索出本地知識庫相關的信息后,比如可以用如下提示拼接上檢索出來的信息。
Use the of
這樣 LLM 在回答時就能利用上私有的知識了。
3.11.2 LLM知識庫
因為 LLM 本身具有大量的通用知識儲備,只是你不提示它一下可能難以在大量知識中找出來給你回答。對于一些問題,我們可以先讓 LLM 產生一些相關的知識或事實(比如 some xxx),然后再利用這些輔助信息和原來的問題來提問, 處放上 LLM 給出的一些事實信息。
:
:
and :
前面提到的 Clue And 提示其實也屬于是在借用 LLM 的知識庫。
Clue and (CARP) 是一種用于文本分類的方法,它首先提示大型語言模型(LLMs)尋找表面線索,例如關鍵詞、語調、語義關系、引用等,然后基于這些線索引導出一個診斷推理過程進行最終決策。
(其實也適用于其他場景,讓模型幫忙提供點線索再給出最終答案)
盡管現有的預訓練語言模型(PLMs)在許多任務上表現出色,但它們仍然存在一些問題,比如在處理知識密集型任務時,它們往往不能充分利用模型中的潛在知識。
作者們提出了一種名為" "的方法,通過添加像"As far as I know"這樣的提示,讓模型回顧相關的潛在知識,并將其注入回模型以進行知識鞏固。這種方法的靈感來自于動物的反芻過程,即動物會將食物從胃中帶回口中再次咀嚼,以便更好地消化和吸收。
文章提出了三種不同類型的提示:
:這種提示旨在幫助模型思考背景知識。提示的形式是"As far as I know [MASK]"。這種提示鼓勵模型回顧和思考其已經知道的一般信息或背景知識。
:這種提示用于引發模型對提及的記憶。形式是" [], I know [MASK]"。這種提示鼓勵模型回顧和思考與特定主題或實體(即"[]")相關的知識。
Task :這種提示旨在幫助模型回憶任務的記憶。例如,對于情感分析,提示是" , I know [MASK]"。這種提示鼓勵模型回顧和思考與特定任務(例如情感分析)相關的知識。
04
懶人萬能提示工程
目前網上已經有不少 優化工具,比如 的插件中就有一個不錯的工具 ,能夠基于用戶給的 進行優化,再喂給 進行提問。
當然,經過前面那么多提示工程的介紹怎么用chatgpt分析文檔,大家也可以思考一下,如何用一個提示工程來幫助自己寫提示工程,下面是筆者之前做的一個工具,提示詞的效果肉眼可見提升。感興趣的也可以試試用 來優化自己的 。歡迎轉發分享~
參考文獻:
.
-of- in .
-of- in .
of in .
Self- of in .
-of- for to in- with LLM.
免責聲明:本文系轉載,版權歸原作者所有;旨在傳遞信息,不代表本站的觀點和立場和對其真實性負責。如需轉載,請聯系原作者。如果來源標注有誤或侵犯了您的合法權益或者其他問題不想在本站發布,來信即刪。
聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若本站內容侵犯了原著者的合法權益,可聯系本站刪除。