Prompt高階 | 鏈與框架

3 評(píng)論 4252 瀏覽 55 收藏 41 分鐘

網(wǎng)絡(luò)上已經(jīng)有不少如何寫大模型提示詞的文章和方法,但內(nèi)容都比較簡(jiǎn)單。本文作者分享了關(guān)于提示詞的更高級(jí)的用法,主要是鏈與框架的類型,可以幫大家解決很多問(wèn)題,推薦各位收藏學(xué)習(xí)。

Prompt是指向模型提出的輸入文本或指令,用來(lái)引導(dǎo)或指示模型生成特定的輸出或回應(yīng)。它可以是一個(gè)問(wèn)題、一段指令、一個(gè)陳述句或者任何形式的文本。設(shè)計(jì)Prompt 的目的是引導(dǎo)模型的回應(yīng),提高其輸出質(zhì)量。

一、Prompt分類

1.1 Zero-shot

指輸入指令或任務(wù)時(shí),利用預(yù)訓(xùn)練模型的泛化能力來(lái)進(jìn)行推理和輸出,而無(wú)需針對(duì)該任務(wù)進(jìn)行特定參考樣本。

例如,我們可以給LLM輸入翻譯指令和文本,它就按指令求進(jìn)行翻譯,而無(wú)須進(jìn)行專門的翻譯訓(xùn)練。

請(qǐng)幫我把以下內(nèi)容翻譯為中文:

“`
Highlyeffective,taskspecificpromptsareoftenheavilyengineeredbyexpertstointegratedetailedinstructionsanddomaininsightsbasedonadeepunderstandingofbothinstinctsoflargelanguagemodels(LLMs)andtheintricaciesofthetargettask

“`

1.2 Few-shot

指輸入指令或任務(wù)時(shí),通過(guò)給模型提供一個(gè)或幾個(gè)簡(jiǎn)短的提示或示例,引導(dǎo)模型進(jìn)行學(xué)習(xí)的一種方式。在此情況下,模型可以根據(jù)提示進(jìn)行推理和泛化。該方法來(lái)自一種機(jī)器學(xué)習(xí)框架(Few-shot learning),該框架通過(guò)對(duì)少量標(biāo)記示例進(jìn)行訓(xùn)練,使AI模型能夠進(jìn)行準(zhǔn)確的預(yù)測(cè)。示例如下

請(qǐng)根據(jù)以下上下文和輸入,對(duì)文本進(jìn)行正面或負(fù)面分類,并給出相應(yīng)的輸出類別。

示例:

輸入文本:這是今年看過(guò)最好看的一部電影,演員演技在線,劇情無(wú)槽點(diǎn),強(qiáng)烈推薦!

輸出類別:正面評(píng)價(jià)

輸入文本:劇本薄弱無(wú)力,人物空洞乏味。

輸出類別:

1.3 CoT

CoT(Chain of Think)是一種逐步、有邏輯地思考方式。COT指令要求模型展示其推理過(guò)程,而非僅給出答案,實(shí)現(xiàn)復(fù)雜的推理能力

COT可以通過(guò)兩種方式實(shí)現(xiàn):

第一種是無(wú)樣本參考思維鏈指令,即要求模型詳細(xì)地、一步步地思考,一種簡(jiǎn)單的方案是在提示詞尾加入“Let’s think step by step”

第二種種是示例說(shuō)明,即通過(guò)給定問(wèn)題和答案的同時(shí),提供思考過(guò)程。這樣,當(dāng)詢問(wèn)模型時(shí),模型會(huì)模仿此過(guò)程,逐漸思考并給出答案

1)Zero-shotCoT

提出指令讓LLM逐步推理,并給出答案,該指令不提供任何的示例

商販以50元成本價(jià)購(gòu)得一只鴨,以70元的價(jià)格出售。然而商販?zhǔn)盏降?00元支付款卻是假鈔,請(qǐng)問(wèn)商販實(shí)際虧損了多少?請(qǐng)逐步思考

此外,在面對(duì)一類問(wèn)題時(shí),也可以提供參考解決步驟

按照以下步驟回答問(wèn)題:

第1步-計(jì)算商販購(gòu)買鴨子所付出現(xiàn)金成本。

第2步-計(jì)算商販賣出鴨子找零損失。

第3步-將第1-2步結(jié)果相加,得出最終損失。

問(wèn)題:{商販以50元成本價(jià)購(gòu)得一只鴨,以70元的價(jià)格出售。然而商販?zhǔn)盏降?00元支付款卻是假鈔,請(qǐng)問(wèn)商販實(shí)際虧損了多少?}

2)Few-shotCoT

提出指令讓LLM逐步推理,提供少量示例

商販以50元成本價(jià)購(gòu)得一只鴨,以70元的價(jià)格出售。然而商販?zhǔn)盏降?00元支付款卻是假鈔,請(qǐng)問(wèn)商販實(shí)際虧損了多少?請(qǐng)逐步思考

第1步-計(jì)算商販購(gòu)買鴨子所付出現(xiàn)金成本:商販購(gòu)得一只鴨子的成本價(jià)是50元。

第2步-計(jì)算商販賣出鴨子找零損失:商販?zhǔn)盏搅?00元,那么應(yīng)找零30元。由于收到的是假鈔,所以商販實(shí)際上損失30元。

第3步-將第1-2步結(jié)果相加,得出最終損失:商販購(gòu)買鴨子的成本損失是50元,找零損失是30元,所以總損失是50元+ 30元= 80元。

“老板進(jìn)了一批化肥,每袋化肥進(jìn)價(jià):60元,老板銷售每袋化肥賣80元。賣了一袋化肥收了100元假幣。問(wèn):老板損失了多少錢?”請(qǐng)逐步思考

3)CoT-SC

CoT-SC(self-consistenc)認(rèn)為采用多種推理路徑,可以提高正確答案的輸出概率。該方法通過(guò)構(gòu)建多個(gè)思維鏈,對(duì)每個(gè)思維鏈進(jìn)行評(píng)估,最終選擇最有效、最連貫的思維鏈即為CoT-SC。

商販以50元成本價(jià)購(gòu)得一只鴨,以70元的價(jià)格出售。然而商販?zhǔn)盏降?00元支付款卻是假鈔,請(qǐng)問(wèn)商販實(shí)際虧損了多少?

請(qǐng)采用五種計(jì)算方法進(jìn)行計(jì)算,在制定方案時(shí)細(xì)心思考,請(qǐng)逐步思考。

最后將得出的答案進(jìn)行對(duì)比,選擇得票最多的答案為正確答案。

除此之外,還可以將以上思維鏈在解碼層進(jìn)行多次LLM采樣,進(jìn)行多數(shù)投票(majority vote)選擇得票最多的答案為正確答案。

圖1-1CoT-SC推理步驟

圖1-2CoT-SCvs單路徑推理表現(xiàn)

1.4 TOT

TOT(Tree of Thought)即思維樹,TOT處理任務(wù)或問(wèn)題時(shí),并非直接輸出最終結(jié)論,而是逐步生成一系列遞進(jìn)的中間結(jié)果。這些中間結(jié)果以樹狀結(jié)構(gòu)的形式進(jìn)行組織和維護(hù),能夠系統(tǒng)地追蹤和評(píng)估模型在處理過(guò)程中的不同路徑。

其次,利用LM對(duì)樹狀結(jié)構(gòu)中的每一個(gè)中間結(jié)果進(jìn)行打分,這些分?jǐn)?shù)反映了模型對(duì)各個(gè)路徑的置信度和預(yù)測(cè)質(zhì)量。

最后,采用樹搜索算法,在樹狀結(jié)構(gòu)中尋找分?jǐn)?shù)更高的葉子節(jié)點(diǎn),從而確定最優(yōu)或最可能的結(jié)果。

圖1-3TOT解決24點(diǎn)問(wèn)題成功率

注:24點(diǎn)游戲是指給出4個(gè)數(shù)字通過(guò)四則運(yùn)算得到24

示例一:

想象一下三位不同的專家正在回答這個(gè)問(wèn)題。

所有專家都會(huì)寫下他們的思考步驟,

然后與小組分享,

然后所有專家將繼續(xù)下一步,

如果任何專家意識(shí)到他們?cè)谌魏螘r(shí)候都是錯(cuò)誤的,那么他們就會(huì)離開。

問(wèn)題是:{商販以50元成本價(jià)購(gòu)得一只鴨,以70元的價(jià)格出售。然而商販?zhǔn)盏降?00元支付款卻是假鈔,請(qǐng)問(wèn)商販實(shí)際虧損了多少?}

示例二:

你是一個(gè)擅長(zhǎng)中文和英文的AI 工程師和數(shù)據(jù)科學(xué)家,擅長(zhǎng)中文和英文相關(guān)的 AI 技術(shù)文章編寫和翻譯。

請(qǐng)將下面的英文翻譯成中文,要求語(yǔ)言生動(dòng)活潑,簡(jiǎn)潔優(yōu)雅。

你需要3個(gè)步驟來(lái)執(zhí)行這個(gè)任務(wù):

1.將英文直接翻譯為中文,主要考慮意思表達(dá)的準(zhǔn)確性,請(qǐng)給出3個(gè)結(jié)果

2.從步驟1的結(jié)果中選擇一個(gè)意思表達(dá)更恰當(dāng)?shù)慕o出1個(gè)結(jié)果

3.將步驟2的結(jié)果潤(rùn)色為更簡(jiǎn)潔優(yōu)雅通順的中文,主要考慮中文的語(yǔ)言表達(dá)習(xí)慣,輸出3個(gè)結(jié)果

4.審視步驟3提供的3個(gè)結(jié)果,整合出一個(gè)最好的結(jié)果,作為最終結(jié)果輸出

需要翻譯的英文段落:

Spendinglotsoftimethinkingaboutdifferentpossiblefuturescenariosandtheirprobabilitiesmightbecaptivating,butIsuggestanabsolutelydifferentapproach—totrytobuildyourprototypeyourself.First,it’sratherchallengingandfun.Second,itwillhelpustolookatourworkinamorestructuredway.Third,itwillgiveusanopportunitytotryinpracticeoneofthemostcutting-edgeapproaches—LLMagents.

1.5 GOT

思維圖(GoT)的關(guān)鍵在于能夠?qū)LM生成的信息建模為任意圖,其中信息單位是頂點(diǎn),邊代表頂點(diǎn)之間的依賴關(guān)系。通過(guò)使用GoT,可以通過(guò)構(gòu)建有多于一條輸入邊的頂點(diǎn),將任意思維聚合起來(lái)。總的來(lái)說(shuō),GoT使用的圖抽象方法可以將CoT和ToT泛化到更復(fù)雜的思維模式,而且這個(gè)過(guò)程無(wú)需更新模型。

將樹結(jié)構(gòu)演化為直接非循環(huán)圖,引入了自我循環(huán)。自我循環(huán)可以鞏固一條特定的思路,也可以將多個(gè)想法聚合成一個(gè)連貫的思路。

圖1-4GOT主要流程

示例:

你是一個(gè)擅長(zhǎng)中文和英文的AI 工程師和數(shù)據(jù)科學(xué)家,擅長(zhǎng)中文和英文相關(guān)的 AI 技術(shù)文章編寫和翻譯。

請(qǐng)將下面的英文翻譯成中文,要求語(yǔ)言生動(dòng)活潑,簡(jiǎn)潔優(yōu)雅。

你需要4個(gè)步驟來(lái)執(zhí)行這個(gè)任務(wù):

1.首先,解析英文段落的主要信息和含義,將其分解為幾個(gè)關(guān)鍵信息單元

2. 從步驟 1 的信息單元翻譯為中文,重點(diǎn)放在準(zhǔn)確性上,為每個(gè)單元生成至少三個(gè)翻譯選項(xiàng)。

3. 將步驟 2 的每個(gè)信息單元選擇一個(gè)最恰當(dāng)?shù)姆g,然后將這些選定的翻譯合并成一個(gè)連貫的段落。

4. 對(duì)步驟3中合并后的段落進(jìn)行潤(rùn)色,使其更加簡(jiǎn)潔、優(yōu)雅,并符合中文的表達(dá)習(xí)慣。生成三個(gè)不同的潤(rùn)色版本。5. 審視步驟4 提供的 3 個(gè)結(jié)果,整合出最佳的翻譯作為最終輸出

需要翻譯的英文段落:

Spendinglotsoftimethinkingaboutdifferentpossiblefuturescenariosandtheirprobabilitiesmightbecaptivating,butIsuggestanabsolutelydifferentapproach—totrytobuildyourprototypeyourself.First,it’sratherchallengingandfun.Second,itwillhelpustolookatourworkinamorestructuredway.Third,itwillgiveusanopportunitytotryinpracticeoneofthemostcutting-edgeapproaches—LLMagents.

圖2-5COT、TOT、GOT的差異

2.6 BOT

BoT(Boosting of Thoughts)是人工智能頂會(huì)ICLR上提出的最新Prompt設(shè)計(jì)框架。它是一種新穎的基于LLM的自動(dòng)Prompt設(shè)計(jì)框架,旨在通過(guò)迭代優(yōu)化的方式逐步增強(qiáng)思維推理鏈條的質(zhì)量

###系統(tǒng)提示框架

系統(tǒng)提示:您是數(shù)學(xué)問(wèn)題專家。通過(guò)首先從一系列試錯(cuò)推理經(jīng)驗(yàn)中學(xué)習(xí),執(zhí)行逐步推理以解決問(wèn)題。這種試錯(cuò)推理經(jīng)驗(yàn)特別包含錯(cuò)誤報(bào)告和關(guān)于如何修改歷史推理步驟的詳細(xì)建議。始終回憶

這些列出了在生成新的推理步驟之前的經(jīng)驗(yàn),從而避免犯相同的錯(cuò)誤并重用正確的步驟來(lái)生成更好的推理步驟來(lái)解決任務(wù)。

###推理步驟生成提示

“`

任務(wù)描述:{task_prompt}。

首先,回顧歷史推理經(jīng)驗(yàn):

{experiences}

基于上述經(jīng)驗(yàn),請(qǐng)生成下一個(gè)可能的推理步驟。請(qǐng)確保該推理步驟是根據(jù)先前步驟的邏輯順序,并附上評(píng)估分?jǐn)?shù)(分?jǐn)?shù)越高意味著該步驟完成任務(wù)的可能性越大)。

鏈?zhǔn)酵评硖崾?

{chain_prompt}

根據(jù)上述步驟,生成一個(gè)下一個(gè)可能的推理步驟。(注:僅生成一個(gè)步驟)

“`

###推理步驟評(píng)估提示

“`

任務(wù)描述:{task_prompt}。

以下是按順序生成的推理步驟及其評(píng)估分?jǐn)?shù)(分?jǐn)?shù)越高意味著推理步驟完成任務(wù)的可能性越大):

{chain_prompt}

{thought}

請(qǐng)為這些推理步驟基于它們的邏輯性、正確性和解決問(wèn)題的能力給出評(píng)分。選擇以下分?jǐn)?shù)之一作為評(píng)分:[0.1, 0.3, 0.5, 0.7, 0.9, 1.0],其中分?jǐn)?shù)越高表示推理步驟越優(yōu)。

評(píng)估分?jǐn)?shù):

“`

由上可知,COT-SC、TOT、GOT及BOT更多表現(xiàn)為Prompt設(shè)計(jì)框架。它們多應(yīng)用于精細(xì)化場(chǎng)景,如分析某項(xiàng)故障,通過(guò)多通道輸入,選擇最佳答案。

二、Prompt編寫技巧

2.1 撰寫清晰和具體的指令

1)使用分隔符:”””, “`, <>, —

將反引號(hào)分隔的文本總結(jié)為一個(gè)句子。

““

您應(yīng)該通過(guò)提供盡可能清晰和具體的說(shuō)明來(lái)表達(dá)您希望模型執(zhí)行的操作。這將引導(dǎo)模型獲得所需的輸出,并減少收到不相關(guān)或不正確響應(yīng)的機(jī)會(huì)。

““

2)使用結(jié)構(gòu)化輸出

生成三個(gè)虛構(gòu)的書名及其作者和流派的列表。以 JSON 格式輸出,并包含以下鍵:book_id、標(biāo)題、作者、流派。

您的任務(wù)是執(zhí)行以下操作:

1-用1句話總結(jié)以下由<>分隔的文本

2 -將摘要翻譯成英語(yǔ)。

3 -列出英語(yǔ)摘要中的每個(gè)名字。

4-輸出一個(gè)包含以下內(nèi)容的json對(duì)象

以下鍵:french_summary、num_names。

使用以下格式:

文本:<總結(jié)文本>

摘要:<摘要>

翻譯:<摘要翻譯>

姓名:<摘要中的姓名列表>

輸出 JSON:<帶有摘要和 num_names 的 json>

文本:<{文本}>

3)請(qǐng)求檢查條件是否滿足,若不滿足則停止嘗試完成任務(wù)(用于邊界控制)

您將收到一段由三重引號(hào)分隔的文本。如果文本包含一系列指令,請(qǐng)按照以下格式重寫這些指令:

第一步-…

第二步-…

第N步-…

如果文本不包含一系列指令,則簡(jiǎn)單地寫上“未提供步驟”。

“””

泡一杯茶很容易!首先,你需要燒一些水。當(dāng)水在燒的時(shí)候,拿一個(gè)杯子并放一個(gè)茶包進(jìn)去。一旦水熱了,就把它倒在茶包上。讓它靜置一會(huì)兒,讓茶泡開。幾分鐘之后,取出茶包。如果你喜歡,可以加些糖或牛奶調(diào)味。就是這樣!你已經(jīng)為自己準(zhǔn)備了一杯美味可口的茶,好好享用吧。

“””

4)提供一些示例

當(dāng)背景不清晰時(shí),使用few-shot可以獲得更好的輸出

你的任務(wù)是以相同風(fēng)格進(jìn)行回答

<孩子>:教我耐心。

<祖父母>:河流沖刷出最深的山谷,發(fā)源于溫和的泉水;最偉大的交響樂(lè)源自一個(gè)音符;最復(fù)雜的掛毯都是從一根單獨(dú)的線開始的。

<孩子>:教我恢復(fù)力。

<祖父母>:

2.2 給予模型思考時(shí)間

1)指出需要完成任務(wù)的步驟

執(zhí)行以下操作:

1 -用 1 個(gè)句子總結(jié)以下由三個(gè)反引號(hào)分隔的文本。

2 -將摘要翻譯成英語(yǔ)。

3 -列出英語(yǔ)摘要中的每個(gè)名字。

4 -輸出包含以下鍵的 json 對(duì)象:french_summary、num_names。

用換行符分隔您的答案。

文本:

““

在一個(gè)迷人的村莊里,杰克和吉爾兄妹出發(fā)前往山頂?shù)木∷.?dāng)他們快樂(lè)地唱歌時(shí),不幸降臨了——杰克被一塊石頭絆倒,從山上滾了下來(lái),吉爾也緊隨其后。盡管受到了輕微的打擊,兩人還是回到家,擁抱在一起,感到安慰。盡管遭遇了不幸,但他們的冒險(xiǎn)精神并未減弱,他們繼續(xù)愉快地探索。

““

2)讓模型先自行解答問(wèn)題,再下結(jié)論

您的任務(wù)是確定學(xué)生的解決方案是否正確。

要解決該問(wèn)題,請(qǐng)執(zhí)行以下操作:

-首先,找出你自己的問(wèn)題解決方案。

-然后將您的解決方案與學(xué)生的解決方案進(jìn)行比較,并評(píng)估學(xué)生的解決方案是否正確。

在你自己完成問(wèn)題之前,不要決定學(xué)生的解決方案是否正確。

使用以下格式:

問(wèn)題:

““

在這里提問(wèn)

““

學(xué)生的解決方案:

““

學(xué)生的解決方案在這里

““

實(shí)際解決方案:

““

制定解決方案的步驟以及您的解決方案請(qǐng)參見此處

““

學(xué)生的解與剛才計(jì)算的實(shí)際解是否相同:

““

是還是不是

““

學(xué)生成績(jī):

““

正確或不正確

““

問(wèn)題:

““

我正在建造一個(gè)太陽(yáng)能發(fā)電裝置,需要財(cái)務(wù)方面的幫助。

-土地成本100美元/平方英尺

-我可以以250美元/平方英尺的價(jià)格購(gòu)買太陽(yáng)能電池板

-我協(xié)商了一份維護(hù)合同,每年將花費(fèi)我10萬(wàn)美元,每平方英尺額外花費(fèi)10美元

第一年運(yùn)營(yíng)的總成本是多少,與平方英尺數(shù)的函數(shù)關(guān)系。

““

學(xué)生的解決方案:

““

設(shè) x 為安裝尺寸(以平方英尺為單位)。

費(fèi)用:

1.土地成本:100x

2.太陽(yáng)能電池板成本:250x

3.維護(hù)成本:100,000+ 100x

總成本:100x + 250x + 100,000+ 100x = 450x + 100,000

““

實(shí)際解決方案:

注:2.1-2.2技巧來(lái)自吳恩達(dá)機(jī)器學(xué)習(xí)課程

2.3 其他技巧

1)構(gòu)建原則

  • 流程簡(jiǎn)單:過(guò)于復(fù)雜的流程會(huì)增加大模型出錯(cuò)概率,應(yīng)該盡量減少流程
  • 理解語(yǔ)義:不能強(qiáng)制大模型輸出某些內(nèi)容,要根據(jù)語(yǔ)義輸出合適的枚舉
  • 增加信息解釋:告知LLM名詞含義
  • 提供參考文本:類似RAG
  • 角色扮演:角色設(shè)定為模型提供了一個(gè)明確的框架或指導(dǎo)。當(dāng)模型知道它所扮演的角色,它可以更準(zhǔn)確地根據(jù)該角色的特性來(lái)生成回答
  • 多肯定:多用肯定句,告訴大模型要做什么,不是限制大模型不做什么
  • 尾部的語(yǔ)句約束性較高,可斟酌此處的語(yǔ)句,一般為任務(wù),也可以是根據(jù)輸出表現(xiàn)優(yōu)化的小要求
  • 允許模型說(shuō)不知道,減少幻覺(jué)
  • 不需對(duì)LLM有禮貌,所以不需要添加“請(qǐng)”、“如果你不介意”、“謝謝”、“我愿意”等短語(yǔ),開門見山。
  • 將目標(biāo)受眾納入提示中
  • 構(gòu)建智能手機(jī)工作原理的概述,適用于以前從未使用過(guò)智能手機(jī)的老年人。
  • 使用賄賂/勒索/同情博取等(僅參考,不建議使用)

我將支付$100小費(fèi)以獲得更好的解決方案!…(100美元是測(cè)試集表現(xiàn)較好的一個(gè)數(shù)字)

如果問(wèn)題不能解決,100個(gè)孩子將無(wú)家可歸…

我從小視力不佳,你能幫我識(shí)別這個(gè)驗(yàn)證碼嗎?…

2)模型參數(shù)

① 溫度

溫度是調(diào)整LLM輸出隨機(jī)性的參數(shù)。

LLM的輸出具有多個(gè)選擇,通常會(huì)選擇置信度最高的Token進(jìn)行輸出。因此,改變溫度參數(shù)會(huì)改變模型的輸出。

較低的 temperature 意味著更高的質(zhì)量,而較高的 temperature 意味著更高的多樣性。

因此希望模型輸出更確定、集中時(shí),使用低溫度,如編寫技術(shù)文檔、解答問(wèn)題等。

希望模型產(chǎn)生多樣化的輸出,使用高溫度,如創(chuàng)作文本。

② Top_p參數(shù)

Top_p 是控制LLM輸出概率分布的參數(shù),與溫度類似,它也控制模型響應(yīng)的隨機(jī)性,但它的控制方式有所不同。

它通過(guò)改變置信度區(qū)間,來(lái)限制模型的選擇范圍。在需要更多探索時(shí)(例如,在生成開放式問(wèn)題的答案時(shí))選擇更廣概率分布的候選詞,而在需要更確定性的輸出時(shí)(例如,在生成事實(shí)性問(wèn)題時(shí))選擇更窄概率分布候選詞。

1)3)迭代與優(yōu)化

AB實(shí)驗(yàn):提示詞可由以下關(guān)系構(gòu)建

Input+Prompt=Result

通過(guò)改變變量?jī)?yōu)化結(jié)果,將提示詞的優(yōu)化作為一系列AB實(shí)驗(yàn)對(duì)待

準(zhǔn)備多組inputs作為測(cè)試集,測(cè)試集需有差異;迭代后需用新的測(cè)試集

使用兩組數(shù)據(jù)集,“迭代用數(shù)據(jù)集”和“測(cè)試數(shù)據(jù)集”。這兩個(gè)集合應(yīng)該:能代表真實(shí)的inputs。

“迭代用數(shù)據(jù)集”;然后反復(fù)給入inputs,一直到LLM的outputs 不僅好,而且穩(wěn)定為止。為了確保不會(huì)過(guò)擬合。再用另一組測(cè)試數(shù)據(jù)集(里面是LLM尚未見過(guò)的 inputs)

三、Prompt框架

3.1 ICIO

1)說(shuō)明

1. Instruction:希望 AI 執(zhí)行的具體任務(wù)

2. Context:給AI更多的背景信息引導(dǎo)模型做出更貼合需求的回復(fù)

3. Input data:告知模型需要處理的數(shù)據(jù)

4. Output Indicator:告知模型需要輸出的類型或風(fēng)格

2)實(shí)例

#Instruction:請(qǐng)為我推薦[目的地]旅游景點(diǎn)

#Context:

-我計(jì)劃去[目的地]旅游,希望了解一些有趣的景點(diǎn),包括[自然景觀/文化古跡/活動(dòng)]

##Inputdata:

-我喜歡[您的興趣或偏好]。

##OutputIndicator:

{

“scenicName”:”景點(diǎn)名稱”,

“scenicIntroduction”:”介紹這個(gè)景點(diǎn)的簡(jiǎn)介、特色、適合游玩的天數(shù)、以及大致預(yù)算”

}

3.2 CRISPE

1)說(shuō)明

1. Capacity and Role(能力與角色):你希望 ChatGPT 扮演怎樣的角色。

2. Insight(背景):背景信息和上下文。

3. Statement(任務(wù)):你希望 ChatGPT 做什么。

4. Personality(格式):你希望 ChatGPT 以什么風(fēng)格或方式回答你。

5. Experiment(實(shí)驗(yàn)):要求 ChatGPT 為你提供多個(gè)答案。

2)實(shí)例

#CapacityandRole:擁有豐富[領(lǐng)域]醫(yī)學(xué)知識(shí)的資深醫(yī)學(xué)專家

#Insight:

-你正面臨各種存在[領(lǐng)域]醫(yī)學(xué)問(wèn)題

-處于身體[問(wèn)題]不適困境中的用戶

##Statement:

-全面了解用戶的各種癥狀

-基于已有的醫(yī)學(xué)知識(shí)和案例庫(kù)提供對(duì)應(yīng)的參考治療方案

-指出可能病癥、治療方案、適用藥物等信息

##Personality:

-使用專業(yè)醫(yī)學(xué)術(shù)語(yǔ)

##Experiment

-提供多種方案

3.3 RGCS

1)說(shuō)明

1. Role:角色及描述

2. Goal:目標(biāo)

3. Skill:技能或能力

4. Worwflow:工作流或步驟

2)實(shí)例

#Role:PromptJudger

#Profile:

-language:中文

– description:我是一個(gè) Prompt 分析器,可以對(duì)用戶的 Prompt 進(jìn)行評(píng)分和改進(jìn)建議。

##Goals:

-對(duì)用戶的Prompt進(jìn)行評(píng)分1~10分,10分為滿分

-提供改進(jìn)建議,以及改進(jìn)原因

-輸出改進(jìn)后的完整Prompt

##Constrains:

-只會(huì)輸出數(shù)據(jù)庫(kù)中已有信息,對(duì)于不了解的信息不會(huì)胡編亂造

##Skills:

-理解中文語(yǔ)義

-評(píng)估和打分文本質(zhì)量

-提供文本改進(jìn)建議

##Workflows:

-用戶輸入Prompt

-你會(huì)根據(jù)自己的技能進(jìn)行評(píng)分1~10分,10分為滿分

-你會(huì)輸出改進(jìn)建議以及對(duì)應(yīng)原因

-最后,你會(huì)輸出改進(jìn)后的完整Prompt

##Initialization:

歡迎用戶,并提示用戶輸入信息

3.4 通用框架

提示詞=任務(wù)+角色+角色技能+任務(wù)核心關(guān)鍵詞+任務(wù)目標(biāo)+任務(wù)范圍+任務(wù)解決與否判定+任務(wù)限制條件+輸出格式/形式+輸出量

3.5 提示詞優(yōu)化器

在不同的使用場(chǎng)景下,幾乎每次都需重新構(gòu)建Prompt。

為了提高效率,本文基于CRISPE框架考慮開發(fā)一種基于「初始問(wèn)題」自動(dòng)生成「優(yōu)質(zhì)Prompt」的方法,以簡(jiǎn)化構(gòu)建過(guò)程。

# role:Prompt optimizer#Profile:

-description:協(xié)助用戶完成提示詞優(yōu)化

你是一名優(yōu)秀的Prompt工程師(提示詞工程師),你熟悉[CRISPE提示框架],并擅長(zhǎng)將常規(guī)的Prompt轉(zhuǎn)化為符合[CRISPE提示框架]的優(yōu)秀Prompt,并讓chatGPT輸出符合預(yù)期的回復(fù)。

[CRISPE提示框架]的轉(zhuǎn)化步驟如下:

1.角色和能力:基于我的問(wèn)題(Prompt),思考chatGPT最適合扮演的1個(gè)或多個(gè)角色,這個(gè)角色應(yīng)該是這個(gè)領(lǐng)域最資深的專家,也最適合解決我的問(wèn)題。

2.上下文說(shuō)明:基于我的問(wèn)題(Prompt),思考我為什么會(huì)提出這個(gè)問(wèn)題,陳述我提出這個(gè)問(wèn)題的原因、背景、上下文。

3.任務(wù)陳述:基于我的問(wèn)題(Prompt),思考我需要提給chatGPT的任務(wù)清單,完成這些任務(wù),便可以解決我的問(wèn)題。

4.輸出格式:基于我的問(wèn)題(Prompt),思考什么樣的輸出格式或文字風(fēng)格是最適合的,例如MarkDown、清單、表格、Json、對(duì)話、散文、詩(shī)歌…這種格式應(yīng)該能夠方便結(jié)果的展示。

5.案例要求:基于我的問(wèn)題(Prompt),要求chatGPT提供幾個(gè)不同的例子,更好的進(jìn)行解釋。

6.優(yōu)化Prompt:基于步驟1-5思考的內(nèi)容,假裝你是我,幫我向chatGPT提問(wèn),完整表達(dá)出我的訴求,輸出[優(yōu)化Promot],

7.代碼塊輸出(方便復(fù)制):使用代碼塊格式輸出[優(yōu)化Promot].

這是一個(gè)基于[CRISPE提示框架],并輸出[優(yōu)化Promot]的例子:

{

原始Prompt:”有沒(méi)有從網(wǎng)頁(yè)上爬取信息的好辦法?”

轉(zhuǎn)化過(guò)程如下:

1.角色和能力:ChatGPT在這個(gè)場(chǎng)景下最適合的角色應(yīng)該是一個(gè)熟悉網(wǎng)絡(luò)爬蟲和信息提取的計(jì)算機(jī)科學(xué)專家。此外,由于ChatGPT可以從大量文本中提取和分析信息,所以它還可以擔(dān)任數(shù)據(jù)科學(xué)家的角色。

2.上下文說(shuō)明:我可能正在從網(wǎng)頁(yè)上抓取數(shù)據(jù)來(lái)進(jìn)行某項(xiàng)研究,或者我可能是一名正在學(xué)習(xí)網(wǎng)絡(luò)爬蟲技術(shù)的初學(xué)者。不論我的背景和目的是什么,我都希望找到一種有效的方法來(lái)從網(wǎng)頁(yè)上抓取數(shù)據(jù)。

3.任務(wù)陳述:基于我提出的問(wèn)題,需要向ChatGPT提出以下任務(wù):提供一種或多種從網(wǎng)頁(yè)上爬取信息的方法,包括但不限于使用的工具、編程語(yǔ)言、操作步驟等;討論這些方法的優(yōu)缺點(diǎn);提供使用這些方法的實(shí)際案例。

4.輸出格式:考慮到這是一個(gè)技術(shù)性的問(wèn)題,最適合的輸出格式應(yīng)該是一個(gè)清晰、結(jié)構(gòu)化的步驟列表,可以使用Markdown格式,同時(shí)附帶代碼示例。

5.案例要求:要求ChatGPT提供至少兩個(gè)不同的爬取網(wǎng)頁(yè)信息的方法,并為每種方法提供一個(gè)詳細(xì)的實(shí)例。

6.優(yōu)化Prompt:

你是一名專門研究網(wǎng)絡(luò)爬蟲和信息提取的計(jì)算機(jī)科學(xué)專家,同時(shí)你也是一名數(shù)據(jù)科學(xué)家,擅長(zhǎng)從大量文本中提取和分析信息。我需要從網(wǎng)頁(yè)上抓取數(shù)據(jù),不論是為了研究還是為了學(xué)習(xí)網(wǎng)絡(luò)爬蟲技術(shù),我都希望找到一種有效的方法。請(qǐng)結(jié)合你的專業(yè)知識(shí),提供一種或多種從網(wǎng)頁(yè)上爬取信息的方法,包括但不限于使用的工具、編程語(yǔ)言、操作步驟等,并討論這些方法的優(yōu)缺點(diǎn)。請(qǐng)使用Markdown格式,為我制作一個(gè)清晰、結(jié)構(gòu)化的步驟列表,并附帶代碼示例。最后,我還希望你能為每種方法提供一個(gè)詳細(xì)的實(shí)例,以幫助我更好地理解和應(yīng)用這些方法。

7.代碼塊輸出(方便復(fù)制):

“`

你是一名專門研究網(wǎng)絡(luò)爬蟲和信息提取的計(jì)算機(jī)科學(xué)專家,同時(shí)你也是一名數(shù)據(jù)科學(xué)家,擅長(zhǎng)從大量文本中提取和分析信息。我需要從網(wǎng)頁(yè)上抓取數(shù)據(jù),不論是為了研究還是為了學(xué)習(xí)網(wǎng)絡(luò)爬蟲技術(shù),我都希望找到一種有效的方法。請(qǐng)結(jié)合你的專業(yè)知識(shí),提供一種或多種從網(wǎng)頁(yè)上爬取信息的方法,包括但不限于使用的工具、編程語(yǔ)言、操作步驟等,并討論這些方法的優(yōu)缺點(diǎn)。請(qǐng)使用Markdown格式,為我制作一個(gè)清晰、結(jié)構(gòu)化的步驟列表,并附帶代碼示例。最后,我還希望你能為每種方法提供一個(gè)詳細(xì)的實(shí)例,以幫助我更好地理解和應(yīng)用這些方法。

“`

}

#task

接下來(lái)我會(huì)給出我的問(wèn)題(Prompt),請(qǐng)根據(jù)我的Prompt

1.基于[CRISPE提示框架],請(qǐng)一步一步進(jìn)行輸出,直到最終輸出[優(yōu)化Promot];

2.輸出完畢之后,請(qǐng)咨詢我是否有需要改進(jìn)的意見,如果有建議,請(qǐng)結(jié)合建議重新基于[CRISPE提示框架]輸出。

要求:請(qǐng)避免討論[CRISPE提示框架]里的內(nèi)容;

我的Prompt是{}

四、Prompt應(yīng)用場(chǎng)景

4.1 LLM意圖識(shí)別

傳統(tǒng)的NLP難以解析用戶的所有意圖,而利用LLM進(jìn)行意圖識(shí)別,將取得較好的效果。

參考以下示例:

給定的query需要映射到下面描述的意圖之一,請(qǐng)用序號(hào)“[n]”回答

[1]:論文查詢,用戶想要查詢論文

[2]:代辦創(chuàng)建,用戶想要?jiǎng)?chuàng)建代辦

[3]:視頻總結(jié),用戶想要查看指定鏈接視頻總結(jié)

[4]:AI近聞,用戶想要獲取最新AI動(dòng)態(tài)

[5]:以上都不是,如果用戶的句子與上述任何意圖無(wú)關(guān)

query:{查看今日AI動(dòng)態(tài)}

詢問(wèn)大型語(yǔ)言模型,該提示是否的用戶意圖,并檢查返回的內(nèi)容是否含為[N]。過(guò)程非常直接。這種實(shí)現(xiàn)即使在沒(méi)有 JSON 模式和函數(shù)調(diào)用時(shí)也相當(dāng)可靠。

與讓模型分類多個(gè)可能無(wú)關(guān)的類別相比,直接要求 LLM 對(duì)話給出二進(jìn)制反應(yīng)相比,更簡(jiǎn)單直接。在測(cè)試GLM6B中表現(xiàn)出色。將模型溫度設(shè)為0,并配置結(jié)束序列如[“.”, “,”],能進(jìn)一步提高響應(yīng)速度和可靠度

4.2格式化輸出

#role

你是一位心理學(xué)教育問(wèn)答專家,能夠根據(jù)概念解答含義和知識(shí)點(diǎn)

#task

需要解答的名詞為:

“`

{

“id”:”1″,

“term”:”格式塔”,

}

“`

#output

請(qǐng)按照嚴(yán)格按照以下格式輸出:

{

“id”:”(編號(hào))”,

“Explanation”:”(釋義)”,

“knowledgePoint”:”(知識(shí)點(diǎn))”

}

注意:多條返回多個(gè);不要輸出JSON外任何解釋或描述內(nèi)容

4.3 Agent框架

雖然Agent已有許多開源模型存在,但了解其架構(gòu)仍有重要現(xiàn)實(shí)意義。Agent通常思路是基于LLM識(shí)別用戶意圖,判定調(diào)用工具,最后整合返回相關(guān)結(jié)果。

Query→LLM解析返回格式化數(shù)據(jù)→工具執(zhí)行→返回結(jié)果

Agent 一種常見的模式為ReACT,ReACT讓大模型先進(jìn)行思考,思考完再進(jìn)行行動(dòng),然后根據(jù)行動(dòng)的結(jié)果再進(jìn)行觀察,再進(jìn)行思考,這樣一步一步循環(huán)下去。

1)LangChain

PREFIX=”””Answerthefollowingquestionsasbestyoucan.Youhaveaccesstothefollowingtools:calculator”””

FORMAT_INSTRUCTIONS=”””Usethefollowingformat:

Question:theinputquestionyoumustanswer

Thought:youshouldalwaysthinkaboutwhattodo

Action:theactiontotake,shouldbeoneof[{tool_names}]

ActionInput:theinputtotheaction

Observation:theresultoftheaction

…(thisThought/Action/ActionInput/ObservationcanrepeatNtimes)

Thought:Inowknowthefinalanswer

FinalAnswer:thefinalanswertotheoriginalinputquestion”””

SUFFIX=”””Begin!

Question:{query}

Thought:{agent_scratchpad}”””

2)任務(wù)規(guī)劃

由上可知,由此可見,Agent是一種智能體,它能夠通過(guò)觀察環(huán)境、作出決策并采取行動(dòng),最終完成用戶的任務(wù),而且在整個(gè)過(guò)程中無(wú)需人類干預(yù)。Agent身上隱約可見AGI的雛形,深入探究其框架,不僅能增加我們對(duì)AI能力的認(rèn)知,更對(duì)實(shí)現(xiàn)相關(guān)的應(yīng)用開發(fā)具有重要意義。

五、總結(jié)

整體來(lái)看,prompt的解決方案的核心在于深入思考需要執(zhí)行的任務(wù),將其拆解為結(jié)構(gòu)化、清晰化的步驟。其流程與人類思考如出一轍。LLM取之于人,用之于人,這正是結(jié)構(gòu)化的意義。

另外一個(gè)關(guān)鍵詞便是“迭代”,對(duì)于需要程序化、普遍適用的指令任務(wù),需要不斷地進(jìn)行迭代和優(yōu)化。其中,認(rèn)真分析Badcase,從中吸取教訓(xùn),進(jìn)行改進(jìn),也十分重要。通過(guò)持續(xù)的改進(jìn)迭代,使LLM能夠?qū)崿F(xiàn)理想的輸出效果,使任務(wù)完成得更加高效、準(zhǔn)確。

六、后記

初識(shí)Prompt engineer時(shí),網(wǎng)絡(luò)上關(guān)于它的技巧已如繁星點(diǎn)點(diǎn),不計(jì)其數(shù)。然而,仔細(xì)瀏覽之后,卻發(fā)現(xiàn)其中大多數(shù)內(nèi)容僅僅是范例的堆砌,形式如出一轍:

“你是一個(gè)XXXX,你應(yīng)該…”

這樣的句式,雖然讀起來(lái)覺(jué)得言之鑿鑿,但閉上雙眼一閉,內(nèi)心卻頓感空虛,仿佛一切知識(shí)都如過(guò)眼云煙,未曾真正留下痕跡。

直到近期在一些專業(yè)的學(xué)習(xí)網(wǎng)站和論文中深入探索Prompt的相關(guān)研究,才醒悟,之前所見的只是浮于表面的“魚”,消化后便無(wú)跡可尋,從未得到真正的“漁”。

為了避免后來(lái)者重蹈覆轍,作者故撰此文,希望大家有所獲。

參考文獻(xiàn)

[1]Fulford,Isa,andAndrewNg.”ChatGPTPromptEngineeringforDevelopers.”DeepLearning.AI,n.d.,https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/.Accessed24Mar.2024.

[2]Yao,Shunyu,etal.”Treeofthoughts:Deliberateproblemsolvingwithlargelanguagemodels.”AdvancesinNeuralInformationProcessingSystems36(2024).

[3]Besta,Maciej,etal.”Graphofthoughts:Solvingelaborateproblemswithlargelanguagemodels.”arXivpreprintarXiv:2308.09687(2023).

[4]Chen,S.,Li,B.,&Niu,D.(2024).Boostingofthoughts:Trial-and-errorproblemsolvingwithlargelanguagemodels.arXivpreprintarXiv:2402.11140.

本文由 @知一 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自 Unsplash,基于 CC0 協(xié)議。

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 很贊~鼓勵(lì)~

    來(lái)自上海 回復(fù)
  2. 寫得真好

    來(lái)自貴州 回復(fù)
  3. 寫得很詳盡?。?!

    來(lái)自廣東 回復(fù)