<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          GPT PROMPT 最佳實(shí)踐(中):GPT復(fù)雜任務(wù)方案和Prompt高級(jí)策略

          共 13354字,需瀏覽 27分鐘

           ·

          2024-04-10 15:33

          a7f53fffda3cc144b3fad1ed61af472e.webp

          01

          前言

          書接上文,我們繼續(xù)講 GPT Prompt 最佳實(shí)踐。上一篇我重點(diǎn)通過對(duì)prompt 充分描述、明確要求和對(duì)指令的精準(zhǔn)表達(dá),來實(shí)現(xiàn) 構(gòu)建 更好效果的SYSTEM PROMPT 本篇我將重點(diǎn)講解幾個(gè) Prompt的 高級(jí)策略及復(fù)雜任務(wù)的解決方案。
          本篇文章的屬于ppt的第二部分, 主要目錄如下:
          • 4.1、復(fù)雜任務(wù)面臨的問題

          • 4.2、復(fù)雜任務(wù)拆解方案

          • 4.3、提供示例:單樣本和小樣本方法(One/Few-Shot)

          • 4.4、鏈?zhǔn)剿伎迹–OT)

          • 4.5、給GPT時(shí)間-慢慢思考

          • 4.6、 使用外部工具


          4.1

          復(fù)雜任務(wù)面臨的 突出問題

          Outstanding issues faced by complex tasks


          一、任務(wù)流復(fù)雜導(dǎo)致魯棒性下降

          當(dāng) GPT 執(zhí)行的任務(wù)流復(fù)雜時(shí),大概率會(huì)導(dǎo)致系統(tǒng)的魯棒性(往往指系統(tǒng)的健壯性或性能的穩(wěn)定性)下降。而復(fù)雜任務(wù)也往往比簡單任務(wù)具有更高的錯(cuò)誤率。特別是當(dāng)你的任務(wù),需要串聯(lián)多個(gè)不同流程的子任務(wù)或者程序的時(shí)候。往往這個(gè)時(shí)候所 有的信息輸入,都會(huì)占比一定權(quán)重,prompt 會(huì)比較冗長,各個(gè)子任務(wù)會(huì)相互影響,甚至導(dǎo)致信息紊亂及程序錯(cuò)亂。

          同時(shí),在一個(gè) Prompt 當(dāng)中完成全部的任務(wù),在調(diào)試時(shí)會(huì)異常困難,當(dāng)生成的內(nèi)容不符合預(yù)期時(shí),比較難定位到出現(xiàn)問 題的段落和文字。

          列舉幾個(gè)我實(shí)踐中常見的幾個(gè)問題: 1)GPT 執(zhí)行流程和邏輯不穩(wěn)定,prompt不能完全限定住,會(huì)出現(xiàn)比較惡劣的 badcas:如GPT 不按步驟對(duì)話一次性輸出全部內(nèi)容;既定流程無法正常結(jié)束,或者GPT 無故突然結(jié)束流程;或者推理性問題,GPT 無法進(jìn)行逐級(jí)判斷而只是在一個(gè)平 行邏輯層級(jí)上無限枚舉等;

          2)GPT 內(nèi)容輸出不符合要求或輸出效果不佳:如GPT輸出內(nèi)容出錯(cuò),或者前后矛盾;GPT對(duì)用戶輸入的答案判定出錯(cuò);GPT出題難度不分級(jí);GPT具體內(nèi)容不能定制化、個(gè)性化;GPT記 不住對(duì)話歷史等;

          這些問題都極大地拉低了 GPT的能效,并嚴(yán)重影響了用戶的功能體驗(yàn)。而如何解決這些問題就是我今天要講到的,主要方案包括對(duì)復(fù)雜任務(wù)的拆解、各個(gè)擊破,小樣本以及思維鏈等方法。

          二、復(fù)雜任務(wù)選用模型往往涉及產(chǎn)品成本控制問題

          都知道,高版本模型效果好,但費(fèi)用也高。很多時(shí)候,直接全鋪開使用高版本的模型,往往是不現(xiàn)實(shí)的,因?yàn)槌杀揪驮谀抢飻[著呢,尤其是當(dāng)產(chǎn)品的商業(yè)模式還沒有跑通的情況下。

          考慮到成本控制問題,我們首先能想到的就應(yīng)該是進(jìn)行任務(wù)拆解,如我們將大任務(wù)轉(zhuǎn)化為小任務(wù)之后,部分小任務(wù)可以使用 3.5 來完成,在一些關(guān)鍵核心任務(wù)還可以使用高版本模型,這樣可以在產(chǎn)品化時(shí)更為靈活。

          在 Prompt Chain 當(dāng)中,每個(gè)任務(wù)都可以根據(jù)需要(比如成本、任務(wù)特性)來靈活選用模型。使用更便宜的模型完成同樣效果的任務(wù)。

          當(dāng)然從各個(gè)環(huán)節(jié)降低prompt的token 也能減少一些費(fèi)用。

          4.2

          復(fù)雜任務(wù) 拆解方案

          Split complex tasks into simpler subtasks

          1、 將復(fù)雜任務(wù)拆分為更簡單的子任務(wù):按照業(yè)務(wù)邏輯或使用流程 Use intent classification to identify the most relevant instructions for a user query

          正如互聯(lián)網(wǎng)產(chǎn)品法則提倡的那樣,我們需要將復(fù)雜系統(tǒng)分解為很多模塊化組件進(jìn)行小步迭代,而提交給 GPT 的任務(wù)也是如此。

          這里面包含了兩層意思,一方面早期的任務(wù)流程本身不要太復(fù)雜,尤其是實(shí)驗(yàn)階段,要盡可能遵循MVP思路,在經(jīng)過驗(yàn)證后再慢慢增加枝干邏輯;另外一方面就是 復(fù)雜任務(wù)通常可以重新定義為多個(gè)簡單任務(wù)的工作流,或并行或者串行。

          而重新定義子任務(wù)首選的方法就是從業(yè)務(wù)邏輯和使用流程來拆解。

          業(yè)務(wù)邏輯舉個(gè)例子:我在一個(gè)游戲case里設(shè)定的結(jié)束判斷邏輯包括三種情況:正常流程結(jié)束、超時(shí)未響應(yīng)結(jié)束和達(dá)到最大會(huì)話輪次時(shí)自動(dòng)結(jié)束,如果把這三種結(jié)束邏輯都揉在一個(gè)prompt里面,邏輯非常混亂,gpt還不一定好判斷,最后就拆為了3個(gè)prompt來控制;

          按照使用流程來拆解,其實(shí)更好理解和操作,很多復(fù)雜的功能都可以這樣來操作,比如我設(shè)計(jì)一個(gè)字詞學(xué)習(xí)的任務(wù)流程,你會(huì)發(fā)現(xiàn)從字的講解、考查然后再過度到詞的講解和考查,整個(gè)流程使用gpt去串聯(lián),token會(huì)非常長,任務(wù)執(zhí)行效果會(huì)打折扣,這個(gè)時(shí)候拆解為字的學(xué)習(xí)和詞的學(xué)習(xí)兩個(gè)任務(wù)使用兩個(gè)prompt去完成,結(jié)果的穩(wěn)定性和輸出效果就會(huì)好很多。

          并且,將 復(fù)雜任務(wù)重新拆解為簡單任務(wù)的工作流,其中前置任務(wù)的輸出還可以用于后續(xù)任 務(wù)的輸入,有時(shí)候效果并不會(huì)打折扣甚至?xí)谩?/span>

          2、將復(fù)雜任務(wù)拆分為更簡單的子任務(wù)- 使用意圖分類來滿足不同用戶query

          Use intent classification to identify the most relevant instructions for a user query

          通過語義識(shí)別和意圖分類,以將任務(wù)分解為多個(gè)子任務(wù),每個(gè)子任務(wù)給出不同 解決方案。

          比如我們會(huì)發(fā)現(xiàn)目前在語文、歷史等科目的query 使用同樣價(jià)位的文心一言3.5效果要明顯優(yōu)于gpt3.5,此時(shí)我們就會(huì)把語文、歷史類query走文心來滿足。

          可以說, 結(jié)合意圖分類新增一個(gè)觸發(fā)策略,你的問答滿意度就會(huì)有顯著提升;

          3、將復(fù)雜任務(wù)拆分為更簡單的子任務(wù)- 總結(jié)或 過濾對(duì)話

          For dialogue applications that require very long conversations, summarize or filter previous dialogue

          由于 GPT 具有固定的上下文長度(Max token),因此user和assistant之間的對(duì)話(整個(gè)對(duì)話都包含在上下文窗口中)不能無限期 地繼續(xù)下去。這個(gè)時(shí)候在一定限制的token數(shù)內(nèi),提升對(duì)話輪次,或者單純對(duì)于需要很長對(duì)話的對(duì)話應(yīng)用程序,請(qǐng)總結(jié)或過濾以前的對(duì)話。

          主要解決方法:

          1、總結(jié)之前對(duì)話的輪次,一旦輸入的大小達(dá)到預(yù)定的閾值長度,就自動(dòng)觸發(fā)一個(gè)查詢,該查詢匯總了部分會(huì)話,把先前會(huì)話做一個(gè) 摘要加到system 里。 或者在整個(gè)對(duì)話中在后臺(tái)異步總結(jié)先前的對(duì)話。

          2、另一種解決方案是動(dòng)態(tài)選擇與當(dāng)前查詢最相關(guān)的部分會(huì)話,如只取最近幾條作為上下文內(nèi)容,而不是每次的會(huì)話信息都帶上。

          4、將復(fù)雜任務(wù)拆分為更簡單的子任務(wù)-分段總結(jié)、遞歸構(gòu)建

          Summarize long documents piecewise and construct a full summary recursively


          由于 GPT 具有固定的上下文長度,因此它們不能用于匯總長度超過上下文長度減去單個(gè)查詢中生成的摘要長度的文本。這時(shí)候就需要分段總結(jié)長文檔,遞歸構(gòu)建完整摘要。

          比如,要總結(jié)一個(gè)很長的文檔,或一本書,我們可以使用一系列查詢來總結(jié)文檔的每個(gè)部分。章節(jié)摘要可以連接和匯總,生成總的 摘要。 此過程可以遞歸進(jìn)行,直到匯總整個(gè)文檔。

          如果有必要使用有關(guān)前面部分的信息來理解后面的部分,那么另一個(gè)有用的技巧是在總結(jié)該點(diǎn)的內(nèi)容時(shí),包括書中任何給定點(diǎn)之 前的文本的運(yùn)行摘要。 如果被要求將 17 乘以 28,你可能不會(huì)立即知道,但仍然可以隨著時(shí)間的 推移計(jì)算出來。

          同樣,GPT 在嘗試立即回答時(shí)會(huì)犯更多的推理錯(cuò)誤,而不 是花時(shí)間找出答案。 在回答之前要求一系列推理可以幫助 GPT 更可靠地 推理正確答案。

          4.3

          教GPT怎么做: 提供示例

          Provide examples

          通常,Prompt有零樣本(zero-shot)、單樣本(one-shot)和小樣本(few-shot)三種形式。 對(duì)于絕大部分任務(wù)來說,Zero-shot Prompt基本都能取得不錯(cuò)的效果。

          但當(dāng)任務(wù)比較 復(fù)雜或困難時(shí),或者解決GPT不能按照我們給的格式輸出時(shí), 我們可以嘗試使用Few-shot  Prompt(通常3個(gè)case,如果情況較多可以適當(dāng)增加,最好能夠枚舉完)為大模型提供一個(gè)答案的參考框架, 機(jī)器可以通過共性模仿的方式 來提升輸出質(zhì)量, 生成我們期望的結(jié)果。

          比如下面的case:

                
                  請(qǐng)你判斷以下問題是否屬于知識(shí)問答類:
                
                
                  
                    #
                    
                      #問題:世界上最高的建筑是什么 # easy case,屬于客觀知識(shí)問答
                    
                  
                
                
                  答案:是
                
                
                  
                    #
                    
                      #問題:垃圾分類的意義 # hard case,屬于主觀知識(shí)問答
                    
                  
                
                
                  答案:是
                
                
                  
                    #
                    
                      #問題:請(qǐng)幫我寫一個(gè)關(guān)于戰(zhàn)爭的2000字短篇小說 # easy case,屬于小說創(chuàng)作
                    
                  
                
                
                  答案:否
                
                
                  問題:{input}
                
                
                  答案:
                
              

          至于具體要展示哪些樣例,則需要在實(shí)踐中不斷迭代。一般來說,樣例選擇的基本原則是 盡可能地覆蓋真實(shí)的樣本空間 一種比較好的樣例構(gòu)建方式是首先給出常見的easy  case,然后給出模型可能出錯(cuò)的hard case和corner case,hard/corner case通常來源于 對(duì)任務(wù)本身的理解,以及在實(shí)踐過程中發(fā)現(xiàn)的badcase。

          這里引用一個(gè)Arthur 制作的Few-shots  Prompt,大家可以學(xué)習(xí)一下:

                
                  
                    [SYS]:
                  
                
                
                  
                    ## Profile:
                  
                
                
                  ? author: Arthur
                
                
                  ? version: 0.1
                
                
                  ? language: 中文
                
                
                  ? description: 我是一個(gè)優(yōu)秀的翻譯人員,可以將漢字
                
                
                  翻譯成英文和日語,并提供日語假名。
                
                
                  ? ## Goals: 將用戶輸入的漢字翻譯成英文和日語,并提供
                
                
                  日語假名
                
                
                  
                    ## Constrains: 不提供任何額外解釋說明
                  
                
                
                  
                    ## Skills: 熟練掌握漢語、英語和日語,熟悉日語假名
                  
                
                
                  
                    ## Examples:
                  
                
                
                  
                    輸入: 鄰居
                  
                
                
                  
                    輸出:
                  
                
                
                  ? Neighbor (English)
                
                
                  ? 隣人 (りんじん) (Japanese Kanji)
                
                
                  ? となりびと (Japanese Hiragana)
                
                
                  ? 輸入: 自行車
                
                
                  
                    輸出:
                  
                
                
                  ? Bicycle (English)
                
                
                  ?自転車 (じてんしゃ) (Japanese Kanji)
                
                
                  ? じてんしゃ (Japanese Hiragana)
                
                
                  ? ## Workflows:
                
                
                  ? 歡迎用戶,并介紹自己是一個(gè)翻譯人員
                
                
                  ? 翻譯用戶輸入的漢字
                
                
                  ? 輸出翻譯結(jié)果
                
                
                  ? 輸入: 日語
                
                
                  
                    輸出:
                  
                
                
                  ? Japanese (English)
                
                
                  ?日本語 (にほんご) (Japanese Kanji)
                
                
                  ? にほんご (Japanese Hiragana)
                
                
                  ? 輸入:
                
              


          4.4

          鏈?zhǔn)剿伎迹?/strong> COT

          Chain of Thought

          我們?cè)趯?shí)際學(xué)習(xí)過程中,老師或家長都會(huì)鼓勵(lì)我們“慢慢來,一步步好好 想想怎么做出來”,從而提升我們的思維能力。 對(duì)于大模型也一樣,具備 逐步思考能力。 我們要想讓GPT更好的推理能力,需要借助鏈?zhǔn)剿伎己吐?/span> 思考。 鏈?zhǔn)剿伎季褪菍?fù)雜任務(wù)分解為一系列簡單的任務(wù),讓GPT把推理 過程拆分成若干步驟,一步步輸出關(guān)鍵環(huán)節(jié)的中間狀態(tài), 并最終完成目 標(biāo)。

                
                  Bad:(1362+5145)*145-(1517*42+24)=?
                
                
                  Good:請(qǐng)你幫我計(jì)算一下(1362+5145)*145-(1517*42+24)=?,每一步運(yùn)算過程都要展示出來,并確保計(jì)算的正確性。
                
              

          實(shí)際上,一個(gè)常規(guī)的問題,加上“l(fā)et’s do it step by step” 之類的詞語, gpt 輸出質(zhì)量就會(huì)有 明顯的提升,尤其是在邏輯推理與數(shù)學(xué)計(jì)算任務(wù)上。 分步驟請(qǐng)求的好處就是每一步更好控制,并且某些結(jié)果可以緩存,質(zhì)量相 對(duì)更高,壞處是可能Tokens消耗要多一點(diǎn),時(shí)間也要長一點(diǎn)。

                
                  Bad:宇宙中有外星人嗎?
                
                
                  Good:宇宙中有外星人嗎?Let's think step by step。
                
              


          下面是一個(gè)鏈?zhǔn)剿伎嫉?Case:一個(gè)分步驟 翻譯的Prompt:

                
                  首先給GPT傳入的字幕文本數(shù)組,然后讓GPT在翻譯的時(shí)候分成三步:
                
                
                  - 第一步:將數(shù)組的字符串合并成一個(gè)段落,一起翻譯成中文
                
                
                  - 第二步:再將翻譯好的段落拆分成數(shù)組,和輸入的數(shù)組一一匹配
                
                
                  - 第三步 檢查返回的數(shù)組長度是不是和輸入的數(shù)組長度相等,如果不相等返回第二步重試
                
                
                  
                    ------
                  
                
                
                  You are a program responsible for translating subtitles. Your task is to translate the
                
                
                  subtitles into 簡體中文, maintaining a colloquial tone and style, avoiding long
                
                
                  sentences, and ignoring verbal tics such as 'so', 'you know', etc.
                
                
                  The input will be a JSON-formatted string array, which should be translated in
                
                
                  accordance with the following steps:
                
                
                  Step1: Join the string array to a sentence, then translate it to 簡體中文;
                
                
                  Step2: Split the translated sentence to a string array, each item of which should
                
                
                  correspond to an item in the original input array.
                
                
                  Step3: Verify if the count of items in the output array equals that of the input array. If it
                
                
                  doesn't, go back to Step 2 and try again.
                
                
                  Respond with a JSON-formatted string array:
                
                
                  
                    ------
                  
                
              


          4.5

          給 GPT 時(shí)間: 思考

            Give GPTs time to "think"

          1、給 GPT 時(shí)間“思考”-讓模型先自行找出解決方案

          Instruct  the model to work out its own solution before rushing to a  conclusion

          策略: 指示模型在匆忙得出結(jié)論之前制定自己的解決方案 

          有時(shí),當(dāng)我們明確指示模型在得出結(jié)論之前從第一原理進(jìn)行推理時(shí),我們就 會(huì)得到更好的結(jié)果。 比如,我們讓模型出題并判斷學(xué)生的回答 是否正確。實(shí)際執(zhí)行過程中, 往往GPT會(huì)有慣性回答,即便是學(xué)生回答錯(cuò)誤,GPT也會(huì)認(rèn)為是正確的!所以這個(gè)時(shí)候 我們可以通過提示模型首先生成自己 的的答案,再和學(xué)生的答案進(jìn)行比對(duì),來讓模型成功注意到這一點(diǎn)。

          再比如,一個(gè)AI學(xué)習(xí)考查的prompt,我們希望既能準(zhǔn)確判斷學(xué)生的答案對(duì)錯(cuò),在學(xué)生出錯(cuò)時(shí)要求 給出合理的提示同時(shí)又不能向?qū)W生透露答案。 將要求拆解一下:

          1. 判斷學(xué)生答案是否正確 2. 如果答案錯(cuò)誤,發(fā)現(xiàn)學(xué)生答案中的問題,給出提示 3. 不能告訴學(xué)生答案
          這個(gè)題的難點(diǎn)在于: - 怎么能判斷學(xué)生答案中哪里錯(cuò)了,而不是簡單的給出正確或者錯(cuò)誤? - 怎么不泄露答案給學(xué)生? 我們先來解決判斷學(xué)生答案正確性和找出錯(cuò)誤位置的問題。

          這時(shí)候就需要將推理過程拆分成若干步驟,這樣可以獲得更好的推理能力。按照這個(gè)思 路,我們可以將整個(gè)Prompt分成幾步:

          步驟1 - GPT不要依賴學(xué)生的答案,自己去解決原始的問題,因?yàn)閷W(xué)生的答案可能是錯(cuò)誤 的。

          步驟2 - 將步驟1中GPT生成的答案與學(xué)生的答案進(jìn)行比較,評(píng)估學(xué)生的答案是否正確。

          步驟3 - 如果比較兩個(gè)答案后發(fā)現(xiàn)學(xué)生的答案是錯(cuò)誤的,確定你可以給學(xué)生什么提示,但 不直接給出答案。 并且要求將每一步結(jié)果打印出來。

          解決了如何判斷結(jié)果和提示的問題后,怎么不透露答案很簡單,就是要求GPT輸出特定 格式,例如JSON,在得到GPT完整的輸出結(jié)果后,對(duì)結(jié)果進(jìn)行解析,不要輸出GPT的 中間推理過程,只是輸出最后對(duì)學(xué)生的提示結(jié)果。

          另外,并非要將所有的步驟放在一個(gè)Prompt里面,還有一個(gè)方案就是將單個(gè)請(qǐng)求拆分成 個(gè)請(qǐng)求:

          請(qǐng)求1:輸入原始問題,要求GPT給出自己的推理和答案,并且這個(gè)結(jié)果還可以緩存起 來;

          請(qǐng)求2:輸入原始問題、GPT自己的推理和答案、學(xué)生的答案,給出學(xué)生答案的判斷。

          請(qǐng)求3:根據(jù)請(qǐng)求2中返回的結(jié)果,讓GPT以導(dǎo)師的身份給出相應(yīng)的提示,但是不泄露答 案。 最后給學(xué)生返回結(jié)果。 給 GPT 時(shí)間“思考”

          2、給 GPT 時(shí)間“思考”-讓模型用內(nèi)心獨(dú)白或查詢進(jìn)行推理

          Use inner monologue or a sequence of queries to hide the model's reasoning process

          策略:使用內(nèi)心獨(dú)白或一系列查詢來隱藏模型的推理過程

          前面的策略表明,模型在回答特定問題之前詳細(xì)推理問題有時(shí)很重要。對(duì)于某些應(yīng)用程序,模型用于得出最終答案的推理過程不適 合與用戶共享。 例如,在AI學(xué)習(xí)考查類prompt里,要求GPT出題但是不能把出題的邏輯和正確答案說出來,就是這樣。

          內(nèi)心 獨(dú)白 的想法是指示GPT將對(duì)用戶要隱藏的部分內(nèi)容。 或者,這可以通過一系列查詢 來實(shí)現(xiàn),其中除最后一個(gè)查詢外的所有查詢都對(duì)最終用戶隱藏其輸出。 如prompt這么寫: 如果學(xué)生回答錯(cuò)誤,請(qǐng)確定您可以在不泄 露答案的情況下給學(xué)生提示。

          總之:首先,我們可以要求模型自己解決問題。這提供了額外的優(yōu)勢(shì),即模型的解決方案不會(huì)因?qū)W生嘗試的解決方案而產(chǎn)生偏差。

          接下來,我們可以讓模型使用所有可用信息來評(píng)估學(xué)生答案的正確性。最后,我們可以讓模型構(gòu)建一個(gè)導(dǎo)師的角色,以一種不 會(huì)透露答案的方式向?qū)W生提供提示。 假設(shè)我們正在使用一個(gè)模型來列出與特定問題相關(guān)的來源摘錄。 列出每個(gè)摘錄后,模型需要確定是應(yīng)該開始編寫另一個(gè)摘 錄還是應(yīng)該停止。 如果源文檔很大,則模型通常會(huì)過早停止并且無法列出所有相關(guān)摘錄。 在這種情況下,通常可以通過使 用后續(xù)查詢提示模型來查找它在以前的傳遞中遺漏的任何摘錄,從而獲得更好的性能。

          3、給 GPT 時(shí)間“思考”-詢問模型是否遺漏內(nèi)容

          Ask the model if it missed anything on previous passes

          策略: 詢問模型在之前 的傳遞中是否遺漏了任何內(nèi)容

          Ask the model if it missed anything on previous passes

          對(duì)我們的啟示是最后結(jié)束 prompt可以讓模型在輸出用戶答對(duì)題數(shù)時(shí),先自己排查一下是否有遺漏,再給出總結(jié);

          4、給 GPT 時(shí)間“思考” -后退一推理步prompt

          Step-Back Prompting

          這個(gè)是谷歌提出一種稱為“Step-Back Prompting”的Prompt技術(shù),讓LLMs自己抽象問題,得到更高 維度的概念和原理,再用這些知 識(shí)推理并解決問題。 后退提問是一種思考策略,意在從更宏觀或更基礎(chǔ)的角度去理解和分析一個(gè)特定的問題或情境。 這種策 略要求我們?cè)诿鎸?duì)一個(gè)具體問題時(shí),先“后退” 一步,從一個(gè)更廣泛或更根本的角度去提問和思考。 這樣做的目的是幫助我們更 深入地理解問題的背景、原因或相關(guān)的基礎(chǔ)知識(shí),從而更好地回答原始問題。

          基于這個(gè)論文思路的中文Prompt如下:

                
                  
                    ##你是世界知識(shí)的專家,擅長用后退提問策略,一步步仔細(xì)思考并回答問題。
                  
                
                
                  后退提問是一種思考策略,意在從更宏觀或更基礎(chǔ)的角度去理解和分析一個(gè)特定的問題或情境。你在面對(duì)一個(gè)具體問題時(shí),先“后退”一步,從一個(gè)更廣泛或更根本的角度去提問和思考。來幫助你更深入地理解問題的背景、原因或相關(guān)的基礎(chǔ)知識(shí),從而更好地回答原始問題。
                
                
                  
                    ##策略
                  
                
                
                  - 核心概念識(shí)別:首先確定問題的核心概念。例如,如果問題涉及到物理學(xué)中的力,那么可能需要后退到基礎(chǔ)的力的定義和原理。
                
                
                  - 問題的范圍:嘗試識(shí)別問題的范圍和上下文。這有助于確定后退的深度。有些問題可能只需要稍微后退一步,而其他問題可能需要深入到基礎(chǔ)原理。
                
                
                  - 歷史和背景:對(duì)于一些問題,了解其歷史背景和發(fā)展可能會(huì)有助于提出恰當(dāng)?shù)暮笸藛栴}。
                
                
                  - 原理和假設(shè):明確當(dāng)前問題的基礎(chǔ)原理和假設(shè)。這可以幫助確定應(yīng)該從哪些方面后退。
                
                
                  
                    ##執(zhí)行步驟
                  
                
                
                  1.用中文和用戶打招呼,要求用戶輸入一個(gè)問題,每當(dāng)用戶輸入一個(gè)問題,你要根據(jù)以下流程回答問題.
                
                
                  2.給出至少3個(gè)符合<策略>的可選<后退提問>并分別回答。
                
                
                  3.將上述回答作為論據(jù),有邏輯,條理的,使用可視化輔助對(duì)用戶的問題進(jìn)行最終作答。通過向 GPT 提供其他工具的輸出來彌補(bǔ)它們的弱點(diǎn)。
                
                
                  例如:時(shí)效性語聊問題,使用web- search;文本檢索系統(tǒng)可以告訴 GPT 相關(guān)文檔。代碼執(zhí)行引擎可以幫助 GPT 進(jìn)行數(shù)學(xué)運(yùn)算和運(yùn)行代碼。
                
              

          這些高級(jí)策略可以看出來,大模型非常具有人的特性,你如果能夠按照人的思維方式去很好調(diào) 他,效果會(huì)越來越好。

          4.6

          使用外部工具: 檢索 變量、API、知識(shí)庫等


          1、使用外部工具-嵌入的搜索實(shí)現(xiàn)高效的知識(shí)檢索

          Use embeddings-based search to implement efficient knowledge retrieval

          通過向 GPT 提供其他工具的輸出來彌補(bǔ)它們的弱點(diǎn)。 例如:時(shí)效性語聊問題,使用 web- search ;文本檢索系統(tǒng)可以告訴 GPT 相關(guān)文檔。 代碼執(zhí)行引擎可以幫助 GPT 進(jìn)行 數(shù)學(xué)運(yùn)算和運(yùn)行代碼。

          如果模型作為其輸入的一部分提供,則可以利用外部信息源。 這可以幫助模型生成更明智和最新的響應(yīng)。 例如,如果用戶 詢問有關(guān)特定電影的問題,則在模型的輸入中添加有關(guān)電影的高質(zhì)量信息(例如演員、導(dǎo)演等)可能很有用。 嵌入可用于 實(shí)現(xiàn)高效的知識(shí)檢索,以便可以在運(yùn)行時(shí)將相關(guān)信息動(dòng)態(tài)添加到模型輸入中。

          文本嵌入是可以測量文本字符串之間相關(guān)性的向量。相似或相關(guān)的字符串將比不相關(guān)的字符串更緊密地結(jié)合在一起。這一 事實(shí),加上快速矢量搜索算法的存在,意味著嵌入可用于實(shí)現(xiàn)有效的知識(shí)檢索。 特別是,文本語料庫可以拆分為塊,并且 每個(gè)塊都可以嵌入和存儲(chǔ)。 然后可以嵌入給定的查詢并執(zhí)行矢量搜索,以從語料庫中查找與查詢最相關(guān)的嵌入文本塊(即 在嵌入空間中最接近)。

          2、使用外部工具-使用代碼來執(zhí)行計(jì)算或調(diào)用外部 API

          Use code execution to perform more accurate calculations or call external APIs

          不能依靠 GPT 自行準(zhǔn)確地執(zhí)行算術(shù)或長計(jì)算。 如果需要,可以指示模型編寫和運(yùn)行代碼,而不是進(jìn)行自己的計(jì)算。 特別 是,可以指示模型將要運(yùn)行的代碼放入指定的格式。 生成輸出后,可以提取并運(yùn)行代碼。

          最后,如有必要,代碼執(zhí)行引擎 (即 Python 解釋器)的輸出可以作為下一個(gè)查詢的模型輸入提供。

          聊天完成 API 允許在請(qǐng)求中傳遞函數(shù)說明列表。這使模型能夠根據(jù)提供的架構(gòu)生成函數(shù)參數(shù)。生成的函數(shù)參數(shù)由 API 以 J SON 格式返回,可用于執(zhí)行函數(shù)調(diào)用。 然后,可以在以下請(qǐng)求中將函數(shù)調(diào)用提供的輸出反饋到模型中以關(guān)閉循環(huán)。 這是 使用 GPT 模型調(diào)用外部函數(shù)的推薦方法。

          3、使用外部工具-授予模型對(duì)特定功能的訪問權(quán)限 Give the model access to specific functions

          聊天完成 API 允許在請(qǐng)求中傳遞函數(shù)說明列表。

          這使模型能夠根據(jù)提供的架構(gòu)生成函數(shù)參數(shù)。生成的函數(shù)參數(shù)由 API 以 JSON 格式返回,可用于執(zhí)行函數(shù)調(diào)用。然后,可以在 以下請(qǐng)求中將函數(shù)調(diào)用提供的輸出反饋到模型中以關(guān)閉循環(huán)。 這是使用 GPT 模型調(diào)用外部函數(shù)的推薦方法。

          case:可以 使用變量 Using variables獲取到一些用戶的屬性。

                
                  你的名字叫{ai_name},][你是{ai_role},][你的性別是{ai_gender},][{ai_description}。]
                
                
                  [我是一名{user_grade}的學(xué)生,][我的名字叫{user_name},][我的性別是{user_gender}。]
                
              

          除了使用檢索、變量、API, 可以直接使用prompt接知識(shí)庫或者通過函數(shù)觸發(fā)知識(shí)庫等。

          【后臺(tái)回復(fù)「prompt」獲取PPT文件】

          關(guān)于 prompt復(fù)雜任務(wù)的一些方法和策略, 有什么想聊的也歡迎留言討論~

          ...................END...................


          hello,我是阿外,10 年+PM&Designer,AGI領(lǐng)域關(guān)注者和研究者。 歡迎關(guān)注「波悟館」(bo_club),也可以加我微信,申請(qǐng)加入讀者群,和更多小伙伴一起學(xué)習(xí)交流,共同成長。


          推薦閱讀

          GPT PROMPT 最佳實(shí)踐(一)

          BingChat的產(chǎn)品啟示

          Stable Diffusion安裝教程

          免費(fèi)使用GPT-4

          如果你覺得文章對(duì)你有幫助,請(qǐng)一定點(diǎn)下面??的「分享」、「贊」和「在看」哦~

          瀏覽 121
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线观看自拍偷拍 | 亚洲成人AV导航 | 欧美操屄网站 | 一级生活毛片 | 欧美老妇乱伦 |