LLM提示工程的技巧

1. 從簡單開始(Start Simple)

避免在一開始就增加太多的復雜性。 從簡單的提示開始,然后在后續提示中添加更多信息和上下文。 這樣,提示就是一個迭代過程,提示在此過程中進一步發展。 從簡單的開始,就有足夠的空間進行實驗和實踐,以達到最佳結果。

2. 清晰簡潔(Be Clear and Concise)

提示語言最好不含任何行話。 堅持使用簡單的詞匯并專注于提供直接的指示。 盡量避免使用 OpenAI 所說的“空洞的描述”。 任何不必要的文字都可能分散法學碩士手頭任務的注意力。

3. 具體的(Be Specific )

在提示交互中,為模型提供給出響應所需的一切信息。 在上面的幼兒示例中,更有效的方法可能是為他們拿著的物品命名,帶他們走到垃圾桶,向他們展示如何將其扔進去,然后慶祝成功。 就法學碩士而言,這種方法涉及添加描述性和上下文信息來說明所需的結果。 在某些情況下,這種程度的特異性最終可能與講故事非常相似。 詳細說明所需的背景、結果、長度、格式和風格。 解釋某種情況之前和之后發生的情況。 描述所涉及的利益相關者。 這些步驟可能看起來很廣泛或與前兩個步驟相矛盾,但是階段設置得越徹底,模型就越能理解參數。

4. 注意結構(Consider the Structure)

對于人類和大語言模型來說,巨大的、不間斷的文本塊都很難理解。標點符號和段落樣式對于人類讀者和大語言模型來說都起著至關重要的作用。 使用項目符號、引號和換行符可以幫助模型更好地理解文本,并防止斷章取義。

5. 限制無關令牌(Limiting Extraneous Tokens)

一個常見的挑戰是在沒有無關標記的情況下生成響應(例如:?"Sure! Here's more information on...")。

通過組合角色、規則和限制、顯式指令和示例,可以提示模型生成所需的響應。

You are a robot that only outputs JSON.
You reply in JSON format with the field 'zip_code'.
Example question: What is the zip code of the Empire State Building?
Example answer: {'zip_code': 10118}
Now here is my question: What is the zip code of Menlo Park?

# "{'zip_code': 94025}"

6. 關注“該做”而不是“不該做” (Focus on the "Do's" not the "Don'ts")

當世界充滿可能性時,只從可用選項列表中劃掉一兩件事并不是很有幫助。 即使有一些選項不可用,本質上仍然存在無限數量的選項。

回到幼兒的例子——如果成人和孩子在一起的環境中,他們不希望孩子觸摸附近的物體,因為這些物體易碎、骯臟或禁止進入,那么簡單地指導孩子接觸附近的物體并不是很有幫助或有效的。 孩子:“別碰任何東西。” 很有可能,這個指令會激發他們觸摸周圍一切的欲望,因為好奇心會占據他們的最佳位置,他們想知道把手放在哪里。 更有效的選擇是開玩笑地指導他們把手放在手上或放在口袋里。 該指示為他們提供了明確且可實現的任務。?

與幼兒一樣,法學碩士對“該做”的反應比“不該做”更積極。 通過提供有限的指令,法學碩士可以學習所需的行為,而不會出現任何混亂、分心或神秘感。

7. 使用引導詞(Use Leading Words)

現在,是時候探索提示,而不僅僅是提供行為指令,而是專注于教模型推理。 引導詞對于指導模型采用更有效的方法解決問題很有用。 通過在提示末尾寫入特定單詞,將模型推向特定格式。 例如,如果用戶希望模型通過用Python編寫來響應,他們可以在提示符末尾添加“import”。 同樣,通過提供“think step by step”的提示,模型被迫將解決方案分解為多個步驟,而不是僅僅拋出一個大的猜測。

8. 舉多個例子(Use Few Shot Prompting )

要使多個例子提示,首先了解舉例子提示非常重要。 沒有例子的提示僅由一項指令和一項請求組成。 然而,沒有例子的編程并不總是有效。 它通常僅在模型已經準確理解該概念時才有效。 當模型不熟悉手頭的概念時,舉例子可以幫助模型解釋概念。?

9. 使用思維鏈提示(Use Chain of Thought Prompting)

當Few Shot提示未能達到預期效果時,思路鏈(CoT)提示就是下一個合乎邏輯的步驟。 CoT 包括向法學碩士提供一個初始問題,然后通過一系列自然語言推理步驟得出答案。 從本質上講,CoT 提示要求用戶將一項大任務分解為遵循邏輯進展的較小塊。 雖然與少量提示有點相似,但 CoT 提示利用線性步驟來教授推理并鼓勵法學碩士解釋其推理。

10.?Retrieval-Augmented Generation

檢索增強生成(RAG)描述了在提示中包含從外部數據庫檢索的信息的做法。 這是將事實納入 LLM 申請的有效方法,并且比微調更經濟,微調也可能對基礎模型的功能產生負面影響。

這可以像查找表一樣簡單,也可以像包含公司所有知識的矢量數據庫一樣復雜:

Given the following information about temperatures in Menlo Park:
2023-12-11 : 52 degrees Fahrenheit
2023-12-12 : 51 degrees Fahrenheit
2023-12-13 : 55 degrees Fahrenheit
What was the temperature in Menlo Park on 2023-12-12?

# Sure! The temperature in Menlo Park on 2023-12-12 was 51 degrees Fahrenheit.

What was the temperature in Menlo Park on 2023-07-18 ?

# Sorry, I don't have information about the temperature in Menlo Park on 2023-07-18. The information provided only includes temperatures for December 11th, 12th, and 13th of 2023.

11. 程序輔助語言模型

LLM本質上不擅長執行計算。 雖然法學碩士不擅長算術,但他們非常擅長代碼生成。 程序輔助語言通過指示LLM編寫代碼來解決計算任務來利用這一事實。

Python code to calculate: ((-5 + 93 * 4 - 0) * (4^4 + -7 + 0 * 5))

Here is the Python code to calculate the given expression:

((-5 + 93 * 4 - 0) * (4**4 + -7 + 0 * 5))

# Calculate the expression inside the parentheses
a = -5 + 93 * 4 - 0
b = 4**4 + -7 + 0 * 5

# Multiply a and b
result = a * b

# Print the result
print(result)

12.?自我一致性(Self-Consistency)

LLM是概率性的,因此即使使用思想鏈,一代人也可能會產生不正確的結果。 自我一致性通過從多代中選擇最常見的答案來提高準確性(以更高的計算成本為代價):

John found that the average of 15 numbers is 40.
If 10 is added to each number then the mean of the numbers is?
Report the answer surrounded by three backticks, for example: ```123```

運行上述幾次并采用最常見的返回值作為答案將利用self-consistency方法。

13. 使用思維樹提示(Use Tree-of-Thought Prompting)

思想樹提示是一種新興方法,目前仍在研究以了解其有效性。 作為 CoT 的下一步,思想樹提示反映了涉及多個利益相關者的組織決策過程。?

參考資料

https://llama.meta.com/docs/how-to-guides/prompting/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17186.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17186.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17186.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第十二章:C# 循環

0. 簡介 循環語句用于重復執行代碼塊,直到滿足特定條件。C#提供了多種循環語句,包括for循環、while循環和do-while循環。掌握這些循環語句有助于編寫高效和簡潔的代碼。 1. for 循環 for循環用于在已知迭代次數的情況下重復執行代碼塊。for循環的語法包括初始化語句、條件…

UniApp中,在頁面顯示時觸發子組件的重新渲染

在UniApp中,要在頁面顯示時觸發子組件的重新渲染,可以利用生命周期鉤子函數來實現。具體來說,可以在頁面的onShow生命周期鉤子中調用子組件的方法或者改變子組件的props,從而觸發子組件的重新渲染。 首先,確保子組件有…

haploview單倍型分析

只需要vcf文件和候選區間信息。按照下面的代碼邏輯即可完成分析。 awk -F"\t" {if($1~/^#/){print $0}else{if($1"Chr_23" && $2>6810142 && $2<6830142){print $0}}} All.SNP.filt.recode.vcf > ud10 awk -F"\t" {p…

HTML靜態網頁成品作業(HTML+CSS)——川西旅游介紹網頁(2個頁面)

&#x1f389;不定期分享源碼&#xff0c;關注不丟失哦 文章目錄 一、作品介紹二、作品演示三、代碼目錄四、網站代碼HTML部分代碼 五、源碼獲取 一、作品介紹 &#x1f3f7;?本套采用HTMLCSS&#xff0c;未使用Javacsript代碼&#xff0c;共有2個頁面。 二、作品演示 三、代…

【C++】:string類底層的模擬實現

目錄 引言1&#xff0c;構造函數2&#xff0c;析構函數3&#xff0c;取出字符串的地址4&#xff0c;計算有效數據個數5&#xff0c;[ ]運算符重載6&#xff0c;簡單迭代器7&#xff0c;預開空間(擴容)8&#xff0c;尾插一個字符9&#xff0c;尾插一個字符串10&#xff0c;運算符…

互聯網十萬個為什么之什么是虛擬化?

虛擬化是在一臺物理計算機上同時運行多個虛擬操作系統實例的技術。虛擬操作系統上運行的這些實例被稱為虛擬機&#xff08;Virtual Machine&#xff09;或者客戶機&#xff08;Guest Machine&#xff09;。每個虛擬機都具備完整的硬件抽象&#xff0c;包括CPU、內存、網絡適配器…

【408精華知識】時鐘周期、機器周期、總線周期、指令周期、存取周期還傻傻分不清?

在做題時&#xff0c;我們經常能遇到關于“周期”的表述&#xff0c;比如時鐘周期、機器周期、總線周期、指令周期、存取周期&#xff0c;類似的表述讓我們很容易迷茫&#xff0c;那么接下來我們就看看它們到底是什么、有什么區別&#xff1f; 周期特點時鐘周期也稱為CPU時鐘周…

圖片數據增強-resize(不同插值)、各種模糊

各種不同的模糊處理 import os import cv2def apply_blur_to_images(input_folder_path, output_folder_path):# 遍歷文件夾下的所有文件for filename in os.listdir(input_folder_path):# 檢查文件類型是否為圖片if filename.endswith(.jpg) or filename.endswith(.jpeg) or …

手算示例:在神經網絡中進行后門攻擊及驗證

手算示例&#xff1a;在神經網絡中進行后門攻擊及驗證 一、神經網絡架構二、初始化參數三、數據集干凈數據&#xff08;原始數據&#xff09;帶后門數據&#xff08;污染數據&#xff09; 訓練步驟四、示例前向傳播&#xff08;干凈數據&#xff09;計算損失&#xff08;干凈數…

每天五分鐘深度學習框架pytorch:tensor張量的維度轉換大全

本文重點 在深度學習中比較讓人頭疼的一點就是矩陣的維度,我們必須構建出符合神經網絡維度的矩陣,只有將符合要求的矩陣放到神經網絡中才可以運行神經網絡,本節課程我們將學習以下tensor中維度的變化。 view和shape View和shape,這兩個方法可以完成維度的變換操作,而且使…

【C語言實現TCP通信】

要在C語言中實現TCP通信&#xff0c;您可以遵循以下步驟&#xff1a; 創建Socket&#xff1a;使用socket()函數創建套接字&#xff0c;指定協議族為AF_INET&#xff08;IPv4&#xff09;或AF_INET6&#xff08;IPv6&#xff09;&#xff0c;類型為SOCK_STREAM表示使用TCP協議。…

【相機標定系列】【相機模型】SLAM 中常用的相機模型畸變模型總結

Overview 魚眼鏡頭的成像原理分類&#xff1a; Dioptric cameras&#xff0c;通過透鏡來實現&#xff0c;主要是折射 Catadioptric cameras&#xff0c;使用一個標準相機加一個面鏡&#xff08;Shaped mirror&#xff09; polydioptric camera&#xff0c;通過多個相機重疊視…

npm的基本命令和用法

1. 安裝與初始化 安裝npm 首先&#xff0c;確保你的系統中已安裝了Node.js&#xff0c;因為npm隨Node.js一同分發。訪問Node.js官網下載并安裝適合你操作系統的版本。安裝完成后&#xff0c;在終端或命令提示符中輸入以下命令來驗證安裝&#xff1a; 1$ node -v 2$ npm -v …

[STM32-HAL庫]ADC采集-DMA中斷采集-平均值濾波-STM32CUBEMX開發-HAL庫開發系列-主控STM32F103C8T6

目錄 一、前言 二、實現步驟 1.STM32CUBEMX配置 2.Keil工程程序設計 三、結語 一、前言 本文通過STM32CUBEMX實現對ADC的數據采集和濾波操作&#xff0c;幫助各位開發者完成與模擬量輸入的采集工作。 二、實現步驟 1.STM32CUBEMX配置 以STM32F103C8T6為例&#xff0c;打開S…

3D 生成重建015-nerf2mesh從神經輻射場中提取mesh和紋理!

3D 生成重建015-nerf2mesh從神經輻射場中提取mesh和紋理&#xff01; 文章目錄 0 論文工作1 論文方法2 效果 0 論文工作 NeRF2Mesh 提出了一種從多視角 RGB 圖像重建紋理表面網格的新方法。它克服了傳統 NeRF 模型的局限性&#xff0c;由于其隱式表示&#xff0c;傳統 NeRF 模…

高斯分步正態分布

高斯分布&#xff0c;也稱為正態分布&#xff08;Normal Distribution&#xff09;&#xff0c;是統計學和概率論中最重要的分布之一。它由德國數學家卡爾弗里德里希高斯&#xff08;Carl Friedrich Gauss&#xff09;首先系統研究并命名。以下是關于高斯分布的詳細介紹&#x…

基于 Pre-commit 的 Python項目代碼風格統一實踐

背景信息 統一代碼風格首先需要定義參照的規范&#xff0c;每個團隊可能會有自己的規范&#xff0c;我們選擇的規范是 yapf mypy isort&#xff0c;如果保證所有的研發人員都遵循相關規范呢&#xff1f; 鼓勵 IDE 中對應的插件的安裝&#xff0c;通過直接對應的插件&#x…

bootstrap實現天平效果

之前提到了&#xff0c;最近&#xff0c;孩子的幼兒園讓家長體驗“半日助教活動”&#xff0c;每個家長需要講授15-20分鐘的課程。作為一名程序員&#xff0c;實在沒有能教的課程&#xff0c;只能做了一個小游戲&#xff0c;帶著小朋友們熟悉數字。 在上一章博客中&#xff0c…

【讀書】讀書筆記——理科生的視角:底層邏輯+數學之美

1&#xff0c;底層邏輯1&#xff08;看清這個世界的底牌&#xff09; 劉潤 著 0&#xff09;什么是底層邏輯&#xff1f; 底層邏輯是&#xff1a;事物之間共同點、變化背后不變的東西事&#xff1b;看清事物的本質&#xff0c;才能在復雜變化中從根本上解決問題。 1&#x…

【Java繼承】(超級詳細!!!)

【Java繼承】&#xff08;超級詳細&#xff01;&#xff01;&#xff01;&#xff09; 1、 繼承的概念2 、繼承的語法3、 父類成員訪問3.1 子類中訪問父類的成員變量3.2 子類中訪問父類的成員方法 4、 super關鍵字5 、子類的構造方法6、 繼承關系上的執行順序7、protected 關鍵…