現代提示工程的進展 II — 提示的基本組成與技術

Harry Chao
May 6, 2024

--

前言請參考此篇文章

II 提示的基本組成與技術

提示組件(Prompt components):有許多方法可以設置和使用大型語言模型(LLM)。然而,大部分的提示策略都會包含幾個共同的組件:

  • 輸入資料(Input Data:LLM 需要處理的實際資料,比如需要翻譯或分類的句子,或是需要摘要的文件。
  • 示例(Exemplars:在提示中包含的正確的輸入輸出配對的具體範例。
  • 指示(Instruction:對模型預期輸出的文字描述。
  • 指標(Indicators:用來在提示中建立結構的標籤或格式元素。
  • 上下文(Context:在提示中提供給 LLM 的任何額外資訊。

下圖展示了一個結合了所有上述提示組件的句子分類提示例子。

(代號說明:<S> 對話或指示的開始標記、[INST] 指示開始標記、<<SYS>> 系統指示開始標記、<</SYS>> 系統指令結束標記、[/INST] 指令結束標記)

上下文視窗(The context window):在訓練模型之前,大型語言模型(LLM)會處理一個固定長度的數據序列。這個序列的長度就決定了模型一次能處理的最大數據量,我們叫它「上下文長度」。換句話說,這就是模型能一次處理的數據量的上限。若文本序列顯著超過這個長度,模型可能會產生不可預測的行為和錯誤輸出。不過,我們可以利用自我擴展Self-Extend或位置插值positional interpolation等方法擴展模型的上下文窗口。

位置插值的圖解說明

最近的研究強調讓大型語言模型(LLM)創建更長的上下文窗口,這樣模型就能在每次提示時處理更多的資訊,例如更多的範例或更廣泛的上下文。然而,並不是所有的LLM都能完美消化它們的上下文!通常我們會用「大海撈針測試」(needle in the haystack test)測試來評估LLM利用長上下文窗口的資訊處理能力,這個測試包括:嵌入隨機事實、要求模型找出這個事實,以及在不同的上下文長度和位置重複這個測試。這樣的測試能讓我們清楚看到上下文窗口的不足之處。

--

--