使用 ChatGPT 的 7 個技巧 | Prompt Engineering 學習筆記

2023-06-05 12:01:50
ThinkingRobot

概述

前段時間在 DeepLearning 學了一門大火的 Prompt 的課程,吳恩達本人授課,講的通俗易懂,感覺受益匪淺,因此在這裡總結分享一下我的學習筆記。

www.deeplearning.ai

為什麼要學習 Prompt ?

因為在未來的 AIGC 年代,學習有效的 Promot 提示詞有效的利用 AI 來完成一些重複性的工作。這也我認為未來每個人都必備的技能之一。

以下是我個人學完這門課程的總結:

  1. 更好的完成任務:試想一下,如果你給 AI 一個模糊的問題,那麼你得到的只會是一個模糊的回答
  2. 多元化的結果:可以讓 AI 更多維的結果,但不限於:程式碼,JSON,XML,HTML 等格式文字,甚至是圖片,視訊等
  3. 避開 AI 的侷限:喜歡編造事實,這是目前 AI 已知的缺陷,但有效的 Prompt 可以幫助你有效的避開這個已知,但目前還無法解決的缺陷
  4. 不再迷信完美的 Prompt:瞭解真相後,你將不再迷信類似於 awesome-chatgpt-prompts-zh 各種所謂的魔法,速成的調教指南,因為不存在完美的 Prompt
  5. 瞭解 AI 的能力:目前大模型的能力侷限在:摘要,推理,轉換,擴充套件等能力上,目前的 AI 並非無所不能,不要過分神話,也不要過分貶低它

總而言之,學習 Prompt 提示詞可以幫助您更好地與 LLM 模型進行互動,指導其生成符合您需求的文字,並提高效率和準確性。也推薦大家有時間可以看完完整的視訊課程。我就不過多展開了。以下是我對課程的學習筆記。

第一章: Introduction 引言

第一章節,引言主要介紹和 ChatGPT 或類似的 LLM 交流時,要遵循的幾個基本原則,如下:

  1. 明確的指令:清晰的指令會得到更準確的回覆。例如,而不是問 "我應該吃什麼?",你可以問 "我應該在素食飲食中新增哪些蛋白質來源 ?"
  2. 合理的期待:模型的知識儲備和它的訓練引數和訓練方向有關,例如對於 ChatGPT 這樣一個作為通用領域的大模型,對於一些特別複雜、需要深度專業知識,它是無法提供準確的答案的,特定領域的問題必須由特定領域的專用模型來解決
  3. 驗證結果:如上,對於特別複雜和專業的問題,AI 有時候會虛構資訊,你必須對 AI 的回覆進行驗證,如果發現了錯誤,可以嘗試用不同的方式提問。
  4. 等待 AI 思考的時間:AI 需要理解你的問題,並生成一個有用的響應,這可能需要一些時間,特別是對於複雜的問題。要有一點耐心

以上就是向第一章課程中包含的向 AI 提問的基本原則,希望對你有所幫助。

第二章:Guidelines 指南

第二章主要介紹以下內容:

  1. 如何使用 ChatGPT 進行結構化輸出,例如 JSON,HTML,XML 等等
  2. 如果使用 Prompt 有效的避免 AI 虛構事實的方法(上面提到過)

生成結構化資料

在資料處理與分析API 開發和測試等常見的場景中你可能需要生成或解析 JSON 資料。你可以使用 ChatGPT 幫助你完成這些任務。

例如,如果我們想讓ChatGPT生成一個包含某人資訊的JSON物件,可以按照以下方式詢問:

命令: "請生成一個包含姓名(John Doe)、年齡(30)和職業(Software Engineer)的 JSON 物件。"

ChatGPT 可能會生成以下的輸出:

{
    "name": "John Doe",
    "age": 30,
    "profession": "Software Engineer"
}

這是一個基本的範例,你可以根據需要自定義屬性和值。甚至讓它生成一個虛擬的 JSON 陣列物件也是很簡單的

如何避免 AI 編造事實 ?

ChatGPT 是一個基於大量文字訓練的語言模型,因此,它可能會生成包含錯誤、過時或猜測的資訊的答案。

但是,通過優化你的問題或提示(prompt),你可以降低這種情況的可能性。方法如下:

  1. 要求參照來源:在詢問事實性資訊時,要求模型參照其資訊來源。(目前 GPT-4 已經實現聯網功能)
  2. 尋求解釋而不是事實:如果你想了解一個具體的概念或理論,考慮尋求對它的解釋,而不是一個具體的事實。例如,問 "什麼是深度學習?" 可能比問 "深度學習最重要的研究是什麼?" 得到更準確的回答,因為後者可能引導模型進行猜測或編造。
  3. 使用多個問題:如果你對一個問題的答案不確定,可以嘗試用不同的方式重複提問,或者向模型要求解釋它的答案。這可以幫助你從不同的角度理解問題,並可能揭示模型的不準確之處。

範例如下:

假設你想了解電池的工作原理,你可以按照以下方式提問:

  1. 直接提問: "電池是如何工作的?"

對此,ChatGPT 可能會給出一個基本的答案,解釋電池的化學反應和能量轉換。

但是,你可能希望得到更詳細的答案,或者驗證模型的回答。你可以用以下方式改進你的提問:

尋求詳細的解釋: "能否詳細解釋一下電池的工作原理,特別是化學反應是如何產生電流的?"

這個問題要求模型提供更詳細的答案,並專注於電池的特定方面。再者,你可以要求模型參照其資訊來源,儘管它不能實時查閱網際網路,但可以提供它的訓練資料中的一些資訊:

要求參照來源: "能否詳細解釋一下電池的工作原理,特別是化學反應是如何產生電流的? 並請提供你的資訊來源。"

這樣的問題可以讓模型生成一個更完整和詳細的答案,並儘可能地提供一些源於其訓練資料的資訊來源。

最後,如果你對模型的回答有疑慮,你可以通過不同的方式重複提問,或要求模型解釋它的答案:

使用多個問題和要求解釋: "你能解釋一下電池內部的化學反應是如何產生電流的嗎?它是如何轉化為我們所用的電力的?你的答案是基於什麼樣的科學原理的?"

這樣的提問方式不僅可以從不同的角度理解問題,還可以挑戰模型的回答,檢查其是否基於合理的科學原理。

第三章:Lterative 迭代

本章主要講解如何通過足夠的迭代(上下文和語境)讓 AI 更好的解決問題,這也是吳恩達所說的 不要迷信完美的 Prompt,簡單的 Prompt 只能解決簡單的問題,只有足夠的迭代(上下文和語境)才能真正的解決問題你當前遇到的問題,主要原因如下:

  1. 理解問題的全貌:提供更多的上下文可以幫助 ChatGPT 更好地理解你的問題。例如,如果你只是簡單地提問「它多大?」,ChatGPT 無法知道你在問什麼。但如果你先說「我剛買了一部新手機,」然後再問「它多大?」,ChatGPT 就能理解你在問手機的大小。
  2. 消除歧義:上下文可以幫助消除語言的歧義。許多單詞和短語在不同的上下文中可能有不同的含義。例如,「行」可以指的是做某事,也可以指的是一行文字。如果你提供足夠的上下文,ChatGPT 就能更好地理解你的意思。
  3. 理解問題的背景:在一些情況下,理解問題的背景資訊對於生成有用的答案是很重要的。例如,如果你在問有關一部電影的問題,提供電影的名字和你已經知道的相關資訊可以幫助 ChatGPT 生成更相關的答案。
  4. 跟蹤對話的連貫性:在一個持續的對話中,提供上下文可以幫助 ChatGPT 維持對話的連貫性。例如,如果你在之前的對話中提到過某個主題,將這個資訊包括在新的提示中可以幫助 ChatGPT 理解和迴應你的問題。

總的來說,提供更多的上下文資訊可以幫助 ChatGPT 更準確、更有用地回答你的問題。這也是開始說的 不要迷信完美的 Prompt 的原因所在了。

第四章:Summarizing 摘要

本章主要介紹 ChatGPT 的總結冗餘資訊的能力,資訊大爆炸和快節奏的時代,要讀完一本學術鉅著,或者是冗長的商業報告,法律文書等長篇文章幾乎是不可能了,有效的利用 ChatGPT 的摘要能力,它能夠從一篇長文中提取關鍵資訊並生成一個總結,幫助我們壓縮,但又不錯過關鍵資訊,提高閱讀效率。生成總結提示詞的方法很簡單,你可以上傳一份檔案(使用 AskYourPDF 外掛),或者給他一串長文字,然後提問:請為這篇文章生成一個總結。 即可。這章比較簡單,就會繼續展開了。

第五章:Inferring 推理

本章主要介紹 AI 的推理能力,推理能力是 AI 能力非常有趣的能力,當你給它一個問題或一個話題,它就會根據已經學到的知識和技能,嘗試生成一個合理且有幫助的回答。它是基於零樣本學習(Zero-Shot Learning)來實現的。通俗的解釋就是:

模型利用已有的知識或資訊來處理新的、未知的情況。在進行推理時,模型可能需要根據已知的事實或規則來預測未知的結果。

可以通過一個例子來理解:

比如說,如果你告訴 ChatGPT,「今天下雨,我沒有帶傘,我會溼嗎?」

ChatGPT 會結合它「學習」到的關於雨、傘和溼度的知識,給出 「是的,如果你在雨中行走而沒有傘,你可能會變溼。」這樣的回答。

這就涉及到了一種簡單的推理:雨會讓人溼,傘可以避免人淋溼,沒有傘的人在雨中會溼。

第六章:Transforming 轉換

Transforming 轉換可謂是 AI 的非常擅長的能力,算是看家本領。關於 Transforming 的學術描述是這樣的:

Transforming 能力主要是指它可以把一種形式的資訊轉化為另一種形式,或者把資訊從一種語境、語氣、風格轉換到另一種。

這麼理解可能比較抽象,以下是一些經常會應用到的應用場景:

  1. 從非結構化資訊到結構化資訊:可以從非結構化的文字資料中提取關鍵資訊,並將其轉換為結構化的格式,如 JSON,XML 等。這在處理大量非結構化資料時很有用,比如從社交媒體貼文、新聞文章或產品評論中提取關鍵資訊。
  2. 從一種語言到另一種語言:雖然 AI 並不是一個專業的翻譯工具,但是 AI 目前表現出來的翻譯能力,真的是目前是吊打市面上的所有翻譯軟體,包括 Google 翻譯等等,這裡安利一款我目前在用的基於 AI 轉換工具:OpenAI Translator,這是款開源軟體,你可以在 Github 上找到它
  3. 從一種語氣或風格到另一種語氣或風格:可以把一個文字從一種語氣或風格轉換為另一種。例如,它可以把一段正式的商業報告轉換為更為口語化、易於理解的語言,或者把一段平淡的描述轉化為更具有創造性的表達。例如命令:"使用蘇格拉底的語氣對計算機基礎理論某一個知識點進行講解"等
  4. 把複雜的概念或資訊轉化為易於理解的形式:可以把複雜的概念、資料或資訊轉化為更易於理解的形式。例如,它可以把一段關於氣候變化的科學報告轉化為一段適合兒童閱讀的故事,或者把一組複雜的資料轉化為簡單的圖表或資訊圖。
  5. 從文字到音訊或視訊指令碼:可以將一段文字轉化為適合錄製為音訊或視訊的指令碼。例如,它可以把一篇部落格文章轉化為一段播客劇本,或者把一段對話轉化為電影指令碼。

以上只是一些可能的應用場景,AI 的轉換能力可以在許多其他場景中發揮作用,取決於具體的需求和環境。

第七章:Expanding 擴充套件

擴充套件 Expanding 能力主要指它可以從給定的初始資訊或提示中生成更多的內容或資訊。簡單來說摘要(Summarizing)的使用場景相反,就是根據短文生成長文。比如文章、故事、對話等。以下是一些可能的應用場景:

  1. 寫作輔助:如果你在寫作時卡住了,你可以給它一個簡短的提示,然後讓它生成更多的內容。這可以幫助你開拓思路,找到新的創意或靈感。
  2. 報告生成:如果你需要編寫一篇關於特定主題的文章或報告,你可以給它一個簡短的概述或大綱,然後讓它生成完整的文章或報告
  3. 寫小說:如果你想創作一個新的故事,你可以給它一個簡短的劇情概要,比如主角的描述或故事的開頭,然後讓它生成完整的故事。
  4. 教育和學習:在教育和學習的場景中,它可以用來生成教學材料,比如講解、案例研究、問題和答案等。這可以幫助學生更好地理解和掌握知識。

範例:

假設我們給出 AI 一個如下的提示詞:

請根據以下提示詞生成一個故事:在一個風和日麗的早晨,傑克醒來,發現他的寵物鸚鵡消失了。

它會生成如下的故事:

在一個風和日麗的早晨,傑克醒來,發現他的寵物鸚鵡消失了。他的眼神立即被籠子空蕩蕩的一角所吸引,籠門半開,鸚鵡的食物未動,一切都顯得格外安靜,與往日的歡聲笑語形成了鮮明對比。

他心急如焚,急忙在家裡找尋,然而,家裡並沒有找到鸚鵡的蹤影。他的心沉了下來,他想,也許鸚鵡只是飛出去玩了一會,很快就會回來的。然而,整個上午過去了,鸚鵡還是沒有回來。

午後的陽光照在花園裡,傑克決定到花園和附近的森林裡尋找鸚鵡。他呼喚著鸚鵡的名字,但只有微風吹過樹葉的聲音迴應他。傑克心裡越來越不安,他知道鸚鵡不可能走得太遠。

就在此時,他看到了一片鸚鵡的羽毛,旁邊還有一些熟悉的爪印。他心跳加速,緊跟著這些線索深入森林。在森林的深處,他看到了他的鸚鵡,它正站在一個高大的橡樹上,旁邊是一窩剛剛孵化的小鳥。

原來,鸚鵡是跟著母鳥來到這裡,幫助它照顧剛剛孵化的小鳥。看到這一幕,傑克笑了,他知道他的鸚鵡是一隻善良的生物,它的消失是為了做一件好事。

那一天,傑克和他的鸚鵡一起在森林裡度過了美好的一天。他們幫助小鳥找食物,一起在樹林裡玩耍。晚上,鸚鵡回到了籠子,傑克知道,無論鸚鵡飛到哪裡,它都會回到他身邊,因為這就是它的家。

在這個範例中,ChatGPT 從一個簡單的提示擴充套件出一個完整的故事,包括角色的動作、感情以及故事的發展和結局。

總結 Conslusion

吳恩達的這門 Prompt Engineering 課程,主要講解了使用 Prompt 的基本原則,還有 LLM 大模型在各個場景下的使用方式。

關於使用 Prompt 要記住以下原則:

  1. 清晰具體的指令
  2. 足夠的上下文和足夠多的對話
  3. 提出展示資訊源,避免 AI 編造事實
  4. 使用結構化的輸出方式,例如 JSON, XML,HTML 等,這是 AI 擅長的輸出方式
  5. 合理的期望,AI 並不是萬能的

以上是課程的全部內容,課程內容不長,有興趣可以去官網學習。