摘要

? ? ? ?生成式人工智能 (GenAI) 系統正越來越多地部署在各行各業和研究機構。開發人員和用戶通過使用提示或提示工程與這些系統進行交互。雖然提示是一個廣泛提及且被研究的概念,但由于該領域的新生,存在相互矛盾的術語和對構成提示的本體論理解不足。本文通過對提示技術的分類和使用案例,構建對提示的結構化理解。作者還提供了?33 個詞匯術語的綜合詞匯表、58 種純文本提示技術的分類法和?40 種其他模態技術的分類法。作者進一步對自然語言prefix提示進行了整體分析。

一、介紹

       基于transformer的LLMs廣泛部署在消費級產品、企業內部和研究環境中。通常,這些模型依賴于用戶提供輸入“提示”來生成輸出作為響應。提示可能是文字,比如“Write a poem about trees.”,或采取其他形式:圖像、音頻、視頻或其組合。提示模型的能力,特別是使用自然語言提示的能力,使它們易于交互,并在各種用例中靈活使用。

       了解如何使用提示有效地構建、評估和執行其他任務對于使用這些模型至關重要。根據經驗,更好的提示會導致各種任務的結果得到改善。關于使用提示來改善結果的文獻越來越多,提示技術的數量正在迅速增加。

       然而,由于提示是一個新興領域,人們對提示的使用仍然知之甚少,只有一小部分現有的術語和技術在從業者中廣為人知。作者對提示技術進行了大規模的調研,以創建該領域強大的術語和技術資源。

研究范圍

       作者創建了一個提示技術目錄,可以快速理解并輕松實現這些技術,以便開發人員和研究人員進行快速實驗。為此,我們將研究限制在離散前綴提示而不是完形填空提示,因為使用前綴提示的現代LLM架構(尤其是僅解碼器模型)被廣泛使用,并且對消費者和研究人員都有強大的支持。此外,我們將重點放在硬(離散)提示上,而不是軟(連續)提示上,并省略了使用基于梯度的更新(即微調)的技術的論文。最后,我們只研究與任務無關的技術。這些決定使對于技術水平較低的讀者來說,工作是平易近人的,并保持一個可管理的范圍。

章節概述 

       作者進行了一項基于 PRISMA 流程的機器輔助系統綜述以確定 58 種不同的基于文本的提示技術,作者從中創建了一個具有強大的提示術語的分類法(第 1.2 節)。

       雖然許多關于提示的文獻都集中在純英語設置上,但作者也討論了多語言技術(第 3.1 節)。鑒于多模態提示的快速增長,其中提示可能包括圖像等媒體,作者還將范圍擴展到多模態技術(第 3.2 節)。許多多語言和多模態提示技術是英語純文本提示技術的直接擴展。

       隨著提示技術變得越來越復雜,它們已經開始整合外部工具,例如互聯網瀏覽和計算器。作者使用術語“Agent”來描述這些類型的提示技術(第 4.1 節)。

       了解如何評估代理和提示技術的輸出非常重要,這樣可以確保生成準確性并避免幻覺。因此,作者討論了評估這些輸出的方法(第 4.2 節)。作者還討論了安全性(第 5.1 節)和安全措施(第 5.2 節),設計降低對公司和用戶造成傷害風險的提示。

       最后,作者在兩個案例研究中應用了提示技術(第 6.1 節)。第一個案例,作者針對常用的基準MMLU測試了一系列提示技術。在第二個案例中,作者詳細探討了一個重要的真實用例上的手動提示工程示例,在尋求支持的個人文本中識別出瘋狂絕望的信號——自殺危機的首要指標。最后,作者討論了提示的本質及其最近的發展(第8節)。

1.1 什么是提示?

       提示是生成式人工智能模型的輸入,用于指導其輸出。提示可以由文本、圖像、聲音或其他媒體組成。提示的一些示例包括:“為會計師事務所的營銷活動寫一封三段電子郵件”,一張桌子的照片,并附有文字“描述桌子上的一切”,或在線會議的錄音,并附有“總結一下”的說明。

提示模板

       提示通常是通過提示模板構建的。提示模板是一個包含一個或多個變量的函數,這些變量將被一些媒體(通常是文本)替換以創建提示。然后,可以將此提示視為模板的實例。

? ? ? 請考慮將提示應用于推文的二元分類任務。下面是一個初始提示模板,可用于對輸入進行分類。

Classify the tweet as positive or negative:
{TWEET}

數據集中的每條推文都將加入到模板中,生成的提示將被提供給一個 LLM 進行推理。

1.2 術語

1.2.1 提示的組件

      提示中包含各種常見組件。作者總結了最常用的組件,并討論了它們如何適應提示。

a)指令

? ? ? ?許多提示以指令或問題的形式發出。這是提示的核心意圖,有時簡稱為“意圖”。例如,下面是包含單個指令的提示示例:

Tell me five good books to read.

指令也可以是隱式的,例如在這種one-shot案例中,指令是執行英語到西班牙語的翻譯:

Night: Noche
Morning:

b)示例

? ? ? 示例,也稱為examples或shots,充當指導 GenAI 完成任務的演示。上面的提示是 One-Shot提示。

c)輸出格式

? ? ? GenAI 通常希望以某些格式輸出信息,例如 CSV 或 Markdown 格式。為了方便起見,您可以簡單地添加說明,如下所示:

{PARAGRAPH}
Summarize this into a CSV

d)風格說明 

? ? ? ?風格說明是一種輸出格式,用于在風格上而不是在結構上修改輸出(第 2.2.2 節)。例如:

Write a clear and curt paragraph about llamas.

e)角色 

? ? ? ?角色,也稱為個性化,是一個經常討論的組件,可以改進文本的寫作和風格(第 2.2.2 節)。例如:

Pretend you are a shepherd and write a limerick about llamas.

f)其他信息 

? ? ? 通常需要在提示中包含其他信息。例如,如果指令是寫一封電子郵件,您可以包含您的姓名和職位等信息,以便 GenAI 可以正確簽署電子郵件。附加信息有時被稱為“上下文”,但作者不鼓勵使用這個術語,因為它在提示空間中充滿了其他含義。

1.2.2 提示詞

? ? ? ?提示相關的術語正在迅速發展。就目前而言,有許多鮮為人知的定義(例如prompt、prompt engineering)和相互沖突的定義(例如role prompt與persona?prompt)。缺乏一致的詞匯阻礙了社區清楚地描述所使用的各種提示技術的能力。我們提供了提示社區中使用的術語的強大詞匯表(圖 1.3)。不太常見的術語請參見(附錄 A.2)。為了準確定義提示和提示工程等常用術語,作者整合了許多定義(附錄 A.1)來推導出具有代表性的定義。

a)提示 

? ? ? ?提示是向 GenAI 提供提示的過程,然后生成響應。例如,發送文本塊或上傳圖像的操作構成提示。

b)提示鏈 

       提示鏈(活動:提示鏈)由連續使用的兩個或多個提示模板組成。第一個提示模板生成的提示輸出用于參數化第二個模板,一直持續到所有模板用盡為止。

c)提示技術 

       提示技術是一種藍圖,用于描述如何構建多個提示的提示或動態排序。提示技術可能包含條件或分支邏輯、并行性或其他跨多個提示的體系結構注意事項。

d)提示工程 

? ? ? ?提示工程是通過修改或更改您正在使用的提示技術來開發提示的迭代過程(圖 1.4)。

e)提示工程技術

      提示工程技術是一種迭代提示以改進它的策略。在文獻中,這通常是自動化技術,但在消費者環境中,用戶經常手動執行提示工程。

f)示例

       示例是在提示中向模型顯示的正在完成的任務的一些示例,從而幫忙大模型理解正在完成的任務。

1.3 提示簡史

? ? ? ?使用自然語言前綴或提示來引出語言模型行為和響應起源于 GPT-3 和 ChatGPT 時代之前。GPT-2 ?利用提示,首先被用于生成式 AI 的上下文中。然而,提示的概念之前是相關概念,如控制代碼和寫作提示。

       “提示工程”一詞似乎是最近從 Radford 等人 (2021) 中出現的,然后稍晚于 Reynolds 和 McDonell(2021 年)出現。

        然而,各種論文在不命名術語的情況下進行提示工程,包括 Schick 和 Schütze (2020a,b);Gao et al. (2021) 用于非自回歸語言模型。

? ? ? ?一些關于提示的最初工作對提示的定義與當前的使用方式略有不同。例如,考慮 Brown 等人 (2020) 的以下提示:

Translate English to French:
llama

Brown et al. (2020)認為“llama”一詞是提示,而“將英語翻譯成法語:”是“任務描述”。最近的論文,包括這篇論文,將整個字符串作為提示輸入給LLM。

二、Prompt元分析

2.1 系統評價流程

? ? ? ?為了可靠地收集本文的來源數據集,作者進行了基于 PRISMA 過程的系統文獻綜述(圖 2.1)。作者在 HuggingFace 上托管此數據集,并在附錄 A.3 中展示了該數據集的部分數據。作者的主要數據來源是arXiv、Semantic Scholar和ACL。作者使用與提示和提示工程密切相關的 44 個關鍵字列表來查詢這些數據庫(附錄 A.4)。

2.1.1 Pipeline

      在本節中,將介紹作者的數據抓取管道,其中包括人工審查和 LLM輔助審查。作為建立過濾準則的初始樣本,作者基于一組簡單的關鍵字和布爾規則(A.4)從arXiv檢索論文。然后,人類標注者根據以下標準標記 arXiv 集中的 1,661 篇文章樣本:

  1. 論文是否提出了一種新的提示技術?(包括)
  2. 這篇論文是否嚴格涵蓋了硬前綴提示?(包括)
  3. 這篇論文是否側重于通過反向傳播梯度進行訓練?(不包括)
  4. 對于非文本模態,它是否使用蒙版框架和/或窗口?(包括)

        一組 300 篇文章由兩名注釋者獨立審查,同意率為 92%(Krippendorff 的 α = Cohen 的 κ = 81%)。接下來,作者使用 GPT-4-1106-preview 開發一個提示來對剩余的文章進行分類。作者根據 100 個真實注釋驗證了提示,實現了 89% 的準確率和 75% 的召回率(F 1 為 81%)。將人工和LLM注釋相結合,最終生成了 1,565 篇論文。

2.2 基于文本的技術

? ? ? 現在,作者提出了一個包含58種基于文本的提示技術的綜合分類本體,分為6個主要類別(圖2.2)。雖然有些技術可能適合多個類別,作者將它們放在一個最相關的類別中。

2.2.1 上下文學習(In-Context Learning)

? ? ? ?上下文學習是指 GenAI 通過在提示中向他們提供示例和/或相關說明來學習技能和任務的能力,而無需權重更新/再訓練。這些技能可以從示例(圖 2.4)和/或說明(圖 2.5)中學習。請注意,“學習”一詞具有誤導性。上下文學習可以簡單地成為任務規范——技能不一定是新的,并且可能已經包含在訓練數據中(圖 2.6)。有關該術語用法的討論,請參閱附錄 A.8。目前優化和理解上下文學習也在持續研究中。

Few-Shot Prompting

? ? ? ?Few-Shot Prompting是圖 2.4 中看到的范式,其中 GenAI 僅用幾個示例(示例)學習完成任務。

Few-Shot Learning (FSL)

? ? ? Few-Shot Learning經常與 Few-Shot Prompting 混為一談。需要注意的是,FSL 是一種更廣泛的機器學習范式,可以通過一些示例來調整參數,而 Few-Shot Prompting 特定于 GenAI 設置中的提示,不涉及更新模型參數。

2.2.1.1 小樣本提示設計決策

       為提示選擇示例是一項艱巨的任務——性能在很大程度上取決于示例的各種因素,并且只有有限數量的示例適合典型的LLM上下文窗口。作者重點介紹了六個獨立的設計決策,包括對輸出質量產生重大影響的示例的選擇和順序。

      增加提示中的示例數量通常會提高模型性能,尤其是在較大的模型中。然而,在某些情況下,可能20 個多示例也可以。

      示例的順序會影響模型行為。在某些任務中,示例順序可能會導致準確性從低于 50% 到 90%+ 不等。

      與傳統的監督機器學習一樣,提示中示例標簽的分布會影響行為。例如,如果包含來自一個類的 10 個示例和另一個類的 2 個示例,這可能會導致模型偏向于第一個類。

      盡管多個示例具有普遍的好處,但嚴格有效的演示的必要性尚不清楚。一些工作表明,標簽的準確性無關緊要——為模型提供帶有錯誤標簽的示例可能不會對性能產生負面影響。然而,在某些設置下,對性能有重大影響。較大的模型通常更擅長處理不正確或不相關的標簽。

       討論這個因素很重要,因為如果要從可能包含不準確的大型數據集自動構建提示,則可能需要研究標簽質量如何影響結果。

      示例的格式也會影響性能。最常見的格式之一是“Q:{input},A:{label}”,但最佳格式可能因任務而異;可能值得嘗試多種格式,看看哪種效果最好。

       選擇與測試樣本相似的示例通常有利于性能。然而,在某些情況下,選擇更多樣化的樣本可以提高性能。

2.2.1.2 Few-shot 提示技術

? ? ? 考慮到所有這些因素,Few-Shot Prompting 可能很難有效實施?,F在,作者研究了在監督環境中進行 Few-Shot Prompting 的技術。集成方法也可以使 Few-Shot Prompting 受益,但我們單獨討論它們(第 2.2.5 節)。
? ? ? ?假設我們有一個訓練數據集??,其中包含多個輸入??和多個輸出???,對GenAI進行few-shot prompt而不是梯度更新。假設測試的時候,prompt根據??動態生成,prompt模板如下所示:

K-最近鄰 (KNN)是一種選擇類似于  示例的算法。雖然有效,但在提示生成過程中使用 KNN 可能會占用大量時間和資源。

Vote-K是選擇與測試樣本相似的示例的另一種方法。在一個階段中,模型為標注人員提供了有用的未標記候選示例。在第二階段,標記池用于 Few-Shot Prompting。Vote-K 還確保新添加的示例與現有示例具有足夠的差異,以增加多樣性和代表性。

自生成情境學習 (SG-ICL)利用 GenAI 自動生成示例。雖然在訓練數據不可用時優于零樣本場景,但實際上,生成的樣本不如實際數據有效。

提示挖掘是通過大型語料庫分析在提示(有效的提示模板)中發現最佳“中間詞”的過程。例如,語料庫中可能存在更頻繁出現的類似內容,而不是使用常見的“Q:A:”格式來表示few-shot提示。語料庫中更頻繁出現的格式可能會提高提示性能。

更復雜的技術,如LENS、UDR和主動示例選擇Active Example Selection 分別利用迭代過濾、嵌入和檢索以及強化學習。

2.2.2 Zero-Shot

      與 Few-Shot Prompting 相比,Zero-Shot Prompting 使用零示例。有許多眾所周知的獨立零樣本技術,以及零樣本技術與另一個概念(例如思想鏈)相結合,我們將在后面討論(第 2.2.3 節)。

Role Prompting?,也稱為persona prompting,在提示中為 GenAI 分配了特定角色。例如,用戶可能會提示它像“麥當娜”或“旅行作家”一樣行事。這可以為開放式任務創造更理想的輸出,并在某些情況下提高基準測試的準確性。

Style Prompting是指在提示中指定所需的風格、語氣或流派,以塑造 GenAI 的輸出。使用角色提示可以實現類似的效果。

Emotion Prompting將與人類心理相關的短語(例如,“這對我的職業生涯很重要”)納入提示中,這可能會提高LLM基準測試和開放式文本生成的性能。

Ststem 2 Attention(S2A)首先要求LLM 重寫提示并刪除與問題無關的任何信息。然后,它將此新提示傳遞給LLM 以檢索最終響應。

SimToM擅長處理多個人或物體的復雜問題。給定問題,它試圖建立一個人知道的一組事實,然后僅根據這些事實回答問題。這是一個雙提示過程,可以幫助消除提示中不相關信息的影響。

Rephrase and Respond (RaR)指示LLM在生成最終答案之前重新表述和擴展問題。例如,它可能會在問題中添加以下短語:“改寫和擴展問題,然后回答”。這一切都可以一次性完成,也可以將新問題傳遞給單獨的問題LLM。

Re-reading (RE2)除了重復問題外,還在提示中添加了短語“再讀一遍問題:”。雖然這是一種如此簡單的技術,但它在推理基準方面顯示出改進,尤其是對于復雜的問題。

Self-Ask 提示LLMs首先決定他們是否需要針對給定提示提出后續問題。如果是這樣,LLM則生成這些問題,然后回答它們,最后回答原始問題。

2.2.3 Thought生成

      思想生成包括一系列技術,這些技術促使人們在LLM解決問題時闡明其推理。

Chain-of-Thought(CoT)Prompting利用few-shot提示來鼓勵在LLM給出最終答案之前表達其思考過程,這種技術被稱為思維鏈。它已被證明可以顯著提高LLM數學和推理任務的表現。在 Wei et al. (2022) 中,提示包括一個問題、推理路徑和正確答案的示例(圖 2.8)。

2.2.3.1 Zero-Shot-CoT

       最直接的 CoT 版本是zero-shot示例,例如向提示中加入“Let’s think step by step.”。其他建議的產生思想的短語包括“Let’s work this out in a step by step way to be sure we have the right answer”和“First, let’s think about this logically”。Zero-Shot CoT 方法很有吸引力,因為它們不需要示例,并且通常與任務無關。

后退提示(Step-Back Prompting)是對 CoT 的修改,在LLM推理之前,首先詢問有關相關概念或事實的通用、高級問題。這種方法顯著提高了 PaLM2L 和 GPT-4 的多個推理基準的性能。

類比提示(Analogical Prompting)類似于 SG-ICL,可以自動生成示例,包括 CoT ,在數學推理和代碼生成任務上表示突出。

Thread-of-Thought (ThoT) Prompting由一種改進的 CoT 推理思維誘導器組成。它沒使用“Let’s think step by step.”,而是使用“Walk me through this context in manageable parts step by step, summarizing and analyzing as we go.”。這種思維誘導器在問答和檢索環境中效果很好,尤其是在處理大型復雜上下文時。

表格思維鏈Tabular Chain-of-Thought (Tab-CoT)由一個 Zero-Shot CoT 提示組成,該提示將LLM輸出推理結果作為Markdown表格形式。這種表格設計LLM能夠改進結構,從而改進其輸出的推理。

2.2.3.2 Few-shot CoT

      Few-shot技術提供了LLM多個示例,其中包括思維鏈,這可以顯著提高性能,這種技術有時被稱為 ManualCoT或 Golden CoT。

對比CoT 提示(Contrastive CoT Prompting)在CoT提示中添加一個錯誤和一個正確的示例,目的是讓LLM知道如何拒絕推理。這種方法在算術推理和事實 QA 等領域顯示出顯著改進。

不確定路由CoT 提示(Uncertainty-Routed CoT Prompting)對多個 CoT 推理路徑進行采樣,然后在高于特定閾值(根據驗證數據計算)時選擇多數。如果沒有,它會貪婪地采樣并選擇該響應。這種方法證明了 GPT4 和 Gemini Ultra 模型的 MMLU 基準測試上有所改進。

基于復雜度提示(Complexity-based Prompting)對 CoT 有兩項重大修改。首先,它根據問題長度或所需的推理步驟等因素選擇復雜的示例進行注釋并包含在提示中。其次,在推理過程中,它對多個推理鏈(答案)進行采樣,并在超過一定長度閾值的鏈中使用多數票,前提是推理時間越長,答案質量越高。該技術在三個數學推理數據集上顯示出改進。
主動提示(Active Prompting)從一些訓練問題/示例開始,要求他們LLM解決它們,然后計算不確定性(在這種情況下是分歧),并要求人類注釋者重寫具有最高不確定性的示例。

思維記憶提示(Memory-of-Thought Prompting)利用未標記的訓練示例在測試時構建 Few-Shot CoT 提示。在測試時間之前,它使用 CoT 對未標記的訓練示例執行推理。在測試時,它會檢索與測試樣本類似的實例,這種技術在算術、常識和事實推理等基準測試方面取得了實質性的改進。

自動思維鏈提示 (Auto-CoT) 使用 Zero-Shot 提示自動生成思維鏈,然后,使用生成的思維鏈為測試樣本構建 Few-Shot CoT 提示。

2.2.4 分解

? ? ? 重要的研究集中在將復雜的問題分解為更簡單的子問題。對于人類和 GenAI 來說,這是一種有效的解決問題的策略。一些分解技術類似于思維誘導技術,例如 CoT,它通常自然地將問題分解為更簡單的組件。然而,明確地分解問題可以進一步提高LLMs解決問題的能力。

從最少到最多提示(Least-to-Most Prompting)首先提示 LLM 將給定問題分解為子問題而不求解它們。然后,按順序求解它們,每次都將模型響應附加到提示中,直到得出最終結果。這種方法在涉及符號操作、組合泛化和數學推理的任務中顯示出顯著的改進。

分解提示 (DECOMP) Few-Shot 提示LLM 向它展示如何使用某些功能。這些可能包括字符串拆分或互聯網搜索等內容;這些通常作為單獨的LLM調用實現。鑒于此,它LLM將其原始問題分解為子問題,并將其發送到不同的函數。在某些任務上,它顯示出比“從少到多”提示更高的性能。

計劃與解決提示(Plan-and-Solve Prompting)由改進的 Zero-Shot CoT 提示組成,“Let’s first understand the problem and devise a plan to solve it. Then, let’s carry out the plan and solve the problem step by step“。這種方法在多個推理數據集上生成比標準 Zero-Shot-CoT 更強大的推理過程。

思維樹ToT(Tree-of-Thought)也稱為 Tree of Thoughts,從初始問題開始,創建了一個樹狀搜索問題,然后以思想的形式生成多個可能的步驟(如來自 CoT)。它會朝著解決問題方向來評估每個當前步驟,然后決定繼續哪些步驟,然后不斷創建更多想法,從而創建一個樹狀搜索問題。ToT 對于需要搜索和規劃的任務特別有效。

Recursion-of-Thought類似于常規 CoT。但是,每當它在推理鏈的中間遇到一個復雜的問題時,它都會將這個問題發送到另一個提示/LLM調用中。完成此操作后,答案將插入到原始提示中。通過這種方式,它可以遞歸地解決復雜的問題,包括那些可能在最大上下文長度上運行的問題。這種方法在算術和算法任務方面有所改進。雖然使用微調來實現輸出一個特殊的令牌,將子問題發送到另一個提示中,但它也只能通過提示來完成。

Program-of-Thoughts 使用像Codex類似的 LLMs 生成編程代碼作為推理步驟。代碼解釋器執行這些步驟以獲得最終答案。它在數學和編程相關任務中表現出色,但在語義推理任務中效果較差。

忠實思維鏈(Faithful Chain-of-Thought)生成一個同時具有自然語言和符號語言(例如 Python)推理的 CoT,就像 Program-of-Thoughts 一樣。但是,它也以依賴于任務的方式使用不同類型的符號語言。

思維提綱(Skeleton-of-Thought)專注于通過并行化加快應答速度。給定一個問題,它提示創建LLM答案的提綱,從某種意義上說,也是要解決的子問題。然后,并行地,它將這些問題發送到一個LLM,并將所有輸出連接起來以獲得最終響應。

2.2.5 集成

? ? ? ?在 GenAI 中,集成是使用多個提示來解決同一問題,然后將這些響應聚合到最終輸出中的過程。在許多情況下,多數投票(選擇最頻繁的響應)用于生成最終輸出。集成技術可以減少輸出的LLM方差,并且通??梢蕴岣邷蚀_性,但代價是增加獲得最終答案所需的模型調用次數。

Demonstration Ensembling (DENSE)創建多個小樣本提示,每個提示都包含來自訓練集的不同示例子集。接下來,它聚合它們的輸出以生成最終響應。

混合推理專家(Mixture of Reasoning Experts (MoRE))通過對不同的推理類型(例如用于事實推理的檢索增強提示、用于多跳和數學推理的思維鏈推理以及用于常識推理的生成知識提示)使用不同的推理專家來創建一組不同的推理專家。所有專家的最佳答案都是根據協議分數選擇的。

最大互信息(Max Mutual Information Method)創建多個具有不同樣式和示例的提示模板,然后選擇最大化提示和LLM輸出之間相互信息的模板作為最佳模板。

自洽性(Self-Consistency)是基于直覺,即多種不同的推理路徑可以導致相同的答案。這種方法首先提示多次LLM執行 CoT,關鍵是使用非零溫度以引發不同的推理路徑。接下來,它使用對所有生成的響應的多數投票來選擇最終響應。自洽性在算術、常識和符號推理任務方面有所改進。

通用自洽性(Universal Self-Consistency)與自洽性類似,不同之處在于它通過以編程方式計算多數響應的發生頻率來選擇多數響應,而是將所有輸出插入到選擇多數答案的提示模板中。這對于自由格式文本生成以及不同提示輸出相同答案可能略有不同的情況很有幫助。

使用多CoTs進行元推理(Meta-Reasoning over Multiple CoTs)類似于通用的自洽性;它首先為給定問題生成多個推理鏈(但不一定是最終答案)。接下來,它將所有這些鏈插入到單個提示模板中,然后從它們生成最終答案。

DiVeRSe為給定問題創建多個提示,然后對每個提示執行自一致性,生成多個推理路徑。他們根據其中的每個步驟對推理路徑進行評分,然后選擇最終響應。

基于一致性的自適應提示(Consistency-based Self-adaptive Prompting(COSP))通過在一組示例上運行具有自一致性的零樣本 CoT,然后選擇要包含在最終提示中的高一致性輸出子集作為示例來構建 Few-Shot CoT 提示。它再次執行此最終提示的自一致性。

通用自適應提示(Universal Self-Adaptive Prompting (USP))建立在 COSP 的成功基礎上,旨在使其可推廣到所有任務。USP 利用未標記的數據來生成示例,并使用更復雜的評分功能來選擇它們。

提示釋義(Prompt Paraphrasing)通過改變一些措辭來改變原始提示,同時仍然保持整體含義。它實際上是一種數據增強技術,可用于生成集成提示。

2.2.6 自我批評

? ? ? ?在創建 GenAI 系統時,LLMs批評他們自己的輸出可能很有用。這可能只是一個判斷(例如,這個輸出是否正確),或者LLM可以提示提供反饋,然后用于改進答案。已經開發了許多產生和整合自我批評的方法。

自我校準(Self-Calibration)首先提示回答LLM一個問題。然后,它會生成一個新提示,其中包括問題、LLM答案和詢問答案是否正確的附加說明。這對于在決定何時接受或修改原始答案時衡量申請LLMs時的置信度很有用。

Self-Refine 是一個迭代框架,給定 LLM的初始答案,它會提示相同的LLM人提供對答案的反饋,然后提示 LLM 根據反饋改進答案。此迭代過程一直持續到滿足停止條件(例如,達到的最大步數)。Self-Refine 在一系列推理、編碼和生成任務方面表現出了改進。

逆轉思維鏈 (RCoT)首先提示LLMs根據生成的答案重建問題。然后,它會在原始問題和重建問題之間生成細粒度的比較,以檢查是否存在任何不一致之處。然后將這些不一致轉換為反饋,以便LLM修改生成的答案。

自我驗證(Self-Verification)使用思維鏈 (CoT) 生成多個候選解決方案。然后,它通過屏蔽原始問題的某些部分并要求根據LLM問題的其余部分和生成的解決方案來預測它們,從而對每個解決方案進行評分。這種方法在八個推理數據集上顯示出改進。

驗證鏈 (COVE)首先使用 LLM 來生成給定問題的答案。然后創建一個相關問題列表,以幫助驗證答案的正確性。每個問題都由 LLM回答,然后將所有信息提供給 LLM 以產生最終修改后的答案。這種方法在各種問答和文本生成任務中顯示出改進。

累積推理(Cumulative Reasoning)首先生成回答問題的幾個潛在步驟。然后,會對它們進行LLM評估,決定接受或拒絕這些步驟。最后,它檢查它是否得出了最終答案。如果是這樣,它會終止該過程,否則它會重復該過程。這種方法在邏輯推理任務和數學問題方面得到了改進。

2.3 提示技術用法

? ? ? ?正如我們剛才所看到的,存在許多基于文本的提示技術。然而,只有一小部分方法被用于研究和工業界。作者通過評估數據集中其他論文的引用次數來衡量技術使用情況。作者這樣做的假設是,關于提示的論文更有可能實際使用或評估所引用的技術。作者從數據集中以這種方式引用的前 25 篇論文繪制圖表,發現其中大多數都提出了新的提示技術(圖 2.11)。Few-Shot 和 Chain-of-Thought 提示的引用流行率并不奇怪,有助于建立了解其他技術流行情況的基線。

2.3.1 Benchmarks

       在prompt研究方面,當研究人員提出一項新技術時,他們通常會在多個模型和數據集上對其進行基準測試。這對于證明該技術的實用性并檢查它如何在模型之間轉換非常重要。

? ? ? ?為了讓提出新技術的研究人員更容易知道如何對它們進行基準測試,作者定量檢查了正在使用的模型(圖2.9)和基準數據集(圖2.10)。同樣,作者通過數據集中的論文引用基準數據集和模型的次數來衡量使用情況。

為了找出正在使用的數據集和模型,作者使用 GPT-4-1106-preview 從數據集中的論文正文中提取任何提到的數據集或模型。之后,作者手動過濾掉了不是模型或數據集的結果。引文計數是通過在Semantic Scholar上搜索最終列表中的項目獲得的。

2.4 提示工程

       除了調研提示技術外,作者還回顧了用于自動優化提示的提示工程技術,還討論了一些使用梯度更新的技術,因為提示工程技術的集合比提示技術的集合小得多。

元提示(Meta Prompting)是提示生成LLM或改進提示或提示模板的過程。

自動提示(AutoPrompt) 使用凍結LLM和提示模板,其中包括一些“觸發令牌”,其值在訓練時通過反向傳播進行更新,這是軟提示的一個版本。

自動提示工程師(Automatic Prompt Engineer (APE))使用一組示例來生成 ZeroShot 指令提示。它生成多個可能的提示,對它們進行評分,然后創建最佳提示的變體(例如,通過使用提示釋義)。它會迭代此過程,直到達到一些目標。

免梯度指令提示搜索(Gradientfree Instructional Prompt Search(GrIPS))類似APE,但使用一組更復雜的操作,包括刪除、添加、交換和釋義,以創建起始提示的變體。

使用文本梯度進行提示優化 (ProTeGi)是一種獨特的方法,通過多步驟過程改進提示模板的提示工程。首先,它通過模板傳遞一批輸入,然后將輸出、基本事實和提示傳遞到另一個批評原始提示的提示中。它從這些批評中生成新的提示,然后使用bandit算法來選擇一個。ProTeGi 展示了對 APE 和 GRIPS 等方法的改進。

RLPrompt 使用一個解凍模塊的凍結LLM模塊。它使用該LLM來生成提示模板,對數據集上的模板進行評分,并使用軟 Q-Learning 更新解凍模塊。有趣的是,該方法經常選擇語法上亂碼的文本作為最佳提示模板。

對話包含的策略梯度離散提示優化 (DP2O)可能是最復雜的提示工程技術,涉及強化學習、自定義提示評分函數和LLM對話以構建提示。

2.5 答案工程

? ? ? ?答案工程是開發或選擇從LLM輸出中提取精確答案的算法的迭代過程。要了解答案工程的必要性,請考慮一個二元分類任務,其中標簽為“Hate Speech”和“Not Hate Speech”。提示模板可能如下所示:

當將仇恨言論樣本放入模板時,它可能會有諸如“It’s hate speech”、“Hate Speech”甚至“Hate speech, because it uses negative language against a racial group”之類的輸出。響應格式的這種差異很難一致地解析;改進的提示會有所幫助,但僅限于一定程度。

? ? ? ?答案工程中有三種設計決策,即答案空間的選擇、答案形狀和答案提取器(圖 2.12)。Liu et al. (2023b) 將前兩個定義為答案工程的必要組成部分,作者附加了第三個。作者認為答案工程與提示工程不同,但又非常密切相關;這些過程通常是串聯進行的。

2.5.1 答案shape

       答案的shape是它的物理格式。例如,它可以是token、token片段,甚至是圖像或視頻。有時,將 LLM 的輸出shape限制為單個token(如二分類)很有用。

2.5.2 答案space

      答案的范圍是LLM所包含的值域,可能是所有token,或者在二分類任務中,可能只是兩個可能的token。

2.5.3 答案抽取器

       在無法完全控制答案空間(例如面向LLMs消費者)的情況下,或者預期答案可能位于模型輸出中的某個位置,可以定義一個規則來提取最終答案。這個規則通常是一個簡單的函數(例如正則表達式),但也可以使用單獨的LLM函數來提取答案。

Verbalizer 通常用于監督任務,一個Verbalizer可以映射為一個token、token片段或其他類型的輸出到標簽,反之亦然。例如,如果我們希望一個模型來預測一條推文是正面的還是負面的,我們可以提示它輸出“+”或“-”,然后Verbalizer會將這些標記序列映射到適當的標簽。Verbalizer的選擇是答案工程的一個組成部分。

Regex 如前所述,正則表達式通常用于提取答案。它們通常用于搜索標簽的第一個實例。但是,根據輸出格式和是否生成 CoTs,可能最好搜索最后一個實例。

Separate LLM 有時輸出非常復雜,以至于正則表達式無法始終如一地工作。在這種情況下,單獨LLM評估輸出并提取答案可能很有用。

三、超越英文文本提示

? ? ? ?用英文文本提示 GenAI 是目前的主要交互方法。使用其他語言或通過不同模式進行提示通常需要特殊技術才能實現類似的性能。在此背景下,作者討論了多語言和多模態提示的領域。

3.1 多語言

? ? ? ?最先進的 GenAI 通常主要使用英語數據集進行訓練,導致英語以外的語言,尤其是資源不足的語言的輸出質量存在顯著差異。因此,出現了各種多語言提示技術,試圖提高模型在非英語環境中的性能。

Translate First Prompting 可能是最簡單的策略,它首先將非英語輸入示例翻譯成英語。通過將輸入翻譯成英語,模型可以利用其英語優勢來更好地理解內容。

3.1.1 Chain-of-Thought(CoT)

CoT提示可以擴展到多語言:

XLT (Cross-Lingual Thought)提示使用由六個獨立指令組成的提示模板,包括角色分配、跨語言思維和 CoT。

Cross-Lingual Self Consistent Prompting (CLSP) 引入了一種集成技術,該技術構建不同語言的推理路徑來回答同一個問題。

3.1.2 上下文學習

上下文學習可以擴展到多語言:

X-InSTA提示 探索了三種不同的方法,用于將上下文示例與分類任務的輸入句子對齊:使用與輸入語義相似的示例(語義對齊)、與輸入共享相同標簽的示例(基于任務的對齊),以及語義和基于任務的對齊的組合。

In-CLT (Cross-lingual Transfer)提示 利用源語言和目標語言來創建上下文示例,這與使用源語言示例的傳統方法不同。這種策略有助于激發多語言的跨語言認知能力LLMs,從而提高跨語言任務的表現。

3.1.3 上下文樣本選擇

       上下文中的示例選擇嚴重影響了 LLMs 的性能。找到語義上與源文本相似的上下文示例非常重要。然而,使用語義上不同(特殊)的示例也被證明可以提高性能。在純英語環境中也存在同樣的對比。此外,在處理模棱兩可的句子時,選擇具有多義詞或罕見詞義的示例可能會提高性能。

PARC (Prompts Augmented by Retrieval Crosslingually)引入了一個從高資源語言中檢索相關示例的框架。該框架專門設計用于提高跨語言傳輸性能,特別是對于資源匱乏的目標語言。Li et al. (2023g) 將這項工作擴展到孟加拉語。

3.1.4 Prompt模板語言選擇

在多語言提示中,提示模板的語言選擇會顯著影響模型性能。

英文提示模板

       英文提示模板在多語言任務中,通常比任務中涉及到的語言更有效。這可能是由于在預訓練期間LLM英語數據占主導地位。Lin et al. (2022) 認為這可能是由于與訓練前數據和詞匯量高度重疊。同樣,Ahuja 等人(2023 年)強調了創建任務語言模板時的翻譯錯誤如何以不正確的語法和語義的形式傳播,從而對任務性能產生不利影響。此外,Fu et al. (2022) 比較了語言內(任務語言)提示和跨語言(混合語言)提示,發現跨語言方法更有效,可能是因為它在提示中使用了更多的英語,從而有助于從模型中檢索知識。

任務語言提示模板

      相比之下,許多多語言提示基準測試,如 BUFFET 或 LongBench將任務語言提示用于特定于語言的用例。Muennighoff et al. (2023) 專門研究了構建母語提示時的不同翻譯方法。他們證明了人工翻譯的提示優于機器翻譯的提示。原生或非原生模板性能可能因任務和模型而異。因此,這兩種選擇都不會永遠是最好的方法。

3.1.5 用于機器翻譯的提示

? ? ? ?關于利用 GenAI 促進準確和細致入微的翻譯,有大量研究。盡管這是提示的特定應用,但其中許多技術對于多語言提示更廣泛地很重要。

Multi-Aspect Prompting and Selection (MAPS) 模仿人工翻譯過程,該過程涉及多個準備步驟以確保高質量的輸出。該框架從源句子的知識挖掘開始(提取關鍵字和主題,并生成翻譯示例),它整合了這些知識以生成多種可能的翻譯,然后選擇最佳翻譯。

Chain-of-Dictionary (CoD)?首先從源短語中提取單詞,然后通過從字典中檢索自動列出它們在多種語言中的含義(例如英語:“apple”,西班牙語:“manzana”)。然后,他們將這些字典短語附加到提示符中,提示符要求 GenAI 在翻譯過程中使用它們。

Dictionary-based Prompting for Machine Translation (DiPMT) 的工作方式與 CoD 類似,但僅給出源語言和目標語言的定義,并且格式略有不同。

Decomposed Prompting for MT (DecoMT) 將源文本分成幾個塊,并使用few-shot提示分別進行翻譯。然后,使用這些翻譯和塊之間的上下文信息來生成最終翻譯。

3.1.5.1 人機交互

Interactive-Chain-Prompting(ICP)?通過首先要求 GenAI 生成有關要翻譯的短語中任何歧義的子問題來處理翻譯中的潛在歧義。人類隨后回答這些問題,系統將這些信息包括在內,以生成最終翻譯。

Iterative提示 在翻譯過程中也涉及人類。首先,他們會提示LLMs生成翻譯草稿,通過集成從自動檢索系統或直接人工反饋獲得的監督信號,進一步完善了此初始版本。

3.2 多模態

       隨著 GenAI 模型超越基于文本的領域,新的提示技術應運而生。這些多模態提示技術通常不僅僅是基于文本的提示技術的應用,而是通過不同模式實現的全新想法?,F在,作者擴展了基于文本的分類法,以包括基于文本的提示技術的多模態類似物以及全新的多模態技術的混合。

3.2.1 圖像提示

       圖像形式包括照片、圖畫甚至文本截圖等數據。圖像提示可以指包含圖像或用于生成圖像的提示。常見任務包括圖像生成、標題生成、圖像分類和圖像編輯。現在,將介紹用于此類應用程序的各種圖像提示技術。

Prompt Modifiers只是附加到提示以更改生成圖像的單詞。經常使用諸如“中等”(例如“在畫布上”)或“照明”(例如“光線充足的場景”)等組件。

Negative Prompting 允許用戶對提示中的某些術語進行數字加權,以便模型比其他術語更重視/更少考慮它們。例如,通過對術語“壞手”和“額外數字”進行負權重,模型可能更有可能生成解剖學上準確的手。

3.2.1.1 多模態上下文學習

      ICL 在基于文本的環境中的成功促進了對多模態 ICL 的研究。

Paired-Image提示 模型需要兩張圖像:一個是轉換之前,一個是轉換之后。然后,向模型顯示一個新圖像,它將對其執行演示的轉換,既可以通過文本指令完成,也可以沒有文本指令來完成。

Image-as-Text提示 生成圖像的文本描述,這允許在基于文本的提示中輕松包含圖像(或多個圖像)。

3.2.1.2 多模態CoT

       CoT 已以各種方式擴展到圖像域。一個簡單的例子是包含數學問題圖像的提示,并附有文本說明“Solve this step by step”。

Duty Distinct Chain-of-Thought (DDCoT) 將從最少到最多的提示擴展到多模態設置,創建子問題,然后解決它們并將答案組合成最終答案。

Multimodal Graph-of-Thought將Graph-of-Thought擴展到多模態設置。GoT-Input 還使用兩步原理然后回答過程。在推理時,輸入提示用于構建思維圖,然后與原始提示一起使用以生成回答問題的理由。當圖像與問題一起輸入時,使用圖像標題模型生成圖像的文本描述,然后在思維圖構建之前將其附加到提示中以提供視覺上下文。

Chain-of-Images (CoI)是思維鏈提示的多模態擴展,它生成圖像作為其思維過程的一部分。他們使用提示“Let’s think image by image”來生成 SVG,然后模型可以使用這些 SVG 進行視覺推理。

3.2.2 音頻提示

       提示也已擴展到音頻模式。音頻 ICL 的實驗產生了不同的結果,一些開源音頻模型無法執行 ICL。然而,其他結果確實顯示了音頻模型的 ICL 能力。音頻提示目前還處于早期階段,但作者預計未來會看到各種提示技術的提出。

3.2.3 視頻提示

提示也已擴展到視頻模式,用于文本到視頻的生成、視頻編輯和視頻到文本生成。

3.2.3.1 視頻生成技術

       在提示模型生成視頻時,可以使用各種形式的提示作為輸入,并且通常采用幾種與提示相關的技術來增強視頻生成。與圖像相關的技術,例如提示修飾符,通常可用于視頻生成。

3.2.4 分段提示

提示也可用于分割(例如語義分割)。

3.2.5 3D提示

      提示也可用于 3D 模態,例如在 3D 對象合成中、3D 表面紋理和 4D 場景生成(動畫 3D 場景),其中輸入提示模式包括文本、圖像、用戶標注(邊界框、點、線)和 3D 對象。

四、Prompt擴展

       到目前為止,我們討論的技術可能非常復雜,包含許多步驟和迭代。但是,我們可以通過添加外部工具(比如agent)來進一步提示,復雜的評估算法可以判斷輸出的LLM有效性。

4.1 Agents

       隨著LLMs能力的迅速提高,公司和研究人員也探索了如何讓他們利用外部系統。這是由于數學計算、推理和事實性等領域的缺點LLMs所必需的。這推動了提示技術的重大創新;這些系統通常由提示和提示鏈驅動,這些提示和提示鏈經過大量設計,允許類似代理的行為。

Agent的定義

? ? ?在 GenAI 的上下文中,我們將agent定義為 GenAI 系統,它通過與 GenAI 本身之外的系統互動的操作來服務于用戶的目標。這個 GenAI 通常是一個 LLM.舉個簡單的例子,考慮一個LLM負責解決以下數學問題的 IT:

   如果正確提示,可以LLM輸出字符串 CALC(4,939*.39)??梢蕴崛〈溯敵霾⒎湃胗嬎闫髦幸垣@得最終答案。

       這是一個代理示例:LLM輸出文本,然后使用下游工具。代理LLMs可能涉及單個外部系統(如上所述),或者它們可能需要解決路由問題,以選擇使用哪個外部系統。除了行動之外,此類系統還經常涉及記憶和計劃。

? ? ? ?代理的示例包括LLMs可以進行 API 調用以使用計算器等外部工具,LLMs可以輸出導致在類似健身房中采取行動的字符串環境,以及更廣泛地說,LLMs編寫和記錄計劃、編寫和運行代碼、搜索互聯網等。OpenAI 助手 OpenAI、LangChain Agents 和 LlamaIndex Agents 是其他例子。

4.1.1 工具使用agent

? ? ? ?工具使用是 GenAI 代理的關鍵組成部分。符號(例如計算器、代碼解釋器)和神經(例如 separate LLM)外部工具都是常用的。工具有時可能被稱為專家或模塊。

Modular Reasoning, Knowledge, and Language (MRKL) System是最簡單的代理配方之一。它包含一個LLM路由器,提供對多個工具的訪問。路由器可以撥打多個電話以獲取天氣或當前日期等信息。然后,它將這些信息組合在一起以生成最終響應。Toolformer、Gorilla、Act-1等都提出了類似的技術,其中大部分涉及一些微調。

Self-Correcting with Tool-Interactive Critiquing (CRITIC) 首先生成對提示的響應,沒有外部調用。然后,同樣LLM批評此響應可能存在錯誤。最后,它相應地使用工具(例如互聯網搜索或代碼解釋器)來驗證或修改部分響應。

4.1.2 代碼生成agent

? ? ? ?編寫和執行代碼是許多代理的另一個重要能力。
Program-aided Language Model (PAL)?將問題直接翻譯成代碼,將其發送給 Python 解釋器以生成答案。

Tool-Integrated Reasoning Agent (ToRA)  類似于 PAL,但它不是單一的代碼生成步驟,而是在必要時交錯代碼和推理步驟以解決問題。

TaskWeaver 也類似于PAL,將用戶請求轉換為代碼,但也可以使用用戶定義的插件。

4.1.3 基于觀察的agent

       一些智能體可以通過與玩具環境交互來解決問題。這些基于觀察的代理可以接收觀察結果并插入到其提示中。

Reasoning and Acting (ReAct) 在被賦予要解決的問題時產生思想、采取行動并接受觀察(并重復此過程)。所有這些信息都插入到提示中,因此它具有過去的想法、行動和觀察結果的記憶。

Reflexion 建立在 ReAct 之上,增加了一層內省。它獲得行動和觀察的軌跡,對成功/失敗進行評估。然后,對它所做的事情和出了什么問題進行反思。此反射作為工作內存添加到其提示符中,并且該過程重復進行。

4.1.3.1 Lifelong Learning Agents

       集成 LLM Minecraft代理的工作產生了令人印象深刻的結果,代理能夠在他們在這個世界中導航時獲得新技能開放世界視頻游戲。作者認為這些代理不僅僅是代理技術在Minecraft中的應用,而是可以在需要終身學習的現實世界任務中探索的新穎代理框架。

Voyager由三個部分組成。首先,它為自己提出了要完成的任務,以便更多地了解世界。其次,它生成代碼來執行這些操作。最后,它保存了這些操作,以便在以后有用時作為長期記憶系統的一部分進行檢索。該系統可以應用于代理需要探索工具或網站并與之交互的現實世界任務(例如滲透測試、可用性測試)。

Ghost in the Minecraft (GITM) 從一個任意目標開始,遞歸地將其分解為子目標,然后通過生成結構化文本(例如“equip(sword)”)而不是編寫代碼來迭代地計劃和執行行動。GITM 使用 Minecraft 物品的外部知識庫來幫助分解以及過去經驗的記憶。

4.1.4 Retrieval Augmented Generation (RAG)

       在 GenAI 代理的上下文中,RAG 是一種范式,其中信息從外部源檢索并插入到提示符中。這可以提高知識密集型任務的表現。當檢索本身被用作外部工具時,RAG 系統被視為代理。

Verify-and-Edit 通過生成多個思維鏈,然后選擇一些進行編輯,從而提高了自洽性。他們通過檢索相關(外部)信息來做到這一點然后選擇一些要編輯的 CoT,并允許它們LLM相應地增強它們。

Demonstrate-Search-Predict 首先將問題分解為子問題,然后使用查詢來解決它們,并將它們的回答組合成最終答案。它使用少樣本提示來分解問題并合并響應。

Interleaved Retrieval guided by Chain-ofThought (IRCoT)是一種交錯 CoT 和檢索的多跳問答技術。IRCoT 利用 CoT 來指導檢索和檢索哪些文檔,以幫助規劃 CoT 的推理步驟。

Iterative Retrieval Augmentation 像前瞻性主動檢索增強生成(FLARE)和模仿、檢索、釋義(IRP),在長格式生成過程中多次執行檢索。此類模型通常執行迭代的三步過程:1)生成一個臨時句子,作為下一個輸出句子的內容計劃;2)使用臨時句作為查詢來檢索外部知識;3)將檢索到的知識注入臨時句子中,以創建下一個輸出句子。與長格式生成任務中提供的文檔標題相比,這些臨時句子已被證明是更好的搜索查詢。

4.2 評估

       LLMs在提取和推理信息并理解用戶意圖方面表現優異,因此通常使用這些LLMs來作為評估者。例如,可以根據提示中定義的一些指標,提示 LLM 評估一篇文章的質量,甚至評估之前LLM的輸出的質量。作者描述了評估框架的四個組成部分,這些組成部分對于建立強大的評估者非常重要:提示技術(如第 2.2 節所述)、評估的輸出格式、評估管道的框架以及其他一些方法設計決策。

4.2.1 提示技術

       評估器提示中使用的提示技術(例如,簡單指令與 CoT)有助于構建強大的評估器。評估提示通常受益于常規的基于文本的提示技術,包括角色、任務說明、評估標準的定義和上下文示例。在附錄 A.5 中找到完整的技術列表。

In-Context Learning 經常用于評估提示,就像它在其他應用程序中的使用方式一樣。

基于角色的評估是改進評估和多樣化評估的有用技術。通過創建具有相同評估指令但角色不同的提示,可以有效地生成不同的評估。此外,角色可以在多智能體環境中使用,在這種LLMs環境中,辯論要評估的文本的有效性。

思維鏈提示 可以進一步提高評估績效。

Model-Generated Guidelines提示 LLM 生成評估指南。這減少了因評分指南和輸出空間定義不明確而引起的提示不足問題,這可能導致評估不一致和不對齊。Liu et al. (2023d) 生成了模型在生成質量評估之前應執行的詳細評估步驟的思路鏈。Liu et al. (2023h) 提出了 AUTOCALIBRATE,它根據專家人工注釋得出評分標準,并使用模型生成標準的精細子集作為評估提示的一部分。

4.2.2 輸出格式化

LLM輸出格式會顯著影響評估性能。

Styling?LLM使用 XML 或 JSON 樣式輸出被證明可以提高評估者生成的判斷的準確性。

Linear Scale?一個非常簡單的輸出格式是線性刻度(例如 1-5)。許多工作使用 1-10 分、1-5 分甚至 0-1 分的評分??梢蕴崾灸P驮谶吔缰g輸出離散或連續分數。

Binary Score?提示模型生成二元響應,如“是”或“否”,“真或假”是另一種常用的輸出格式。

Likert Scale?充分利用Likert Scale對?GenAI 提示可以更好地理解scale的含義。

4.2.3 提示評估框架

LLM-EVAL 是最簡單的評估框架之一。它使用單個提示,其中包含要評估的變量架構(例如語法、相關性等)、告訴模型在特定范圍內輸出每個變量的分數的指令以及要評估的內容。

G-EVAL 類似于 LLM-EVAL,但在提示本身中包含一個 AutoCoT 步驟。這些步驟根據評估說明生成,并插入到最終提示中。這些權重根據令牌概率回答。

ChatEval 使用多智能體辯論框架,每個智能體都有單獨的角色。

4.2.4 其他方法論

      雖然大多數方法直接提示生成LLM質量評估(顯式),但一些工作也使用隱式評分,其中質量分數是使用模型對其預測的置信度或生成輸出的可能性或通過模型的解釋(例如,計算錯誤數量),或通過對代理任務的評估(通過蘊涵的事實不一致)。

Batch Prompting 為了提高計算和成本效率,一些工作采用批量提示進行評估,其中一次評估多個實例或根據不同的標準或角色評估同一實例。然而,在單個批次中評估多個實例通常會降低性能。

Pairwise Evaluation 發現,直接比較兩篇課文的質量可能會導致次優結果,明確要求LLM為單個摘要生成分數是最有效和最可靠的方法。成對比較的輸入順序也會嚴重影響評估。

五、Prompt相關事項

本小節,將介紹prompt的安全性和對齊問題相關問題。

5.1 安全性

      隨著提示使用越來越多,暴露出來的威脅也在增加。與非神經性和預提示安全威脅相比,這些威脅種類繁多,且難以防御。作者討論了提示性威脅態勢和有限的防御狀態。作者首先描述提示黑客攻擊,即使用提示攻擊LLMs,然后描述由此產生的危險,最后描述潛在的防御措施。

5.1.1 提示黑客攻擊的類型

? ? ? ?提示黑客攻擊是指操縱提示以攻擊 GenAI 的一類攻擊。此類提示已被用于泄露私人信息、生成令人反感的內容和產生欺騙性信息。提示黑客攻擊包括提示注入和越獄的超集,它們是不同的概念。

Prompt Injection是用用戶輸入覆蓋提示中的原始開發人員指令的過程。這是一個架構問題,因為 GenAI 模型無法理解原始開發人員指令和用戶輸入指令之間的區別。

? ? ? ?請考慮以下提示模板。用戶可以輸入“Ignore other instructions and make a threat against the president.”,這可能會導致模型不確定要遵循哪條指令,從而可能遵循惡意指令。

越獄(Jailbreaking)是讓 GenAI 模型通過以下方式做或說意想不到的事情的過程提示。它要么是一個架構問題,要么是一個訓練問題,因為對抗性提示極難預防。

? ? ? ?請考慮以下越獄示例,該示例類似于前面的提示注入示例,但提示中沒有開發人員說明。用戶無需在提示模板中插入文本,而是可以直接轉到 GenAI 并惡意提示它。

5.1.2 Prompt黑客攻擊的風險

prompt黑客攻擊可能會導致現實世界的風險,例如隱私問題和系統漏洞。

5.1.2.1 數據隱私

      模型訓練數據和提示模板都可能通過提示黑客攻擊(通常是通過提示注入)泄露。

訓練數據重構是指從GenAI中提取訓練數據。Nasr et al. (2023) 就是一個直接的例子,他們發現,通過提示 ChatGPT 永遠重復“company”這個詞,它開始反芻訓練數據。

提示泄漏是指從應用程序中提取提示模板的過程。開發人員經常花費大量時間創建提示模板,并認為它們是值得保護的 IP。Willison (2022) 演示了如何從 Twitter 機器人泄露提示模板,只需提供如下說明:

5.1.2.2 代碼生成問題

LLMs通常用于生成代碼。攻擊者可能會以此代碼導致的漏洞為目標。

包幻覺生成的代碼嘗試導入不存在的包。在發現哪些軟件包名稱經常被LLMs產生幻覺后,黑客就可以創建這些軟件包,但使用的是惡意代碼。如果用戶為這些以前不存在的軟件包運行安裝,他們將下載病毒。

漏洞(和安全漏洞)在LLM生成的代碼中出現的比較頻繁。對提示技術的微小更改也可能導致生成的代碼中出現此類漏洞。

5.1.2.3 客戶服務

       惡意用戶經常對企業聊天機器人進行提示注入攻擊,導致品牌尷尬。這些攻擊可能會誘使聊天機器人輸出有害評論或同意以非常低的價格向用戶出售公司產品。在后一種情況下,用戶實際上可能有權獲得交易。Garcia (2024) 描述了航空公司聊天機器人如何向客戶提供有關退款的錯誤信息。客戶在法庭上上訴并勝訴。盡管這個聊天機器人是 ChatGPT 之前的,并且絕不會被用戶欺騙,但當使用細微的提示黑客技術時,這個先例可能適用。

5.1.3 緩解措施

       已經開發了幾種工具和提示技術來減輕上述一些安全風險。然而,提示黑客攻擊(注入和越獄)仍然是未解決的問題,并且可能無法完全解決。

基于提示的防御?已經提出了多種基于提示的防御,其中在提示中加入指令可以避免提示注入。例如,可以將以下字符串添加到提示中:

然而,Schulhoff 等人(2023 年)對數十萬個惡意提示進行了一項研究,發現沒有基于提示的防御是完全安全的,盡管它們可以在一定程度上減輕提示黑客攻擊。

Guardrails是指導 GenAI 輸出的規則和框架。護欄可以像將用戶輸入分類為惡意或非惡意一樣簡單,然后在惡意的情況下使用預設消息進行響應。更復雜的工具使用對話管理器,允許從LLM許多精心策劃的響應中進行選擇。還提出了特定于提示的編程語言來改進模板并充當護欄。

Detectors是旨在檢測惡意輸入并防止提示黑客攻擊的工具。許多公司已經開發了這樣的檢測器,通常使用在惡意提示上訓練的微調模型構建。通常,這些工具可以比基于提示的防御在更大程度上減輕提示黑客攻擊。

5.2 對齊

       確保LLMs在下游任務中與用戶需求保持一致對于成功部署至關重要。模型可能會輸出有害內容,產生不一致的響應,或表現出偏見,所有這些都使部署它們變得更加困難。為了幫助降低這些風險,可以仔細設計提示,以引出危害較小的輸出LLMs。在本節中,我們將介紹提示對齊問題以及潛在的解決方案。

5.2.1 Prompt敏感度

        一些研究表明,LLMs對輸入提示高度敏感,即即使是對提示的細微變化,例如示例順序(第 2.2.1.1 節),也會導致截然不同的輸出。下面,我們將介紹這些擾動的幾個類別及其對模型行為的影響。

提示措辭(Prompt Wording) 可以通過添加額外的空格、更改大小寫或修改分隔符來更改提示措辭。盡管這些變化很小,但 Sclar 等人 (2023a) 發現它們會導致 LLaMA2-7B 在某些任務上的性能范圍從近 0 到 0.804。

任務格式(Task Format) 描述了提示執行LLM同一任務的不同方法。例如,要求執行LLM情緒分析的提示可以要求LLM將評論分類為“正面”或“負面”,或者提示可以詢問LLM“此評論是正面的嗎?”以引起“是”或“否”的響應。Zhao 等人(2021b)表明,這些微小的變化可以使 GPT-3 的準確性改變多達 30%。同樣,對邏輯上等效的任務特定提示的輕微擾動,例如改變多項選擇題中的選擇順序。

提示漂移(Prompt Drift)API 背后的模型隨時間變化時,就會發生提示漂移 ,因此相同的提示可能會在更新的模型上產生不同的結果。雖然不是直接的提示問題,但它需要對提示性能進行持續監視。

5.2.2 過度自信和校準

       LLMs往往對自己的答案過于自信,尤其是當被要求用言語表達自己的信心時,這可能導致用戶過度依賴模型輸出。置信度校準提供了一個代表模型置信度的分數。雖然置信度校準的自然解決方案是研究 LLM提供的輸出令牌概率,但也為置信度校準創建了各種提示技術。

語言分數(Verbalized Score)是一種簡單的校準技術,可以生成置信度分數(例如,“從 1 到 10 你有多自信”),但其有效性尚有爭議。Xiong et al. (2023b) 發現,即使在采用自洽和思維鏈時,一些人LLMs在用語言表達信心分數時也非常自信。相比之下,Tian et al. (2023) 發現簡單的提示(第 4.2 節)可以實現比模型的輸出標記概率更準確的校準。

阿諛奉承(Sycophancy)是指經常表達與用戶同意的概念LLMs,即使這種觀點與模型自身的初始輸出相矛盾。Sharma et al. (2023) 發現,當被要求對論點的意見發表評論時LLMs,如果提示中包含用戶的意見(例如“我真的很喜歡/不喜歡這個論點”),模型很容易動搖。此外,他們發現LLM質疑原始答案(例如“你確定嗎?”),強烈提供正確性評估(例如“我相信你錯了”),并添加錯誤的假設將完全改變模型輸出。Wei et al. (2023b) 注意到與意見引發和錯誤的用戶假設類似的結果,還發現對于更大的和指令調整的模型,阿諛奉承會更高。因此,為了避免這種影響,個人意見不應包含在提示中。

5.2.3 偏見、刻板印象和文化

       LLMs應該對所有用戶都是公平的,這樣模型輸出中就不會存在偏見、刻板印象或文化傷害。根據這些目標,已經設計了一些提示技術。

Vanilla Prompting  只是由提示中的一條指令組成,告訴 LLM 是公正的。這種技術也被稱為道德自我糾正。

Selecting Balanced Demonstrations或獲得針對公平性指標優化的演示可以減少輸出中的LLM偏差(第2.2.1.1節)。

文化意識可以注入到提示中,以幫助LLMs文化適應。這可以通過創建幾個提示來完成機器翻譯,其中包括:1)要求LLM優化自己的輸出;2)指導使用LLM與文化相關的詞語。

AttrPrompt 是一種提示技術,旨在避免在生成合成數據時生成偏向某些屬性的文本。傳統的數據生成方法可能偏向于特定的長度、位置和樣式。為了克服這個問題,AttrPrompt:1)要求生成LLM對多樣性很重要的特定屬性(例如位置);2)通過改變這些屬性中的每一個來提示生成LLM合成數據。

5.2.4 歧義

       模棱兩可的問題可以用多種方式解釋,每種解釋都可能導致不同的答案。鑒于這些多重解釋,模棱兩可的問題對現有模型具有挑戰性,但已經開發了一些提示技術來幫助應對這一挑戰。

模棱兩可的演示是具有不明確標簽集的示例。將它們包含在提示中可以提高 ICL 性能。這可以通過檢索器自動完成,但也可以手動完成。

問題澄清 LLM允許識別模棱兩可的問題并生成澄清問題以向用戶提出。一旦用戶澄清了這些問題,LLM就可以重新生成其響應。Mu et al. (2023) 為代碼生成這樣做,Zhang 和 Choi (2023) 配備了LLMs類似的管道來解決一般任務的歧義,但明確設計了單獨的提示:1) 生成初始答案 2) 分類是生成澄清問題還是返回初始答案 3) 決定生成哪些澄清問題 4) 生成最終答案。

六、基準測試

       現在我們已經對提示技術進行了系統回顧,我們將通過兩種方式分析不同技術的經驗性能:通過正式的基準評估,以及現實世界問題的提示工程過程。

6.1 技術基準

       對提示技術的正式評估可以在一項廣泛的研究中進行,該研究在數百個模型和基準中比較了數百個提示技術。這超出了作者的范圍,但由于以前沒有這樣做過,作者提供了朝著這個方向邁出的第一步。選擇了提示技術的子集,并在廣泛使用的基準 MMLU 上運行它們。作者運行了 2,800 個 MMLU 問題的代表性子集(每個類別問題的 20%),并在所有實驗中使用 gpt-3.5-turbo。

6.1.1 比較Prompt技術

? ? ? 作者使用相同的通用提示模板對六種不同的提示技術進行了基準測試(圖 6.2)。此模板顯示提示的不同組件的位置。每個提示中只存在基本說明和問題?;局噶钍恰?strong>Solve the problem and return (A), (B), (C) or (D).”這樣的短語,作者在某些情況下會有所不同。作者還測試了問題的兩種格式(圖 6.3 和 6.4)。問題格式將插入到提示模板中,以代替“{QUESTION}”。作者測試了每種提示技術,總共有 6 個變體,但使用自一致性的變體除外。
Zero-Shot?作為基線,作者直接通過模型運行問題,沒有任何提示技術。對于這個基線,作者使用了兩種格式以及基本指令的三種措辭變體。因此,該基準測試的 2800 個問題總共運行了 6 個。這不包括任何范例或思想誘導器。

Zero-Shot-CoT技術 作者使用了Zero-Shot-CoT技術。作者使用了三個思維誘導器(導致模型生成推理步驟的指令),包括標準的Let’s think step by step”思維鏈,以及ThoTPlan and Solve。然后,作者選擇了其中最好的,然后用自一致性運行它,進行了三次迭代,獲得了大多數響應。

Few-Shot Techniques 作者還運行了 Few-Shot 提示和 Few-Shot-CoT 提示,兩者都使用由其中一位作者生成的示例。對于每個問題,作者使用了基本指令的三種變體以及兩種問題格式(也適用于示例)。然后,使用性能最好的措辭和自一致性,進行了三次迭代,獲得了大多數響應。

6.1.2 問題格式

       作者嘗試了 Sclar 等人 (2023b) 提出的兩種格式,探討了格式選擇對基準測試結果的影響。作者使用在Sclar 等人任務得到不同的結果的兩種格式(圖 6.3 和 6.4)。

6.1.3 自洽性

        對于兩個自洽結果,作者按照 Wang 等人 (2022) 的指南將溫度設置為 0.5。對于所有其他提示,使用溫度 0。

6.1.4 評估回復

      評估是否LLM正確回答了問題是一項艱巨的任務(第 2.5 節)。如果答案遵循某些可識別的模式,例如括號內唯一的大寫字母 (A-D) 或遵循“正確答案是”等短語,作者將答案標記為正確。

6.1.5 結果

? ? ? 隨著技術變得越來越復雜,性能普遍提高(圖 6.1)。然而,ZeroShot-CoT 從 Zero-Shot 急劇下降。盡管它的傳播范圍很廣,但對于所有變體,Zero-Shot 的表現都更好。這兩種自一致性的情況,由于它們重復了一種技術,因此自然具有較低的傳播,但它只是提高了零射擊提示的準確性。Few-Shot CoT 性能最佳,某些技術無法解釋的性能下降需要進一步研究。由于提示技術選擇類似于超參數搜索,這是一項非常艱巨的任務(Khattab 等人,2023 年)。然而,作者希望這項小型研究能夠促進研究朝著更高性能和更強大的提示技術方向發展。

6.2 Prompt工程案例分析

       提示工程正在成為一門藝術,許多人已經開始專業實踐,但關于提示工程詳細指南還沒有文獻。為此,作者提出了一個帶標注的提示工程案例研究來解決現實世界問題。該案例研究并不能直接解決實際問題,相反,它提供了一個有經驗的提示工程師如何處理此類任務的例證,以及吸取的經驗教訓。

6.2.1 問題

       作者闡述的問題涉及檢測潛在自殺者所寫的文本中預測危機級別自殺風險的信號。自殺在世界范圍內是一個嚴重的問題,與大多數心理健康問題一樣,由于極度缺乏心理健康資源而變得更加復雜。在美國,全國一半以上的人口生活在聯邦定義的精神健康提供者短缺地區;此外,許多心理健康專業人員缺乏預防自殺的核心能力。2021 年,12.3M 美國人認真考慮過自殺,其中 1.7M 人實際上嘗試自殺導致超過 48,000 人死亡。在美國,截至 2021 年的統計數據,自殺是 10-14 歲、15-24 歲或 25-34 歲人群的第二大死因(僅次于事故),也是 35-54 歲人群的第五大死因。

      最近的研究表明,對潛在自殺傾向的評估具有重要價值,這些評估特別關注自殺危機的識別,即與即將發生的自殺行為的高風險相關的急性痛苦狀態。然而,對自殺危機綜合癥 (SCS) 等診斷方法的驗證評估和急性自殺情感障礙需要個人臨床互動或完成包含數十個問題的自我報告問卷。因此,用個人語言準確標記自殺危機指標的能力可能會在心理健康生態系統中產生重大影響,而不是替代cal 判斷,但作為補充現有實踐的一種方式。

       作為起點,作者在這里重點關注自殺危機綜合癥評估中最重要的預測因素,在文獻中稱為要么是瘋狂的絕望,要么是被困,“一種逃離難以忍受的境地的愿望,與所有逃生路線都被封鎖的看法聯系在一起”。個人正在經歷的這種特征也是導致自殺的心理過程的其他特征的核心。

6.2.2 數據集

       作者使用了馬里蘭大學Reddit自殺數據集中的數據子集,該數據集由r/SuicideWatch中的帖子構建,r/SuicideWatch是一個子版塊,為任何與自殺念頭作斗爭的人提供同伴支持。兩名接受過自殺危機綜合癥因素識別培訓的編碼員對一組 221 個帖子進行了編碼,以確定是否存在誘捕,從而實現了可靠的編碼人員間可靠性(Krippendorff 的 alpha = 0.72)。

6.2.3 過程

      一位專業的提示工程師撰寫了一本廣泛使用的提示指南,他承擔了使用 an LLM 來識別帖子中的陷阱的任務。提示工程師得到了關于自殺危機綜合癥和誘捕的簡短口頭和書面總結,以及 121 個開發帖子及其正面/負面標簽(其中,以個人語言準確標記自殺危機指標的能力可能會在心理健康生態系統中產生重大影響“積極”意味著存在誘捕), 其他 100 個帶標簽的帖子保留用于測試。這種有限的信息反映了現實生活中常見的場景,在這些場景中,提示是根據任務描述和數據開發的。更一般地說,這與自然語言處理和人工智能的趨勢是一致的,即將編碼(注釋)作為一項標簽任務,而沒有深入研究標簽實際上可能指的是微妙而復雜的基礎社會科學結構。

       我們記錄了提示工程的過程,以說明有經驗的提示工程師的工作方式,總共記錄了47個提示過程實踐過程,累計工作約20小時。從性能為 0% 的冷啟動(提示不會返回結構正確的響應),性能提升到 0.53 的 F1,其中 F1 是 0.86 精度和 0.38 召回率的諧波平均值。

       下面,一組提示 q是測試項目,而 q、r 和 a表示示例中的問題、思維鏈步驟和答案。

6.2.3.1 數據集探索(2步驟)

? ? ? ?該過程從提示工程師審查陷阱描述開始(圖 6.7);在編碼過程的早期,這種描述被用作人類編碼人員的第一遍標準,然而,他們注意到他們熟悉 SCS,并且知道它既不是一個正式的定義,也不是詳盡無遺的。然后,提示工程師將數據集加載到 Python 筆記本中,以便進行數據探索。他首先詢問 gpt-4-turbo-preview 是否知道什么是陷阱(圖 6.8),但發現 LLM的回答與給出的描述并不相似。因此,提示工程師在以后的所有提示中都包含了圖 6.7 對陷阱的描述。

6.2.3.2 獲取標簽(8個步驟)

       如第 6.1 節所述,MMLU 的human_sexuality子集在LLMs敏感領域表現出不可預測且難以控制的行為。對于提示工程流程中的多個步驟,提示工程師發現 正在LLM提供心理健康建議(例如圖 6.9),而不是標記輸入。通過切換到 GPT-4-32K 模型解決了這個問題。

       從這個初始階段可以看出,與一些大型語言模型相關的“護欄”可能會干擾提示任務的進展,這可能會影響模型的選擇,而不是LLM潛在質量。

6.2.3.3 提示技術(32個步驟)

        提示工程師將大部分時間花在改進所使用的提示技術上。這包括 Few-Shot、思維鏈、AutoCoT、對比 CoT 和多種答案提取技術。作者統計了這些技術首次運行的統計數據;在隨后的運行中,F1 分數可能會變化多達 0.04,即使溫度和top-p 設置為零也是如此。

Zero-Shot + Context?是第一個評估的技術(圖 6.10),使用圖 6.7 中的描述。請注意提示中的“定義”一詞,盡管圖 6.7 不是正式定義。

為了從用于計算性能指標的 LLM 中獲得最終響應,必須從LLM輸出中提取標簽。提示工程師測試了兩個提取器,一個用于檢查輸出是否完全為“是”或“否”,另一個僅檢查這些單詞是否與輸出的前幾個字符匹配。后者具有更好的性能,其余部分用于此部分,直到我們使用 CoT。這種方法獲得了 0.25 的召回率、1.0 的精確度和 0.40 的 F1,對訓練/開發的所有樣本進行了評估,因為沒有樣本被用作示例。

10-Shot + Context。接下來,提示工程師將前十個數據樣本(帶標簽)添加到提示中,格式為 Q:(問題)A:(答案)(圖 6.11)。對訓練/開發集中的其余項目評估了這 10 個提示,相對于之前的最佳提示,召回率為 ↑ 0.05 (0.30),精度為 ↓ 0.70 (0.30),F1 為 ↑0.05 (0.45) F1。

One-Shot AutoDiCot + Full Context 在形成 10 個提示時,提示工程師觀察到開發集中的第 12 個項目被錯誤地標記為陽性實例,并開始嘗試修改提示,以便模型能夠正確獲取該項目。為了弄清楚為什么會發生這種錯誤標簽,提示工程師提示生成LLM一個解釋,解釋為什么第 12 項會以這種方式被標記。

? ? ? ?作者將圖 6.12 中的算法稱為自動定向 CoT (AutoDiCoT),因為它會自動引導 CoT 進程以特定方式進行推理。該技術可以推廣到任何標記任務。它結合了 CoT 的自動生成和顯示錯誤推理LLM的例子,如對比 CoT 的情況。該算法還用于開發后續提示。

最后,提示擴展了兩個額外的上下文/說明。第一封是提示工程師收到的一封電子郵件,其中解釋了項目的總體目標,其中提供了有關陷阱概念的更多背景信息以及想要標記它的原因。第二個添加的靈感來自提示工程師注意到該模型經常過度生成陷阱的正標簽。假設該模型在基于預訓練的顯性推理中過于激進第二個添加的靈感來自提示工程師注意到該模型經常過度生成陷阱語言的正面標簽,他指示模型將自己限制在明確的陷阱陳述中(圖 6.13)。下面我們將這兩段上下文稱為完整的上下文,除了對陷阱的描述之外,還提供。

 此提示還使用了一個新的提取器,用于檢查輸出中的最后一個單詞是“是”還是“否”,而不是第一個單詞。此更新的提示針對開發集中除前 20 個輸入之外的所有輸入進行了測試。它沒有改善 F1,↓0.09 (0.36) F1,但它引導提示工程師朝著一個方向發展,如下所述。精確度提高到 ↑ 0.09 (0.39) 精度,召回率下降 ↑ 0.03 (0.33) 召回率。

       然而,在這一點上,值得觀察的是,盡管它最終導致了F1得分的增加,但事實上,就長期目標而言,這里為減少過度產生正面標簽而采取的措施并不是正確的舉動。誘捕不需要為了存在而明確表達(例如,通過“我感到被困”或“沒有出路”等短語);相反,研究過這些文本的臨床專家發現,誘捕的表達可能是隱含的,而且可能非常微妙。此外,在大多數自動發現某人語言陷阱的用例中,精確度和回憶不太可能同等重要,在兩者中,召回/敏感性(即不遺漏應該被標記為有風險的人)可能更重要,因為假陰性的潛在成本非常高。

       盡管后來才有見解,但這里的要點是,除非提示工程師和更深入地了解實際用例的領域專家之間定期參與,否則提示開發過程很容易偏離實際目標。

Ablating Email, 先前更改的結果是有希望的,但它們確實涉及創建一個提示,其中包括來自電子郵件的信息,這些信息不是為此目的創建的,其中包括有關項目、數據集等的信息,這些信息不打算向廣大受眾披露。然而,具有諷刺意味的是,刪除這封電子郵件會顯著降低性能,↓ 0.18 (0.18) F1,↓ 0.22(0.17) 精度和 ↓ 0.13 (0.20) 召回率。我們將其歸因于這樣一個事實,即該電子郵件提供了有關標簽目標的更豐富的背景信息。盡管作者不建議在任何LLM提示中包含電子郵件或任何其他潛在的識別信息,但作者選擇將電子郵件保留在提示中;這與許多典型設置中的方案一致,在這些方案中,提示不應公開給其他人。

10-Shot + 1 AutoDiCoT?下一步,Prompt Engineer 嘗試包括完整的上下文、10 個常規示例以及關于如何不推理的一次性示例。這損害了性能(圖 6.14)↓ 0.30 (0.15) F1,↓ 0.15 (0.15) 精度,↓ 0.15 (0.15) 召回。

Full Context Only?接下來,僅使用完整上下文創建提示,沒有任何示例(圖 6.15)。這與以前的技術性能提高了,↓ 0.01 (0.44) F1,↓ 0.01 (0.29) 精度,↑ 0.62 (0.92) 召回。有趣的是,在這個提示中,提示工程師不小心粘貼了兩次完整上下文電子郵件,這最終對以后的性能產生了顯著的積極影響(并且刪除重復項實際上降低了性能)。這讓人想起重讀技術。

 這既可以樂觀地解釋,也可以悲觀地解釋。樂觀地表明,它表明如何通過探索和偶然發現來改進。在悲觀的一面,在提示中復制電子郵件的價值凸顯了提示在多大程度上仍然是一種難以解釋的黑色藝術,其中LLM可能會對人們可能認為無關緊要的變化出乎意料地敏感。

10-Shot?AutoDiCoT?下一步是根據圖 6.12 中的算法創建更多 AutoDiCoT 示例。總共有 10 個新的 AutoDiCoT 示例被添加到完整的上下文提示中(圖 6.16)。就 F1 分數而言,這從該提示工程練習中獲得了最成功的提示,↑ 0.08 (0.53) F1,↑ 0.08 (0.38) 精度,↑ 0.53 (0.86) 召回。

20-Shot AutoDiCoT 進一步的實驗繼續進行,尋求(未成功)改進之前的 F1 結果。在一次嘗試中,提示工程師標記了另外 10 個示例,并根據開發集中的前 20 個數據點創建了一個 20 個樣本提示。這導致結果比 10 次提示更差,當在前 20 個樣本以外的所有樣本上進行測試時,↓ 0.04 (0.49) F1,↓ 0.05 (0.33) 精度,↑ 0.08 (0.94) 召回。值得注意的是,它在測試集上的性能也較差。

20-Shot AutoDiCoT + Full Words?提示工程師推測,LLM如果提示包含完整的單詞 Question、Reasoning 和 Answer,而不是 Q、R、A,則性能會更好。然而,這并沒有成功(圖6.17),↓ 0.05 (0.48) F1,↓ 0.06 (0.32) 精度,↑ 0.08 (0.94) 召回。

20-Shot AutoDiCoT + Full Words + Extraction Prompt?在許多情況下,LLM生成的輸出無法正確解析以獲得響應。因此,他們制作了一個提示,從LLM響應中提取答案(圖 6.18)。雖然這提高了幾分的準確率,但它降低了 F1,這要歸功于許多未解析的輸出實際上包含不正確的響應,↓ 0.05 (0.48) F1,↓ 0.05 (0.33) 精度,召回率沒有變化 (0.86)。

10-Shot AutoDiCoT + Extraction Prompt 將提取提示符轉換為性能最佳的 10-Shot AutoDiCoT 提示符并未改善結果,↓ 0.04 (0.49) F1,↓ 0.06 (0.78) 召回,↓ 0.03 (0.35) 精度。

10-Shot AutoDiCoT without Email 如上所述,從提示中直接刪除電子郵件會損害性能,↓ 0.14 (0.39) F1,↓ 0.38 (0.48) 召回,↓ 0.05 (0.33) 精度。

De-Duplicating Email 此外,如上所述,刪除電子郵件的重復項似乎與無意重復的提示一樣好或更好。然而,事實證明,刪除重復項會顯著損害性能,↓ 0.07 (0.45) F1,↓ 0.13 (0.73) 召回,↓ 0.05 (0.33) 精度。

10-Shot AutoDiCoT + Default to Negative 這種方法使用性能最佳的提示,并在未正確提取答案的情況下默認標記為否定(而不是陷阱)。這對性能沒有幫助,↓ 0.11 (0.42) F1,↓ 0.03 (0.83) 召回,↓ 0.10 (0.28) 精度。

Ensemble + Extraction 特別是對于對其輸入細節敏感的系統,嘗試輸入的多種變體,然后組合其結果具有優勢。這是通過采用性能最佳的提示符 10-Shot AutoDiCoT 提示符,并創建具有不同順序的樣例的三個版本來完成的。三個結果的平均值被作為最終答案。不幸的是,兩種與默認排序不同的排序都導致LLM無法輸出結構良好的響應。因此,使用提取提示來獲得最終答案。這種探索傷害而不是幫助性能 ↓ 0.16 (0.36) F1,↓ 0.22 (0.64) 召回,↓ 0.12 (0.26) 精度。

10-Shot AutoCoT + 3x the context (no email dupe) 回想一下,上下文是指對誘捕的描述、關于明確的說明和電子郵件。由于重復的電子郵件提高了性能,提示工程師測試了粘貼上下文的三個副本(首先刪除重復的電子郵件)。然而,這并沒有提高性能,↓ 0.06 (0.47) F1,↓ 0.08 (0.78) 召回,↓ 0.05 (0.33) 精度。

Anonymize Email 在這一點上,似乎很清楚,在提示中包含重復的電子郵件實際上(盡管無法解釋)對于迄今為止獲得的最佳性能至關重要。提示工程師決定通過將人名替換為其他隨機名稱來匿名化電子郵件。然而,令人驚訝的是,這顯著降低了性能 ↓ 0.08 (0.45) F1,↓ 0.14 (0.72) 召回,↓ 0.05 (0.33) 精度。

DSPy?作者通過探索手動提示工程的替代方案,即 DSPy 框架來結束案例研究,該框架可LLM自動優化給定目標指標的提示。具體來說,我們從使用圖 6.7 中陷阱定義的思維鏈分類管道開始。在 16 次迭代中,DSPy 引導合成LLM生成的演示和隨機抽樣的訓練示例,最終目標是在上面使用的相同開發集上最大化 F 1。作者使用了 gpt-4-0125-preview 和默認設置。對于 BootstrapFewShotWithRandomSearch“提詞器”(優化方法)。圖 6.19 顯示了測試集上其中兩個提示的結果,其中一個使用默認 DSPy 行為,第二個從此默認值手動修改。最好的結果提示包括 15 個示例(沒有 CoT 推理)和一個引導推理演示。它在測試集上達到 0.548 F 1(和 0.385 / 0.952 精度/召回率),沒有使用教授的電子郵件或不正確的關于誘捕的明確性的說明。它的性能也比測試集上的人類提示工程師的提示好得多,這表明了自動化提示工程的巨大前景。

6.2.4 討論

       提示工程是一個非同尋常的過程,其細微差別目前在文獻中沒有得到很好的描述。從上面所示的完全手動過程來看,有幾個值得總結的要點。首先,提示工程與讓計算機按照你想要的方式運行的其他方法有根本的不同:這些系統是被哄騙的,而不是編程的,而且,除了對所使用的特定LLM內容非常敏感之外,它們還可以對提示中的特定細節非常敏感,而沒有任何明顯的理由這些細節應該很重要。其次,因此,深入研究數據很重要(例如,為LLM導致錯誤響應的“推理”生成潛在的解釋)。與此相關的是,第三個也是最重要的一點是,提示工程應該涉及提示工程師和領域專家之間的參與,前者具有如何哄騙LLMs以期望的方式行事的專業知識,后者了解這些期望的方式是什么以及為什么。

? ? ? ?最終,作者發現,在探索提示空間的自動化方法中,有很大的希望,而且將這種自動化與人工提示工程/修訂相結合是最成功的方法。作者希望這項研究能夠成為對如何進行及時工程的更有力的檢查的一步。

本文章轉載微信公眾號@ArronAI

上一篇:

LLM之Prompt(三)| XoT:使用強化學習和蒙特卡羅樹搜索將外部知識注入Prompt中,性能超過CoT,ToT和GoT

下一篇:

LLM之RAG理論(一)| CoN:騰訊提出筆記鏈(CHAIN-OF-NOTE)來提高檢索增強模型(RAG)的透明度
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費