首頁 > 軟體

ChatGPT如何寫好Prompt程式設計範例詳解

2023-03-23 22:03:25

引言

現在已經產生了一種新職業:Prompt Engineer(提示指令工程師),可見 Prompt 是多麼重要,且編寫不易。

ChatGPT的產出,一半決定於它的實力,一半決定於你給它的指令,即Prompt。如果你在試用ChatGPT時,發現它比較弱智,沒有大家傳誦的那麼智慧,多半原因是你比較”弱智“,不知道如何編寫它能清晰理解的指令。

這篇文章一起探討下,小白如何寫好 Prompt。

好的 prompt 具有的設計原則

  • 清晰,切忌複雜或歧義,如果有術語,應定義清楚。
  • 具體,描述語言應儘量具體,不要抽象活模稜兩可。
  • 聚焦,問題避免太泛或開放。
  • 簡潔,避免不必要的描述。
  • 相關,主要指主題相關,而且是整個對話期間,不要東一瓢西一瓤。

但這些原則比較抽象,不具有具體的指導意義,只能先做為整體的要求瞭解。

好與壞的舉例:

# 有效 Prompt
你能總結一下《鍛鍊的好處》一文的要點嗎?  # 聚焦、相關
巴黎最好的素食餐廳有哪些?  # 具體、相關
# 無效 Prompt
你能告訴我關於這個世界的什麼?  # 寬泛、開放
你能幫我做作業嗎?  # 開放
你好  # 無目的、不聚焦

編寫良好prompt的四種基礎模式

四種基礎模式:

  • By example (範例模式)

在這種模式下,我們給模型提供一些範例文字,模型需要生成與範例文字類似的文字。 這種模式通常用於生成類似於給定範例的文字,例如自動生成電子郵件、產品描述、新聞報道等。 範例文字可以是單個句子或多個段落,具體取決於任務的要求。

範例中有什麼格式或規律,讓AI自己發現。

  • By instruction template (指令模板)

在這種模式下,我們給模型提供一些明確的指令,模型需要根據這些指令生成文字。 這種模式通常用於生成類似於技術說明書、操作手冊等需要明確指令的文字。 指令可以是單個句子或多個段落,具體取決於任務的要求。

在給出prompt的時候,同時給出指令模板,約束輸入和輸出的互動格式。

  • By specific (特定指令)

在這種模式下,我們給模型提供一些特定資訊,例如問題或關鍵詞,模型需要生成與這些資訊相關的文字。 這種模式通常用於生成答案、解釋或推薦等。 特定資訊可以是單個問題或多個關鍵詞,具體取決於任務的要求。

這些問題或關鍵詞一定是AI可以理解和接受的,是預置的已經存在的。

  • By proxy(代理模式)

在這種模式下,可以充當了一個代理,代表某個實體(例如人、角色、機器人等)進行操作或互動。 代理模式的核心思想是引入一箇中介物件來控制對實際物件的存取,從而實現一定程度上的隔離和保護。 諸如於在 ChatGPT 中,"act as xxx" 可以讓 ChatGPT 充當一個代理,扮演某個角色或實體的身份,以此來處理與該角色或實體相關的任務或請求。

這4個基礎模式都很歷害,它們可以推匯出很多東西,包括下面的prompt編寫模板。

編寫一個合格的prompt的要點

  • 讓AI扮演角色
  • 提供要執行的任務
  • 給出完成任務的步驟
  • 圍繞任務提供上下文
  • 陳述具體目標,給出具體要求
  • 要求格式化輸出
  • 明確指定語言風格
  • 讓AI站在角色的角度
  • 馬上給出具體的樣例

下面分別看,這些要點都指什麼。

讓AI扮演角色

你想讓它扮演一個什麼樣的角色,它便站在這樣的角色的立場思考。

舉例:你是...

你是一家頂級市場研究公司的才華橫溢的分析師...

我希望你充當...

我希望你充當 JavaScript Console...

這種角色扮演ChatGPT竟然也毫不示弱,估計讓它扮演一隻小狗也可以。

此外還有:

  • 我想讓你扮演一個脫口秀喜劇演員...
  • 我想讓你扮演講故事的角色...
  • 我想讓你扮演一個小說家...
  • 我想讓你充當書面作品的標題生成器...

至於說,ChatGPT能扮演什麼,不能扮演什麼,沒有人知道,或許你能想到的它都能扮演,或許它只能扮演好一部分角色,但至少上面提供的角色,它都能很好的扮演,且已經有人分享過相關的prompt。

結論:無論寫什麼Prompt,開頭第一句先描述一下我們想讓ChatGPT充當什麼角色。如果沒有這樣的角色,就杜撰一個,次數多了它可能也猜到是什麼了。

明確提供要執行的任務

可以查到已經支援的任務有:文字分類、實體標註、資訊抽取、翻譯、生成、摘要提取、閱讀理解、推理、問答、糾錯、關鍵詞提取、相似度計算。

這些單詞在Prompt中都可以光明正大地出現,它們都有人使用過,ChatGPT都會理解得很好。

它有十大類基本能力:

  • 文字生成:  ChatGPT 可以生成各種格式的文字,例如寫故事、寫新聞文章或詩歌、寫程式碼等。
  • 自動摘要:  ChatGPT 可以將一段很長的文字摘要成一個較短的版本。
  • 自然語言理解 (NLU):  ChatGPT 可以理解文字的含義,可用於情感分析、命名實體識別和文字分類等任務。
  • 語言翻譯:  ChatGPT 可以針對語言翻譯任務進行微調,將文字從一種語言翻譯成另一種語言。
  • 對話生成:  ChatGPT 可以生成類似人類的對話,使其適用於聊天機器人和虛擬助手應用程式。
  • 文字轉語音:  ChatGPT 可以針對文字轉語音任務進行微調,將文字轉換為口語。
  • 影象字幕:  ChatGPT 可以針對影象字幕任務進行微調,它可以為影象和視訊生成字幕。
  • 閱讀理解:  ChatGPT 可以針對閱讀理解任務進行微調,它可以根據給定的文字回答問題。
  • 問答:  ChatGPT 可以根據給定的上下文或知識庫回答問題。
  • 文字補全:  ChatGPT 可以根據給定的上下文或提示來完成給定的文字。

這十大項,及它們的子項,都是它可以執行的任務。

例如第一項能力中的:寫故事、想故事、編故事,字詞可以稍有差別,但都可能作為任務使用。

每一個prompt,都應該至少有一個清晰的任務。 這很重要!

舉例:

我希望你充當 JavaScript console。我將鍵入命令,您將回復 JavaScript console 應顯示的內容...

在這裡“您將回復 JavaScript console 應顯示的內容”,“回覆內容”便是給AI的明確的任務。

再舉一個例子:

我想讓你扮演一個小說家。您將想出富有創意且引人入勝的故事...

在這裡“您將想出富有創意且引人入勝的故事”,“想故事”便是任務。

再舉例:

我想讓你扮演一個脫口秀喜劇演員。我將...,您將...,根據這些話題建立一個例程...

在這裡,“建立例程”便是任務。什麼是例程?別擔心AI看不懂,多給它幾個樣例,它自然就懂了。它以於自己要完成的任務,一半靠理解,一半猜測,本質上都是基於概率的推測。

再舉例:

我想讓你扮演講故事的角色。您將想出引人入勝、富有想象力和吸引觀眾的有趣故事...

這裡的任務是什麼?“想出故事”對不對?

給出完成任務的步驟

步驟是一個大於1的待辦事項,且有先後依賴關係和前後次序。

舉例:

我希望你充當 JavaScript console。我將鍵入命令,您將回復 JavaScript console 應顯示的內容...

這裡的步驟是:

  • 我將鍵入命令
  • 你將回復內容

這就是完成任務的步驟,是人類與AI共同共同作業完成的。

再舉例:

請做一個實體抽取任務,從下面這段話中提取出人名和地名,並用json格式輸出:
劉亦菲( Crystal Liu,1987 年 8 月 25 日-[1])為 華裔美籍的女演員...

在這裡:

  • 提取出人名和地名
  • 用json格式輸出

就是任務步驟。

再舉例:

我想讓你扮演一個脫口秀喜劇演員。我將為您提供一些與時事相關的話題,您將運用您的智慧、創造力和觀察能力,根據這些話題建立一個例程...

在這裡:

  • 你瘵為你提供..話題
  • 你運用..建立例程

就是一個任務步驟。

圍繞任務提供上下文

描述上下文是為了讓AI更加清晰地理解我們的意圖,是代替多次互動效果的。

舉例:

...根據目標受眾,您可以為講故事環節選擇特定的主題或主題,例如,如果是兒童,則可以談論動物;如果是成年人,那麼基於歷史的故事可能會更好地吸引他們等等...

在這裡:

  • 如果是兒童,則可以..
  • 如果成年人,那麼..

這便是一種上下文環境的描述,它代表的是一種文字的正規表示式。

陳述具體目標,給出具體要求

舉例:

我想讓你充當書面作品的標題生成器。我會給你提供一篇文章的主題和關鍵詞,你會生成五個吸引眼球的標題。請保持標題簡潔,不超過 20 個字,並確保保持原意...

在這裡,“請保持標題簡潔,不超過 20 個字,並確保保持原”就是具體的,對生成目錄的要求。

再舉例:

...你可以選擇任何型別,如奇幻、浪漫、歷史小說等,但你的目標是寫出具有出色情節、引人入勝的人物和意想不到的高潮的作品...

在這裡:

  • “可以選擇任何型別,如奇幻、浪漫、歷史小說等”這是Option標準
  • “寫出具有出色情節、引人入勝的人物和意想不到的高潮”是對目標提出的3個明確的要求

再舉例:

寫一篇簡短的文章,說明為什麼文案寫作是 2023 年的一項基本技能。
使用這些策略:
- 使用具有說服力的語言
- 提出問題以在段落之間過渡
- 用證據和例子支援要點
- 直接與讀者對話

對於多項要求,也可以使用任務的輸入格式。不僅輸出格式可以指定,輸入格式也可以預先告知AI,方便AI理解。

要求格式化輸出

舉例:

建立關於使用 Notion 作為內容建立者保持井井有條的主題的思維導圖,列出中心思想、主要分支和子分支。 

在這裡,列出“中心思想、主要分支和子分支”,就是人類指定的輸出格式。

下面是一些較用通用的格式描述:

要求其改變輸出:大綱;思維導圖;要點;
有說服力的文章;
少於 280 個字元的文字塊;
使用結構:1)什麼,2)為什麼,3)如何做。

這些字眼在Prompt中都可以出現。

明確指定語言風格

舉例:

就如何使用 ChatGPT,建立更有效的內容,提供最諷刺、嘲諷的建議。

這裡的“諷刺、嘲諷”便是語言風格,注意語言風格可以要求極致,例如使用“最”,但不能相互矛盾,例如在同一個prompt中,要求AI同時使用專業且詼諧的語言風格,雖然有時候它倆未必100%矛盾,但這種指定可能會讓AI無視你指定的風格,因為它無法完成。

讓AI站在人物的角度,而非上帝視角

舉例:

主題:企業家的生產力  
對於上述主題,從每個具有不同觀點角色的角度編寫多個觀點。對於每個觀點,用角色自己的聲音寫,使用那個人會使用的短語...

馬上給出具體的樣例

舉例:

...我的第一個要求是「我需要一個關於毅力的有趣故事「...

在這裡,“我需要一個關於毅力的有趣故事“,就是第一個輸入的樣例。樣例是互動真正開始的地方,前面的內容都是為此準備的。

再舉例:

...我的第一個要求是「我要寫一部以未來為背景的科幻小說」...

在這裡,“我要寫一部以未來為背景的科幻小說”,就是一個樣例。

小結

Prompt編寫”博大精深“,看起來簡單,其實沒那麼簡單,要不為什麼instagram上有人可以靠出售Prompt賺錢。能夠交易的,尤其是可以複製的文字,它一定具有不扉的價值。但其實經過上面的研究,發現它也沒有那麼難,對於個人來講,只需要研究某個垂直細分領域的Prompt如何編寫就可以了,這其實又不難。

以上就是ChatGPT如何寫好Prompt程式設計範例詳解的詳細內容,更多關於ChatGPT Prompt程式設計的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com