ChatGPT如何寫好Prompt編程示例詳解
引言
現(xiàn)在已經(jīng)產(chǎn)生了一種新職業(yè):Prompt Engineer(提示指令工程師),可見 Prompt 是多么重要,且編寫不易。
ChatGPT的產(chǎn)出,一半決定于它的實(shí)力,一半決定于你給它的指令,即Prompt。如果你在試用ChatGPT時(shí),發(fā)現(xiàn)它比較弱智,沒(méi)有大家傳誦的那么智能,多半原因是你比較”弱智“,不知道如何編寫它能清晰理解的指令。
這篇文章一起探討下,小白如何寫好 Prompt。
好的 prompt 具有的設(shè)計(jì)原則
- 清晰,切忌復(fù)雜或歧義,如果有術(shù)語(yǔ),應(yīng)定義清楚。
- 具體,描述語(yǔ)言應(yīng)盡量具體,不要抽象活模棱兩可。
- 聚焦,問(wèn)題避免太泛或開放。
- 簡(jiǎn)潔,避免不必要的描述。
- 相關(guān),主要指主題相關(guān),而且是整個(gè)對(duì)話期間,不要東一瓢西一瓤。
但這些原則比較抽象,不具有具體的指導(dǎo)意義,只能先做為整體的要求了解。
好與壞的舉例:
# 有效 Prompt 你能總結(jié)一下《鍛煉的好處》一文的要點(diǎn)嗎? # 聚焦、相關(guān) 巴黎最好的素食餐廳有哪些? # 具體、相關(guān) # 無(wú)效 Prompt 你能告訴我關(guān)于這個(gè)世界的什么? # 寬泛、開放 你能幫我做作業(yè)嗎? # 開放 你好 # 無(wú)目的、不聚焦
編寫良好prompt的四種基礎(chǔ)模式
四種基礎(chǔ)模式:
- By example (示例模式)
在這種模式下,我們給模型提供一些示例文本,模型需要生成與示例文本類似的文本。 這種模式通常用于生成類似于給定示例的文本,例如自動(dòng)生成電子郵件、產(chǎn)品描述、新聞報(bào)道等。 示例文本可以是單個(gè)句子或多個(gè)段落,具體取決于任務(wù)的要求。
示例中有什么格式或規(guī)律,讓AI自己發(fā)現(xiàn)。
- By instruction template (指令模板)
在這種模式下,我們給模型提供一些明確的指令,模型需要根據(jù)這些指令生成文本。 這種模式通常用于生成類似于技術(shù)說(shuō)明書、操作手冊(cè)等需要明確指令的文本。 指令可以是單個(gè)句子或多個(gè)段落,具體取決于任務(wù)的要求。
在給出prompt的時(shí)候,同時(shí)給出指令模板,約束輸入和輸出的互動(dòng)格式。
- By specific (特定指令)
在這種模式下,我們給模型提供一些特定信息,例如問(wèn)題或關(guān)鍵詞,模型需要生成與這些信息相關(guān)的文本。 這種模式通常用于生成答案、解釋或推薦等。 特定信息可以是單個(gè)問(wèn)題或多個(gè)關(guān)鍵詞,具體取決于任務(wù)的要求。
這些問(wèn)題或關(guān)鍵詞一定是AI可以理解和接受的,是預(yù)置的已經(jīng)存在的。
- By proxy(代理模式)
在這種模式下,可以充當(dāng)了一個(gè)代理,代表某個(gè)實(shí)體(例如人、角色、機(jī)器人等)進(jìn)行操作或交互。 代理模式的核心思想是引入一個(gè)中介對(duì)象來(lái)控制對(duì)實(shí)際對(duì)象的訪問(wèn),從而實(shí)現(xiàn)一定程度上的隔離和保護(hù)。 諸如于在 ChatGPT 中,"act as xxx" 可以讓 ChatGPT 充當(dāng)一個(gè)代理,扮演某個(gè)角色或?qū)嶓w的身份,以此來(lái)處理與該角色或?qū)嶓w相關(guān)的任務(wù)或請(qǐng)求。
這4個(gè)基礎(chǔ)模式都很歷害,它們可以推導(dǎo)出很多東西,包括下面的prompt編寫模板。
編寫一個(gè)合格的prompt的要點(diǎn)
- 讓AI扮演角色
- 提供要執(zhí)行的任務(wù)
- 給出完成任務(wù)的步驟
- 圍繞任務(wù)提供上下文
- 陳述具體目標(biāo),給出具體要求
- 要求格式化輸出
- 明確指定語(yǔ)言風(fēng)格
- 讓AI站在角色的角度
- 馬上給出具體的樣例
下面分別看,這些要點(diǎn)都指什么。
讓AI扮演角色
你想讓它扮演一個(gè)什么樣的角色,它便站在這樣的角色的立場(chǎng)思考。
舉例:你是...
你是一家頂級(jí)市場(chǎng)研究公司的才華橫溢的分析師...
我希望你充當(dāng)...
我希望你充當(dāng) JavaScript Console...
這種角色扮演ChatGPT竟然也毫不示弱,估計(jì)讓它扮演一只小狗也可以。
此外還有:
- 我想讓你扮演一個(gè)脫口秀喜劇演員...
- 我想讓你扮演講故事的角色...
- 我想讓你扮演一個(gè)小說(shuō)家...
- 我想讓你充當(dāng)書面作品的標(biāo)題生成器...
至于說(shuō),ChatGPT能扮演什么,不能扮演什么,沒(méi)有人知道,或許你能想到的它都能扮演,或許它只能扮演好一部分角色,但至少上面提供的角色,它都能很好的扮演,且已經(jīng)有人分享過(guò)相關(guān)的prompt。
結(jié)論:無(wú)論寫什么Prompt,開頭第一句先描述一下我們想讓ChatGPT充當(dāng)什么角色。如果沒(méi)有這樣的角色,就杜撰一個(gè),次數(shù)多了它可能也猜到是什么了。
明確提供要執(zhí)行的任務(wù)
可以查到已經(jīng)支持的任務(wù)有:文本分類、實(shí)體標(biāo)注、信息抽取、翻譯、生成、摘要提取、閱讀理解、推理、問(wèn)答、糾錯(cuò)、關(guān)鍵詞提取、相似度計(jì)算。
這些單詞在Prompt中都可以光明正大地出現(xiàn),它們都有人使用過(guò),ChatGPT都會(huì)理解得很好。
它有十大類基本能力:
- 文本生成: ChatGPT 可以生成各種格式的文本,例如寫故事、寫新聞文章或詩(shī)歌、寫代碼等。
- 自動(dòng)摘要: ChatGPT 可以將一段很長(zhǎng)的文本摘要成一個(gè)較短的版本。
- 自然語(yǔ)言理解 (NLU): ChatGPT 可以理解文本的含義,可用于情感分析、命名實(shí)體識(shí)別和文本分類等任務(wù)。
- 語(yǔ)言翻譯: ChatGPT 可以針對(duì)語(yǔ)言翻譯任務(wù)進(jìn)行微調(diào),將文本從一種語(yǔ)言翻譯成另一種語(yǔ)言。
- 對(duì)話生成: ChatGPT 可以生成類似人類的對(duì)話,使其適用于聊天機(jī)器人和虛擬助手應(yīng)用程序。
- 文本轉(zhuǎn)語(yǔ)音: ChatGPT 可以針對(duì)文本轉(zhuǎn)語(yǔ)音任務(wù)進(jìn)行微調(diào),將文本轉(zhuǎn)換為口語(yǔ)。
- 圖像字幕: ChatGPT 可以針對(duì)圖像字幕任務(wù)進(jìn)行微調(diào),它可以為圖像和視頻生成字幕。
- 閱讀理解: ChatGPT 可以針對(duì)閱讀理解任務(wù)進(jìn)行微調(diào),它可以根據(jù)給定的文本回答問(wèn)題。
- 問(wèn)答: ChatGPT 可以根據(jù)給定的上下文或知識(shí)庫(kù)回答問(wèn)題。
- 文本補(bǔ)全: ChatGPT 可以根據(jù)給定的上下文或提示來(lái)完成給定的文本。
這十大項(xiàng),及它們的子項(xiàng),都是它可以執(zhí)行的任務(wù)。
例如第一項(xiàng)能力中的:寫故事、想故事、編故事,字詞可以稍有差別,但都可能作為任務(wù)使用。
每一個(gè)prompt,都應(yīng)該至少有一個(gè)清晰的任務(wù)。 這很重要!
舉例:
我希望你充當(dāng) JavaScript console。我將鍵入命令,您將回復(fù) JavaScript console 應(yīng)顯示的內(nèi)容...
在這里“您將回復(fù) JavaScript console 應(yīng)顯示的內(nèi)容”,“回復(fù)內(nèi)容”便是給AI的明確的任務(wù)。
再舉一個(gè)例子:
我想讓你扮演一個(gè)小說(shuō)家。您將想出富有創(chuàng)意且引人入勝的故事...
在這里“您將想出富有創(chuàng)意且引人入勝的故事”,“想故事”便是任務(wù)。
再舉例:
我想讓你扮演一個(gè)脫口秀喜劇演員。我將...,您將...,根據(jù)這些話題創(chuàng)建一個(gè)例程...
在這里,“創(chuàng)建例程”便是任務(wù)。什么是例程?別擔(dān)心AI看不懂,多給它幾個(gè)樣例,它自然就懂了。它以于自己要完成的任務(wù),一半靠理解,一半猜測(cè),本質(zhì)上都是基于概率的推測(cè)。
再舉例:
我想讓你扮演講故事的角色。您將想出引人入勝、富有想象力和吸引觀眾的有趣故事...
這里的任務(wù)是什么?“想出故事”對(duì)不對(duì)?
給出完成任務(wù)的步驟
步驟是一個(gè)大于1的待辦事項(xiàng),且有先后依賴關(guān)系和前后次序。
舉例:
我希望你充當(dāng) JavaScript console。我將鍵入命令,您將回復(fù) JavaScript console 應(yīng)顯示的內(nèi)容...
這里的步驟是:
- 我將鍵入命令
- 你將回復(fù)內(nèi)容
這就是完成任務(wù)的步驟,是人類與AI共同協(xié)作完成的。
再舉例:
請(qǐng)做一個(gè)實(shí)體抽取任務(wù),從下面這段話中提取出人名和地名,并用json格式輸出: 劉亦菲( Crystal Liu,1987 年 8 月 25 日-[1])為 華裔美籍的女演員...
在這里:
- 提取出人名和地名
- 用json格式輸出
就是任務(wù)步驟。
再舉例:
我想讓你扮演一個(gè)脫口秀喜劇演員。我將為您提供一些與時(shí)事相關(guān)的話題,您將運(yùn)用您的智慧、創(chuàng)造力和觀察能力,根據(jù)這些話題創(chuàng)建一個(gè)例程...
在這里:
- 你瘵為你提供..話題
- 你運(yùn)用..創(chuàng)建例程
就是一個(gè)任務(wù)步驟。
圍繞任務(wù)提供上下文
描述上下文是為了讓AI更加清晰地理解我們的意圖,是代替多次互動(dòng)效果的。
舉例:
...根據(jù)目標(biāo)受眾,您可以為講故事環(huán)節(jié)選擇特定的主題或主題,例如,如果是兒童,則可以談?wù)搫?dòng)物;如果是成年人,那么基于歷史的故事可能會(huì)更好地吸引他們等等...
在這里:
- 如果是兒童,則可以..
- 如果成年人,那么..
這便是一種上下文環(huán)境的描述,它代表的是一種文字的正則表達(dá)式。
陳述具體目標(biāo),給出具體要求
舉例:
我想讓你充當(dāng)書面作品的標(biāo)題生成器。我會(huì)給你提供一篇文章的主題和關(guān)鍵詞,你會(huì)生成五個(gè)吸引眼球的標(biāo)題。請(qǐng)保持標(biāo)題簡(jiǎn)潔,不超過(guò) 20 個(gè)字,并確保保持原意...
在這里,“請(qǐng)保持標(biāo)題簡(jiǎn)潔,不超過(guò) 20 個(gè)字,并確保保持原”就是具體的,對(duì)生成目錄的要求。
再舉例:
...你可以選擇任何類型,如奇幻、浪漫、歷史小說(shuō)等,但你的目標(biāo)是寫出具有出色情節(jié)、引人入勝的人物和意想不到的高潮的作品...
在這里:
- “可以選擇任何類型,如奇幻、浪漫、歷史小說(shuō)等”這是Option標(biāo)準(zhǔn)
- “寫出具有出色情節(jié)、引人入勝的人物和意想不到的高潮”是對(duì)目標(biāo)提出的3個(gè)明確的要求
再舉例:
寫一篇簡(jiǎn)短的文章,說(shuō)明為什么文案寫作是 2023 年的一項(xiàng)基本技能。 使用這些策略: - 使用具有說(shuō)服力的語(yǔ)言 - 提出問(wèn)題以在段落之間過(guò)渡 - 用證據(jù)和例子支持要點(diǎn) - 直接與讀者對(duì)話
對(duì)于多項(xiàng)要求,也可以使用任務(wù)的輸入格式。不僅輸出格式可以指定,輸入格式也可以預(yù)先告知AI,方便AI理解。
要求格式化輸出
舉例:
創(chuàng)建關(guān)于使用 Notion 作為內(nèi)容創(chuàng)建者保持井井有條的主題的思維導(dǎo)圖,列出中心思想、主要分支和子分支。
在這里,列出“中心思想、主要分支和子分支”,就是人類指定的輸出格式。
下面是一些較用通用的格式描述:
要求其改變輸出:大綱;思維導(dǎo)圖;要點(diǎn); 有說(shuō)服力的文章; 少于 280 個(gè)字符的文本塊; 使用結(jié)構(gòu):1)什么,2)為什么,3)如何做。
這些字眼在Prompt中都可以出現(xiàn)。
明確指定語(yǔ)言風(fēng)格
舉例:
就如何使用 ChatGPT,創(chuàng)建更有效的內(nèi)容,提供最諷刺、嘲諷的建議。
這里的“諷刺、嘲諷”便是語(yǔ)言風(fēng)格,注意語(yǔ)言風(fēng)格可以要求極致,例如使用“最”,但不能相互矛盾,例如在同一個(gè)prompt中,要求AI同時(shí)使用專業(yè)且詼諧的語(yǔ)言風(fēng)格,雖然有時(shí)候它倆未必100%矛盾,但這種指定可能會(huì)讓AI無(wú)視你指定的風(fēng)格,因?yàn)樗鼰o(wú)法完成。
讓AI站在人物的角度,而非上帝視角
舉例:
主題:企業(yè)家的生產(chǎn)力 對(duì)于上述主題,從每個(gè)具有不同觀點(diǎn)角色的角度編寫多個(gè)觀點(diǎn)。對(duì)于每個(gè)觀點(diǎn),用角色自己的聲音寫,使用那個(gè)人會(huì)使用的短語(yǔ)...
馬上給出具體的樣例
舉例:
...我的第一個(gè)要求是“我需要一個(gè)關(guān)于毅力的有趣故事“...
在這里,“我需要一個(gè)關(guān)于毅力的有趣故事“,就是第一個(gè)輸入的樣例。樣例是互動(dòng)真正開始的地方,前面的內(nèi)容都是為此準(zhǔn)備的。
再舉例:
...我的第一個(gè)要求是“我要寫一部以未來(lái)為背景的科幻小說(shuō)”...
在這里,“我要寫一部以未來(lái)為背景的科幻小說(shuō)”,就是一個(gè)樣例。
小結(jié)
Prompt編寫”博大精深“,看起來(lái)簡(jiǎn)單,其實(shí)沒(méi)那么簡(jiǎn)單,要不為什么instagram上有人可以靠出售Prompt賺錢。能夠交易的,尤其是可以復(fù)制的文本,它一定具有不扉的價(jià)值。但其實(shí)經(jīng)過(guò)上面的研究,發(fā)現(xiàn)它也沒(méi)有那么難,對(duì)于個(gè)人來(lái)講,只需要研究某個(gè)垂直細(xì)分領(lǐng)域的Prompt如何編寫就可以了,這其實(shí)又不難。
以上就是ChatGPT如何寫好Prompt編程示例詳解的詳細(xì)內(nèi)容,更多關(guān)于ChatGPT Prompt編程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在VSCode中如何配置Python開發(fā)環(huán)境
VScode是一個(gè)相當(dāng)優(yōu)秀的IDE,具備開源、跨平臺(tái)、模塊化、插件豐富、啟動(dòng)時(shí)間快、顏值高、可高度定制等等優(yōu)秀的特質(zhì),所以用VScode來(lái)編寫Python,也是相當(dāng)?shù)暮糜玫摹K?,今天我們就?lái)講講,怎么在VScode上配置Python開發(fā)環(huán)境。2020-01-01使用.gitignore文件簡(jiǎn)化Git倉(cāng)庫(kù)管理
.gitignore文件用于指定在git中應(yīng)該被忽略的文件或目錄,前端的node_modules目錄包含大量文件,如果將其添加到版本管理系統(tǒng)中,會(huì)使倉(cāng)庫(kù)變得龐大,不利于倉(cāng)庫(kù)的管理,本文介紹了使用.gitignore文件來(lái)簡(jiǎn)化你的Git倉(cāng)庫(kù)管理2023-10-10fiddler抓包小技巧之自動(dòng)保存抓包數(shù)據(jù)的實(shí)現(xiàn)方法分析【可根據(jù)需求過(guò)濾】
這篇文章主要介紹了fiddler抓包小技巧之自動(dòng)保存抓包數(shù)據(jù)的實(shí)現(xiàn)方法,較為詳細(xì)的分析了fiddler自動(dòng)保存抓包數(shù)據(jù)及根據(jù)需求過(guò)濾相關(guān)操作技巧,需要的朋友可以參考下2020-01-01詳解VSCode打開多個(gè)項(xiàng)目文件夾的解決方法
這篇文章主要介紹了詳解VSCode打開多個(gè)項(xiàng)目文件夾的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04解決IDEA GIT記錄無(wú)法查看提交文件的問(wèn)題
這篇文章主要介紹了解決IDEA GIT記錄無(wú)法查看提交文件的問(wèn)題,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10GitHub入門教程 手把手教你最簡(jiǎn)單的開源項(xiàng)目托管
這篇文章主要介紹了GitHub入門教程 手把手教你最簡(jiǎn)單的開源項(xiàng)目托管,需要的朋友可以參考下2016-12-12