萬字長文總結(jié)提示詞技巧!新加坡首屆GPT-4提示工程大賽冠軍最新分享

0 評論 3036 瀏覽 14 收藏 39 分鐘

提示工程已經(jīng)成為了熱門話題,無論是CO-STAR框架構(gòu)建提示詞,使用分隔符將提示詞分段,使用LLM護欄創(chuàng)建系統(tǒng)提示,還是僅使用LLM(無需插件或代碼)分析數(shù)據(jù)集,用戶都將擁有全新的使用體驗。

新加坡(GovTech)舉辦了首屆GPT-4提示工程競賽,Sheila Teo很幸運地取得了勝利。

提示工程是一門融合了藝術(shù)和科學的學科——它既是對技術(shù)的理解,也包含創(chuàng)造力和戰(zhàn)略思維。

這次她和我們分享了她在學習過程中學到的提示工程策略,這些策略可以讓任何LLM都可以完全滿足用戶的需求,甚至做得更多!

其中1,2指的是適合初學者的提示技術(shù),而3,4指的是高級策略:

1. 使用CO-STAR框架構(gòu)建提示詞

2. 使用分隔符將提示詞分段

3. 使用LLM護欄創(chuàng)建系統(tǒng)提示符

4. 僅使用LLM(無需插件或代碼)分析數(shù)據(jù)集

一、使用CO-STAR框架構(gòu)建提示信息

有效的提示結(jié)構(gòu)對于從LLM那里獲取最佳回復至關重要。CO-STAR框架是新加坡政府科技部數(shù)據(jù)科學與人工智能團隊的心血結(jié)晶,是構(gòu)建提示的便捷模板。

它考慮到了LLM回答的有效性和相關性的所有關鍵方面,從而使回答更加優(yōu)化。

具體操作如下:

(C)上下文:提供任務的上下文信息

這有助于LLM了解正在討論的具體情景,確保其答復具有相關性。

(O)目標:確定你希望LLM執(zhí)行的任務是什么

明確你的目標有助于LLM把回答的重點放在實現(xiàn)這一具體目標上。

(S)風格:指明你希望LLM使用的寫作風格

這可以是某個名人的寫作風格,也可以是某個行業(yè)的某個專家,如商業(yè)分析專家或首席執(zhí)行官。這將引導LLM以符合你需求的方式和用詞做出回復。

(T)語氣:確定回復的態(tài)度

這可確保LLM的回復與所需的情感或情緒背景產(chǎn)生共鳴。例如,正式的、幽默的、善解人意的等。

(A)受眾:確定回復的對象

根據(jù)受眾(如某一領域的專家、初學者、兒童等)量身定制LLM的回復,確保其在所需的語境中是恰當?shù)?、可以理解的?/p>

(R)回復:提供回復格式

這可確保LLM按照下游任務所需的準確格式輸出。例如,列表、JSON、專業(yè)報告等。大多數(shù)LLM應用程序都會以編程方式LLM回復進行下游操作,對于這些應用程序來說,JSON輸出格式是最理想的。

CO-STAR的實際應用

下面是一個真實的例子,說明CO-STAR框架為什么有用。

假設你是一名社交媒體經(jīng)理,你需要幫助起草一篇Facebook帖子來宣傳公司的新產(chǎn)品。

沒有CO-STAR的提示工程是這樣的:

在Facebook上寫一篇文章,為我公司的新產(chǎn)品做廣告。我的公司名為Alpha,產(chǎn)品名為Beta,是一種新型超快速吹風機。

下面是GPT-4的輸出結(jié)果:

介紹Alpha公司革命性的Beta吹風機!
– 告別冗長乏味的吹發(fā)過程!阿爾法隆重推出貝塔型吹風機,這是我們在護發(fā)技術(shù)方面的最新創(chuàng)新。
– 超快吹干:得益于先進、強勁的電機,Beta可以將你的吹干時間縮短一半。讓你更快做好準備,有更多時間做自己喜歡的事情!

這種輸出方式雖然夠用,但卻非常普通,缺乏必要的細微差別和有針對性的吸引力,無法引起公司受眾的共鳴。

下面是一個使用CO-STAR模板的示例,它提醒你將任務的其他方面融入你的提示中,特別是之前的快速提示中缺少的「風格」、「語氣」和「受眾」方面:

#上下文#
我想為我公司的新產(chǎn)品做廣告。我的公司名叫Alpha,產(chǎn)品名叫Beta,是一種新型超快吹風機。
#目標#
為我創(chuàng)建一個Facebook帖子,目的是讓人們點擊產(chǎn)品鏈接購買它。
#風格#
效仿戴森等宣傳類似產(chǎn)品的成功公司的寫作風格。
#語氣#
有說服力的。
#受眾#
我公司在Facebook上的受眾通常是老一代人。請針對這部分受眾通常對美發(fā)產(chǎn)品的要求,量身定制你的帖子。
#回復#
Facebook上的帖子,簡明扼要而又富有感染力。

通過應用CO-STAR,GPT-4的回復變得更有針對性、更有效:

用Alpha Beta擁抱輕松優(yōu)雅–智慧一代的超快吹風機。

使用Alpha Beta,重新找回簡單有效的護發(fā)樂趣。我們的最新創(chuàng)新產(chǎn)品不僅僅是一款吹風機,它還是一個承諾,為那些熱愛生活的人提供快速、輕柔、可靠的頭發(fā)造型。

– 簡單直觀:告別復雜的小工具。Alpha Beta為舒適和簡便而設計,非常適合那些看中直接、無憂技術(shù)的人。

– 省心技術(shù):我們知道你的時間非常寶貴。因此,Alpha Beta可以大大縮短吹干時間,讓你有更多時間享受生活的樂趣。使用Alpha Beta,讓每一天都成為美好的一天。體驗精致與簡約的完美融合。

CO-STAR框架指導你有條不紊地向LLM提供有關任務的所有關鍵信息,確保根據(jù)你的需求提供量身定制的優(yōu)化回復。

二、使用分隔符將提示詞分段

分隔符是一種特殊的標記,可幫助LLM區(qū)分提示詞的哪些部分應被視為一個意義單元。這一點很重要,因為你的整個提示信息是作為一長串標記符到達LLM的。

分隔符通過對提示詞的特定部分進行區(qū)別對待,為這一語素序列塑造了結(jié)構(gòu)。

值得注意的是,對于簡單的任務,分隔符可能不會影響LLM的回復質(zhì)量。

但是,任務越復雜,使用分隔符進行分段對LLM回答的影響就越大。

1. 將分隔符用作特殊字符

分隔符可以是任何通常不會同時出現(xiàn)的特殊字符序列,例如:

  • ###
  • ===
  • >>> >>>

所選特殊字符的數(shù)量和類型并不重要,只要它們足夠獨特,能讓LLM將其理解為內(nèi)容分隔符而非普通標點符號即可。

下面舉例說明如何在提示符中使用此類分隔符:

將<<<CONVERSATIONS>>中每段對話的情緒分類為「積極」或「消極」。給出情感分類,無需任何其他前言文本。

 

###

對話示例

 

[Agent]:早上好,有什么能幫你的嗎?

[顧客]:這個產(chǎn)品太糟糕了,和廣告上說的完全不一樣!

[顧客]:我非常失望,希望全額退款。

 

[Agent]:早上好,有什么可以幫你?

[顧客]:你好,我只想說你們的產(chǎn)品留下了深刻印象。它超出了我的預期!

 

###

 

輸出示例

 

「消極」

 

「積極」

 

###

 

<<<

[Agent]:你好,歡迎來到我們的支持中心。有什么可以幫你的嗎?

[顧客]:你好!我只是想讓你們知道我收到了我的訂單,而且太棒了。

[Agent]:很高興聽到這個消息!我們很高興你對購買的產(chǎn)品感到滿意。還有什么需要我?guī)兔Φ膯幔?/p>

[顧客]:沒有了。我只想給你一些積極的反饋。謝謝你們的優(yōu)質(zhì)服務。

 

[Agent]:你好,感謝你的聯(lián)系。有什么可以幫你?

[顧客]:我對最近購買的產(chǎn)品非常失望。和我預期的完全不一樣。

[Agent]:很遺憾聽到這個消息。能否請你提供更多詳細信息,以便我提供幫助?

[顧客]:產(chǎn)品質(zhì)量很差,而且到貨很晚。我真的不滿意。

>>>

以上示例使用分隔符####進行分節(jié),分節(jié)標題EXAMPLE CONVERSATIONS(示例對話)和EXAMPLE OUTPUTS(示例輸出)用大寫字母區(qū)分。

序言指出,要分類的對話被分在<<<CONVERSATIONS>>>內(nèi),這些對話隨后在提示的底部提供給LLM,但沒有任何解釋性文字,但由于分隔符<<< and>>>的存在,LLM明白這些是它應該分類的對話。

下面是GPT-4的輸出結(jié)果,其中給出了情感分類,但沒有像我們要求的那樣輸出任何其他前言文本:

「積極」
「消極」

2. 將分隔符用作XML標簽

使用分隔符的另一種方法是將其作為XML標簽。XML標簽是用角括號括起來的帶有開頭和結(jié)尾的標簽。<tag>和</tag>就是一個例子。

這種方法很有效,因為LLM已經(jīng)接受過大量XML網(wǎng)頁內(nèi)容的訓練,并學會了理解其格式。

下面是同樣的提示,但結(jié)構(gòu)上使用XML標簽作為分隔符:

根據(jù)給出的示例,將以下對話的情感分為兩類。在沒有任何其他前言文本。

<類>

積極

消極

</類>

 

<對話示例>

[Agent]:早上好,有什么可以幫你?

[顧客]:這個產(chǎn)品太糟糕了,和廣告上說的完全不一樣!

[顧客]:我非常失望,希望全額退款。

 

[Agent]:早上好,有什么可以幫你?

[顧客]:你好,我只想說你們的產(chǎn)品留下了深刻印象。它超出了我的預期!

</對話示例>

 

<示例類>

積極

消極

</示例類>

 

<對話>

[Agent]:你好!歡迎來到我們的支持中心。有什么可以幫你?

[顧客]:你好!我只是想讓你們知道我收到了我的訂單,而且太棒了。

[Agent]:很高興聽到這個消息!還有什么需要我?guī)兔Φ膯幔?/p>

[顧客]:沒有了。我只想給你一些積極的反饋。謝謝你們的優(yōu)質(zhì)服務!

 

[Agent]:你好,感謝你的聯(lián)系。有什么可以幫你?

[顧客]:我對最近購買的產(chǎn)品非常失望。和我預期的完全不一樣。

[Agent]:很遺憾聽到這個消息。能否請你提供更多詳細信息,以便我提供幫助?

[顧客]:產(chǎn)品的質(zhì)量很差,而且很晚才送到。我對這次經(jīng)歷非常不滿意。

</對話>

在XML標簽中,使用與你在說明中用來描述它們的詞相同的名詞,是有好處的。

我們在上述提示中給出的指令是:

用給出的例子,將以下對話的情感分為兩類,不要使用任何其他序言文本。

其中我們使用了名詞「對話」、「分類」和「示例」。因此,我們用作分隔符的XML標簽是<對話>、<類>、<示例-對話> 和 <示例-類>,確保LLM理解你的指令與用作分隔符的XML標簽之間的關系。

同樣,通過使用分隔符,以清晰、有條理的方式對指令進行分段,可確保GPT-4按你希望的方式作出回復:

「積極」

「消極」

三、使用LLM護欄創(chuàng)建系統(tǒng)提示

在進入正題之前,需要注意的是本節(jié)只適用于具有系統(tǒng)提示功能的LLM,而不像本文其他章節(jié)那樣適用于任何LLM。

最著名的LLM當然是ChatGPT,因此我們將使用ChatGPT作為本節(jié)的示例。

1. 圍繞系統(tǒng)提示的術(shù)語

首先,讓我們來理清術(shù)語:關于ChatGPT,有大量資源幾乎可以互換使用這三個術(shù)語:「系統(tǒng)提示」、「系統(tǒng)消息」和 「自定義指令」。

這讓很多人感到困惑,以至于OpenAI發(fā)布了一篇文章來解釋這些術(shù)語。以下是其摘要:

  • 「系統(tǒng)提示」和 「系統(tǒng)消息」是通過聊天完成API以編程方式與ChatGPT進行交互時使用的術(shù)語。
  • 另一方面,「自定義指令」是通過ChatGPT用戶界面與ChatGPT交互時使用的術(shù)語。

不過總的來說,這三個術(shù)語指的是同一件事,所以不要被術(shù)語混淆了!今后,本節(jié)將使用「系統(tǒng)提示」一詞。現(xiàn)在讓我們深入了解一下!

2. 什么是系統(tǒng)提示?

系統(tǒng)提示是一種附加提示,你可以在其中提供有關LLM行為方式的指令。它被認為是附加的,因為它不屬于你對LLM的「正?!固崾荆从脩籼崾荆?。

在聊天中,每次你提供新提示時,系統(tǒng)提示都會像過濾器一樣,讓LLM在回復你的新提示前自動應用。這意味著LLM在聊天中的每次回復都會考慮到到系統(tǒng)提示。

3. 何時使用系統(tǒng)提示?

你首先想到的問題可能是:既然我也可以在與LLM進一步對話之前,在新聊天的第一次提示中說明,為什么還要在系統(tǒng)提示中說明呢?

答案是,因為LLM的對話內(nèi)存是有限的。在后一種情況下,隨著對話的繼續(xù),LLM很可能會「忘記」你在聊天中提供的第一條提示,從而遺忘這些提示。

另一方面,如果在系統(tǒng)提示自帶指令,那么這些系統(tǒng)提示就會與聊天中的每個新提示一起被自動考慮。

這可以確保LLM在聊天過程中繼續(xù)接收這些提示,無論聊天時間多長。

總之:在整個聊天過程中使用系統(tǒng)提示,可提供你希望LLM在回復時記住的提示。

4. 系統(tǒng)提示應包括哪些內(nèi)容?

系統(tǒng)提示中的說明通常包括以下幾類:

  • 任務定義,這樣LLM就能在整個聊天過程中始終記住要做什么。
  • 輸出格式,以便LLM始終記住應該如何回復。
  • 安全護欄,這樣LLM就能始終記住它應該如何「不」回復。安全護欄是LLM管理中的新興領域,指的是LLM允許在其中運行的配置范圍。

例如,系統(tǒng)提示可能如下所示:

你將使用此文本回答問題:「插入文本」。

你將以這種格式回復一個JSON對象:{「問題」:「答案」}。

如果文本中沒有足夠的信息來回答問題,請不要編造信息,并將答案填寫為 「NA」。
你只能回答與「插入范圍」相關的問題。切勿回答任何與年齡、性別和宗教信仰等人口統(tǒng)計信息相關的問題。

其中每個部分涉及的類別如下:

5. 但是,「正常」的聊天提示又是什么呢?

現(xiàn)在你可能會想:聽起來系統(tǒng)提示中已經(jīng)提供了很多信息。那我應該在聊天的 「正?!固崾荆从脩籼崾荆┲蟹劈c什么呢?

系統(tǒng)提示概述了當前的任務。在上面的系統(tǒng)提示示例中,任務被定義為只使用一段特定文本來回答問題,并且LLM被指示以{「問題」:「答案」}格式。

你將使用此文本回答問題:[插入文本]。

你將以這種格式回復一個JSON對象:{「問題」:「答案」}。

在這種情況下,聊天的每個用戶提示都是你希望使用文本回答的問題。例如,用戶提示可能是「文本是關于什么的」而LLM會回答{文本是關于什么的?文本是關于……}。

但是,讓我們進一步概括這個任務示例。在這種情況下,我們可以將上述系統(tǒng)提示的第一行編輯為:

你將使用此文本回答問題:[插入文字]。

你將使用提供的文本回答問題。

現(xiàn)在,聊天的每個用戶提示,都會包括要回答問題的文本和要回答的問題,例如:[插入文本]:

在這里,我們還使用XML標簽作為分隔符,以便有條理地向LLM提供所需的2條信息。

XML標簽「文本」和「問題」中使用的名詞,與系統(tǒng)提示中使用的名詞相對應,這樣LLM就能理解標簽與系統(tǒng)提示指令之間的關系。

總之,系統(tǒng)提示應給出總體任務指令,而每個用戶提示應提供你需要任務執(zhí)行的具體細節(jié)。在本例中,這些具體內(nèi)容就是文本和問題。

6. 此外:使LLM護欄動態(tài)化

以上是通過系統(tǒng)提示中的幾句話添加的護欄。這些護欄是一成不變的,在整個聊天過程中不會改變。

如果你希望在聊天的不同階段設置不同的護欄,該怎么辦?

不幸的是,對于ChatGPT用戶界面的用戶來說,現(xiàn)在還不能直接做到這一點。

不過,如果你正在以編程方式與ChatGPT進行交互,那你就走運了!

隨著人們對構(gòu)建有效的LLM護欄的關注度越來越高,一些開源軟件包也應運而生,它們可以讓你以編程方式設置更詳細、更動態(tài)的護欄。

其中值得注意的是英偉達團隊開發(fā)的NeMo護欄,它允許你配置用戶與LLM之間的預期對話流,從而在聊天的不同點設置不同的護欄,使動態(tài)護欄隨著聊天的進行而發(fā)展。非常推薦你去看一看!

四、僅使用LLM(無需插件或代碼)分析數(shù)據(jù)集

你可能聽說過OpenAI在ChatGPT的GPT-4中推出的高級數(shù)據(jù)分析插件,高級(付費)賬戶可以使用該插件。

它允許用戶將數(shù)據(jù)集上傳到ChatGPT,并直接在數(shù)據(jù)集上運行代碼,從而進行精確的數(shù)據(jù)分析。

但你知道嗎,使用LLM分析數(shù)據(jù)集并不一定需要這樣的插件?讓我們先來了解一下單純使用LLMs分析數(shù)據(jù)集的優(yōu)勢和局限性。

1. LLM「不擅長」的數(shù)據(jù)集分析類型

你可能已經(jīng)知道,LLM進行精確數(shù)學計算的能力有限,因此它們不適合從事需要對數(shù)據(jù)集進行精確定量分析的工作,例如:

  • 描述性統(tǒng)計:通過平均值或方差等指標對數(shù)字列進行定量總結(jié)。
  • 相關性分析:獲取列之間的精確相關系數(shù)。
  • 統(tǒng)計分析:如假設檢驗,以確定各組數(shù)據(jù)點之間是否存在統(tǒng)計意義上的顯著差異。
  • 機器學習:在數(shù)據(jù)集上執(zhí)行預測建模,如使用線性回歸、梯度提升樹或神經(jīng)網(wǎng)絡。

在數(shù)據(jù)集上執(zhí)行此類定量任務,是OpenAI高級數(shù)據(jù)分析插件存在的原因,這樣編程語言就可以在數(shù)據(jù)集上運行代碼來執(zhí)行此類任務。

那么,為什么有人要只使用LLM而不使用此類插件來分析數(shù)據(jù)集呢?

2. LLM擅長的數(shù)據(jù)集分析類型

LLM擅長識別模式和趨勢。這種能力源于它們在多樣化和海量數(shù)據(jù)方面接受的廣泛培訓,使他們能夠辨別可能無法立即察覺的復雜模式。

這使它們非常適合執(zhí)行基于數(shù)據(jù)集模式識別的任務,例如:

  • 異常檢測:根據(jù)一個或多個列值,識別偏離常規(guī)的異常數(shù)據(jù)點。
  • 聚類:將各列中具有相似特征的數(shù)據(jù)點進行分組。
  • 跨列關系:識別跨列的綜合趨勢。
  • 文本分析(針對基于文本的列):根據(jù)主題或情感進行分類。
  • 趨勢分析(針對有時間方面的數(shù)據(jù)集):識別跨時間列內(nèi)的模式、季節(jié)性變化或趨勢。

對于這類基于模式的任務,僅使用LLM可能比使用代碼在更短的時間內(nèi)獲得更好的結(jié)果!讓我們用一個例子來充分說明這一點。

3. 僅使用LLM分析Kaggle數(shù)據(jù)集

我們將使用一個流行的Kaggle數(shù)據(jù)集,該數(shù)據(jù)集是為客戶個性分析而策劃的,其中一家公司試圖對其客戶聚類進行細分,以便更好地了解客戶。

為便于稍后驗證LLM的分析結(jié)果,我們將把該數(shù)據(jù)集子集為50行,并只保留最相關的列。

之后,用于分析的數(shù)據(jù)集將如下所示,其中每一行代表一位客戶,每一列描述客戶信息:

假設你在公司的營銷團隊工作。你的任務是利用這個客戶信息數(shù)據(jù)集來指導營銷工作。

這是一項分兩步走的任務:首先,利用數(shù)據(jù)集生成有意義的客戶細分。

其次,就如何對每個細分市場進行最佳營銷提出想法?,F(xiàn)在,這是一個實際的商業(yè)問題,LLM的模式發(fā)現(xiàn)(第一步)能力在這個問題上確實可以大顯身手。

讓我們使用4種提示工程技術(shù),為這項任務設計如下提示:

1. 將復雜的任務分解成簡單的步驟

2. 參考每個步驟的中間輸出

3. 編寫LLM回答的格式

4. 將指令與數(shù)據(jù)集分開

下面是GPT-4的回復,我們繼續(xù)將數(shù)據(jù)集以CSV字符串的形式傳遞給它。

隨后,GPT-4按照我們要求的標記符報告格式回復了分析結(jié)果:

4. 驗證LLM的分析結(jié)果

為簡潔起見,我們選取兩個由LLM生成的客戶聚類進行驗證,例如年輕的家庭成員和挑剔的發(fā)燒友。

年輕的家庭

  • 由LLM綜合得出的特征:1980年以后出生、已婚或同居、中低收入、有子女、經(jīng)常小額消費。
  • 按LLM聚類為該組的行:3、4、7、10、16、20
  • 深入研究數(shù)據(jù)集,這些行的完整數(shù)據(jù)是:

這與LLM確定的配置文件完全一致。它甚至能夠在我們沒有事先進行預處理的情況下,對帶有空值的行進行聚類!

挑剔的發(fā)燒友

  • 由LLM合成的特征:年齡跨度大、婚姻狀況不限、收入高、子女狀況各異、購物花費高。
  • 通過LLM聚類到該組的行:2、5、18、29、34、36
  • 深入研究數(shù)據(jù)集,這些行的完整數(shù)據(jù)是:

這也非常符合LLM所確定的特征!

這個例子展示了LLM在發(fā)現(xiàn)模式、解釋多維數(shù)據(jù)集并將其提煉為有意義的見解方面的能力,同時確保其分析深深植根于數(shù)據(jù)集的事實真相。如果我們使用ChatGPT的高級數(shù)據(jù)分析插件呢?

為了完整起見,我用同樣的提示嘗試了同樣的任務,但要求ChatGPT使用代碼來執(zhí)行分析,這就激活了它的高級數(shù)據(jù)分析插件。

我的想法是讓該插件使用K-Means等聚類算法直接在數(shù)據(jù)集上運行代碼,以獲得每個客戶聚類,然后再綜合每個聚類的概況,從而提供營銷策略。

然而,盡管數(shù)據(jù)集只有50行,但多次嘗試后都出現(xiàn)了以下錯誤信息,并且沒有任何輸出:

現(xiàn)在使用高級數(shù)據(jù)分析插件,在數(shù)據(jù)集上執(zhí)行較簡單的任務(如計算描述性統(tǒng)計或創(chuàng)建圖表)似乎很容易實現(xiàn),但需要計算算法的較高級任務有時可能會由于計算限制或其他原因?qū)е洛e誤或無輸出。

5. 那么,何時使用LLM分析數(shù)據(jù)集?

答案是取決于分析的類型。

對于需要精確數(shù)學計算或復雜、基于規(guī)則的處理的任務,傳統(tǒng)的編程方法仍然更勝一籌。

對于基于模式識別的任務,使用傳統(tǒng)的編程和算法方法可能具有挑戰(zhàn)性或更耗時。然而,LLM擅長此類任務,甚至可以提供額外的輸出,如支持其分析的附件和markdown格式的完整分析報告。

最終,是否使用LLM取決于當前任務的性質(zhì),要在LLM在模式識別方面的優(yōu)勢與傳統(tǒng)編程技術(shù)提供的精確性和特定性之間取得平衡。

6. 現(xiàn)在回到提示工程!

在本節(jié)結(jié)束之前,讓我們回過頭來看看用于生成本數(shù)據(jù)集分析的提示,并對所使用的關鍵提示工程技術(shù)進行分析:

提示:

#上下文#

我是賣酒的。我有一個關于客戶信息的數(shù)據(jù)集:[出生年份、婚姻狀況、收入、孩子數(shù)量、距上次購買的天數(shù)、消費金額]。

 

#############

 

#目標#

我希望你利用這個數(shù)據(jù)集將我的客戶分組,然后告訴我如何針對每個組別開展營銷活動。請按以下步驟操作,不要使用代碼:

 

1. 聚類:使用數(shù)據(jù)集的列對數(shù)據(jù)集的行進行聚類,使同一聚類中的客戶具有相似的列值,而不同聚類中的客戶具有明顯不同的列值。確保每一行只屬于一個聚類。

 

對于找到的每個聚類:

2. CLUSTER_INFORMATION:根據(jù)數(shù)據(jù)集列描述聚類。

3. 聚類名稱:解釋[CLUSTER_INFORMATION]以獲得該聚類客戶的簡短名稱。

4. marketing_ideas:產(chǎn)生向該客戶聚類推銷我的產(chǎn)品的想法。

5. RATIONALE:解釋為什么[MARKETING_IDEAS]與該客戶聚類相關且有效。

 

#############

 

#風格#

商業(yè)分析報告

#############

 

#語氣#

專業(yè)、技術(shù)

 

#############

 

#受眾#

我的商業(yè)伙伴。讓他們相信你的營銷策略是經(jīng)過深思熟慮的,并有充分的數(shù)據(jù)支持。

 

#############

 

#回復:markdown報告#

<對于[CLUSTERS]>中的每個聚類

– 客戶聚類:[CLUSTER_NAME]

– 簡介:[CLUSTER_INFORMATION]

– 營銷理念:[RATIONALE]

– 原因:[RATIONALE]

 

<附件>

列出屬于每個聚類的行號列表,以支持你的分析。使用這些表頭:[[CLUSTER_NAME],行列表]。

 

#############

 

#開始分析#

如果你能理解,請向我索要我的數(shù)據(jù)集。

技巧 1:將復雜任務分解成簡單步驟

LLM擅長完成簡單的任務,但對于復雜的任務就不那么擅長了。因此,對于像這樣的復雜任務,重要的是要把任務分解成簡單的步驟說明,讓LLM遵循。這樣做的目的是,向LLM提供你自己執(zhí)行任務時會采取的步驟。

在本例中,步驟如下:

請按以下步驟操作,不要使用代碼:

 

1. CLUSTERS:使用數(shù)據(jù)集的列對數(shù)據(jù)集的行進行聚類,使同一聚類中的客戶具有相似的列值,而不同聚類中的客戶具有明顯不同的列值。確保每一行只屬于一個聚類。

 

對于找到的每個聚類

2. CLUSTER_INFORMATION:根據(jù)數(shù)據(jù)集列描述聚類。

3. CLUSTER_NAME:解釋[CLUSTER_INFORMATION]以獲得該聚類客戶的簡短名稱。

4. MARKETING_IDEAS:產(chǎn)生向該客戶聚類推銷我的產(chǎn)品的想法。

5. RATIONALE:解釋為什么[MARKETING_IDEAS]與該客戶聚類相關且有效。

不要簡單地把總體任務交給LLM,而是讓它「把客戶分成幾組,然后就如何向每組客戶進行營銷提出想法」。有了循序漸進的指導,LLM就更有可能取得正確的結(jié)果。

技巧 2:引用每一步的中間產(chǎn)出

在向LLM提供分步流程時,我們會給每個步驟的中間輸出一個大寫的變量名,即 CLUSTERS、CLUSTER_INFORMATION、CLUSTER_NAME、MARKETING_IDEAS和RATIONALE。

使用大寫字母是為了將這些變量名與給出的指令正文區(qū)分開來。以后可以用方括號[VARIABLE_NAME]來引用這些中間輸出。技巧 3:規(guī)范LLM回復的格式

在這里,我們要求使用markdown報告格式,以美化LLM的回復。在這里,中間輸出中的變量名又派上了用場,可以決定報告的結(jié)構(gòu)。

#回復:markdown報告#

<對于[CLUSTERS]>中的每個聚類

– 客戶聚類:[CLUSTER_NAME]

– 簡介:[CLUSTER_INFORMATION]

– 營銷理念:[MARKETING_IDEAS]

– 原因:[RATIONALE]

<附件>列出屬于每個聚類的行號列表,以支持你的分析。使用這些表頭:[[CLUSTER_NAME],行列表]。

事實上,你甚至可以隨后要求ChatGPT以可下載文件的形式提供報告,以便你在撰寫最終報告時參考其答復。

技巧 4:將任務指令與數(shù)據(jù)集分開

你會注意到,在第一個提示中,我們從未將數(shù)據(jù)集交給LLM。相反,提示中只給出了數(shù)據(jù)集分析的任務說明,并將其添加到了底部:

#開始分析#

如果你能理解,請向我檢索我的數(shù)據(jù)集。

ChatGPT隨后回復說它能理解,我們在下一個提示中將數(shù)據(jù)集作為CSV字符串傳遞給它:

但為什么要把指令和數(shù)據(jù)集分開呢?

這樣做可以幫助LLM保持對每條指令的清晰理解,降低遺漏信息的可能性,尤其是像本任務這樣指令較長的復雜任務。

你可能遇到過這樣的情況,即LLM「不小心遺忘」了你作為較長提示的一部分給出的某個指令。例如,如果你要求給出100字的回復,而LLM給你的回復是一個較長的段落。

通過先接收指令,再接收指令所針對的數(shù)據(jù)集,LLM可以先消化它應該做的事情,然后再對接下來提供的數(shù)據(jù)集執(zhí)行指令。

不過請注意,只有聊天LLM才能實現(xiàn)指令和數(shù)據(jù)集的分離,因為聊天LLM會保留會話記憶,而用于補全的LLM不會。

參考資料:

https://towardsdatascience.com/how-i-won-singapores-gpt-4-prompt-engineering-competition-34c195a93d41

編輯:Henry 喬楊

來源公眾號:新智元(ID:AI_era),“智能+”中國主平臺,致力于推動中國從“互聯(lián)網(wǎng)+”邁向“智能+”。

本文由人人都是產(chǎn)品經(jīng)理合作媒體 @新智元 授權(quán)發(fā)布,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Unsplash,基于 CC0 協(xié)議

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

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!