Prompt Engineering 提示工程介紹與使用/調試技巧

1. 介紹

Prompt Engineering 是一種人工智能(AI)技術,它通過設計和改進 AI 的 prompt 來提高 AI 的表現。Prompt Engineering 的目標是創建高度有效和可控的 AI 系統,使其能夠準確、可靠地執行特定任務。
如果你從來沒有使用過Prompt Enginerring,可以看Google的這個prompt教程:
https://learningprompt.wiki/zh-Hans/docs/chatGPT/tutorial-basics/brief-introduction

prompt Engineering的介紹和使用網上已經有很多帖子介紹,這里并不重復說明。本博客主要總結OpenAI官網推薦的Prompt的提示策略和技巧。

2. 提示技巧

2.1 清晰的指令要求

我們輸入給大模型的prompt,最好是清晰的,不帶歧義的。具體有以下幾種方式可以構建清晰的prompt。

  1. 在查詢中包含詳細信息以獲得更相關的答案:例如在prompt中提供所有重要的細節或者背景信息。

  2. 指定角色:例如,在prompt模板里,指定大模型的角色,可以是老師、學生、專家等等,讓大模型以特性的角色來回答問題。

    你是一個小學老師,麻煩將下面文本改寫成小學生弄聽得懂的話。需要改寫的文本:xxxxxxxxx
    
  3. 使用特定的分隔符來區分不同的輸入部分:例如用三重引號、XML標簽等分隔符來劃分需要不同處理的文本。

    你是一個小學老師,麻煩將下面文本<text>改寫成小學生弄聽得懂的話。"""
    <xxxxxxxxx>
    """
    
  4. 提供例子:這個很好理解,類似few-shot,在模型正式回答問題前,附帶一些樣例,期望大模型能從樣例中獲得一些啟發。

    你是一個小學老師,麻煩將下面文本<text>改寫成小學生弄聽得懂的話。"""
    <文本1>
    """# output
    <答案1>"""
    <xxxxxxxxx>
    """# output
  5. 指定所需要的輸出長度:可以要求模型輸出指定長度的單詞、段落等。

    請為我介紹國內最值得去爬的10座山,并說明原因。
    

提供充足的參考文本

  1. 指導模型使用參考文本回答:在prompt里,如果可以提供與當前查詢相關的信息,那么就可以要求模型根據參考文本來回答問題。

    輸出景區A的攻略。# 參考文本
    """
    xxxxxxxxxxx(某一天A景區的天氣和售票情況)
    """# 輸出格式
    <當前天氣>:
    <票價>:
    <行程攻略>:
  2. 指示大模型用制定參考文本中的引用來回答

2.2 將復雜的任務分解為簡單的子任務

  1. 使用意圖分類來識別與用戶查詢相關的指令:如果某一任務存在大量的獨立的指令集,這種情況下可以先對查詢進行分類,最后根據分類結果來確定要執行哪些指令。通過定義固定類別和硬編碼與處理給定類別中的任務相關的指令來實現。此過程可以遞歸應用,將任務分解為一系列階段。該方法的優勢是每次查詢僅包含執行任務下一階段所需指令,與使用單個查詢執行這個任務相比,錯誤率更低。還可以降低成本,因為更大的提示運行成本更高。
  2. 對于需要長時間的對話應用,總結或過濾之前的對話:由于模型具有固定上下文長度,因此用戶和助手之間的對話(其中整個對話包含在上下文窗口中)不能無限期地繼續下去。一旦輸入的大小達到預定的閾值長度,會觸發一個總結部分對話的查詢,并且前一次對話的摘要可以作為系統消息的一部分。或者,可以在整個對話過程中在后臺異步總結前一次對話。
  3. 分段總結長文檔并遞歸構建完整摘要:由于模型具有固定上下文長度,因此它們不能用于在單個查詢中匯總長度超過上下文長度減去生成的摘要的長度的文本。要總結非常長的文檔(例如一本書),我們可以使用一系列查詢來總結文檔的每個部分。可以將各部分摘要連接起來并進行總結,從而生成摘要的摘要。此過程可以遞歸進行,直到總結整個文檔。如果需要使用有關前面部分的信息來理解后面的部分,那么另一個有用的技巧是在總結該部分內容的同時,在書中任何給定點之前包含文本的連續摘要。

2.3 給模型思考的時間

  1. 在匆忙得出結論之前,指導模型自己找到解決方案:當明確指示模型在得出結論之前從第一原則進行推理時,我們回得到更好的結果。例如,假設我們想要一個模型來評估學生對數學問題的解決方案。最明顯的方法是直接詢問模型學生的解決方案是否正確。
  2. 使用內心獨白或一系列查詢來隱藏模型的推理過程:內心獨白的理念是指示模型將輸出中本應對用戶隱藏的部分放入結構化格式中,以便于解析它們。然后將輸出呈現給用戶之前,對輸出進行解析,并只顯示部分輸出。
  3. 詢問模型在之前的傳遞中是否遺漏來什么:假設使用模型列出于特定問題相關來源的摘錄。列出每一個摘錄后,模型需要確定是否應該開始編寫另一個摘錄或是否應該停止。如果源文檔很大,模型通常會過早停止并無法列出所有相關摘錄。在這種情況下,通常可以通過使用后續查詢提示模型來查找之前傳遞時遺漏的任任何摘錄來獲得更好的性能。

2.4 使用外部工具

  1. 使用基于嵌入的搜索實現高效的知識檢索(RAG應用):如果外部信息作為輸入的一部分,模型可以利用這些信息源。這可以幫助模型生成更明智和最新的響應。例如,如果用戶詢問有關特定電影的問題,將有關該電影的高質量信息(例如演員、導演等)添加到模型的輸入中可能會很有用。嵌入可用于實現高效的知識檢索,以便可以在運行時將信息動態添加到模型輸入中。
  2. 使用代碼執行進行更精確的計算或調用外部API:語言模型不能依靠自身準確地執行算術或長時間計算。在需要的情況下,可以指示模型編寫和運行代碼,而不是自己進行計算。具體來說,可以指示模型將要運行的代碼放入指定的格式(例如三重反引號),生成輸出后,可以提取并運行代碼。最后,如果需要,可以將代碼執行引擎(如python解釋器)的輸出作為模型的輸入。
  3. 讓模型訪問特定的功能:Chat Completions API允許在請求中傳遞函數描述列表。這使模型能夠根據提供的模式生成函數參數。生成的函數參數由API以JSON格式返回,可用于執行函數調用。函數調用提供的輸出隨后可以在以下請求中反饋到模型中以關閉循環。這使使用OpenAI模型調用外部函數的推薦方式。

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

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

相關文章

如何把 Microsoft Word 中所有的漢字字體替換為宋體?

Ctrl H &#xff0c;然后&#xff0c;點擊更多&#xff0c;勾選使用通配符&#xff0c;查找內容中填入 [一-龥]{1,}&#xff0c; 這是 Word 通配符匹配漢字的經典寫法&#xff08;匹配 Unicode 范圍內的 CJK 漢字&#xff09;。 然后&#xff0c; “替換為”留空&#xff0c;點…

CMake從入門到實戰:現代C++項目構建指南

CMake從入門到實戰&#xff1a;現代C項目構建指南 引言 在跨平臺開發成為主流的今天&#xff0c;CMake作為開源構建系統的標桿工具&#xff0c;憑借其跨平臺性、靈活性和可擴展性&#xff0c;已成為C/C項目的事實標準。本文將帶你系統掌握CMake的核心機制&#xff0c;通過實戰…

Web安全滲透之長城杯奪旗賽

Web-Git flag1 掃描WEB目錄發現存在Git泄露&#xff08;這里是隊友掃的&#xff0c;我這圖是拿的我后面掃的截圖&#xff0c;所以時間對不上。 使用GitHub - gakki429/Git_Extract: 提取遠程 git 泄露或本地 git 的工具拉取泄露代碼。 讀取到flag&#xff0c;全場一血捏。…

機器學習與深度學習:區別與聯系

機器學習與深度學習&#xff1a;區別與聯系 在人工智能領域&#xff0c;機器學習和深度學習是兩個最熱門的概念&#xff0c;它們既相互關聯又有所區別。本文將深入探討這兩者的核心差異與內在聯系&#xff0c;幫助讀者更好地理解它們在實際應用中的定位。 一、基本概念 **機…

Linux TCP與Socket與IO多路復用(Epoll)

目錄 一、背景 二、交互流程 2.1 數據流動 2.2 對象之間的關系 三、TCP 3.1 為什么需要三次握手 3.2 三次握手流程 3.3 三次握手后的產物 3.4 TCB 四、Socket 4.1 Java Socket和C Socket 4.2 Socket的本質 4.3 Socket和TCB的關系 4.4 通過文件描述符調用Socket的…

字節跳動旗下火山引擎都覆蓋哪些領域

首先&#xff0c;我需要確認火山引擎的主要業務范圍。根據之前的資料&#xff0c;火山引擎是字節跳動的企業技術服務平臺&#xff0c;可能包括云服務、人工智能、大數據分析等。不過需要更詳細的信息&#xff0c;比如具體的產品和服務&#xff0c;覆蓋的行業等。 接下來&#x…

如何配置jmeter做分布式壓測

問&#xff1a;為何需要做分布式 答&#xff1a;當我們本地機器jmeter進行壓測時&#xff0c;單臺JMeter機器通常無法穩定生成2000 QPS&#xff08;受限于CPU、內存、網絡帶寬&#xff09;&#xff0c;本地端口耗盡&#xff1a;操作系統可用的臨時端口&#xff08;Ephemeral P…

【算法提升】牛牛沖鉆五 最長無重復子數組 重排字符串 one_day

算法提升 1.牛牛沖鉆五1.2 解析 2.最長無重復子數組2.1解析 3.重排字符串3.1解析 1.牛牛沖鉆五 1.2 解析 后面的數據要根據前面兩個的狀態來確定&#xff0c;我的做法是使用動態規劃的方式 #include<iostream> #include<string> #include<vector> using n…

數學建模MathAI智能體-2025電工杯A題實戰

題目&#xff1a; 光伏電站發電功率日前預測問題 光伏發電是通過半導體材料的光電效應&#xff0c;將太陽能直接轉化為電能的技術。光伏電站是由眾多光伏發電單元組成的規模化發電設施。 光伏電站的發電功率主要由光伏板表面接收到的太陽輻射總量決定&#xff0c;不同季節太陽…

VR 展廳開啟一場穿越時空的邂逅?

在文化藝術領域&#xff0c;VR 展廳宛如一扇通往奇妙世界的大門&#xff0c;讓觀眾得以突破時間與空間的枷鎖&#xff0c;以一種前所未有的沉浸式體驗&#xff0c;與歷史文化和藝術作品展開親密無間的互動。博物館&#xff0c;作為承載著厚重歷史文化的璀璨寶庫&#xff0c;長久…

linux中使用make clean重新編譯

是的&#xff0c;在編譯完成后&#xff0c;你可以通過以下方式清除之前的編譯結果并重新編譯&#xff1a; 方法 1&#xff1a;直接刪除 build 目錄&#xff08;推薦&#xff09; 這是最徹底的清理方式&#xff0c;適用于需要完全重新配置或解決構建問題的情況。 # 進入項目根…

【Linux】的火墻管理及優化

目錄 iptables與firewalld服務 iptables的三表五鏈 iptables的安裝和啟用 iptables命令的格式及常用參數 命令格式 常用參數 編寫規則示例 firewalld的域 firewalld的啟用 firewalld-cmd命令的常用參數 firewalld的高級規則 firewalld的地址偽裝與端口轉發 iptable…

古文時空重構:當AI把課本詩詞做成4D電影

當青銅編鐘聲由遠及近&#xff0c;AI生成的水墨粒子逐漸凝聚成標題 當苔痕在石階上悄然蔓延時&#xff0c;你聽見劉禹錫筆下的呼吸了嗎&#xff1f; 當鏡頭突然穿透墨跡&#xff0c;3D古卷如星河鋪展&#xff01; 當AI把課本詩詞做成4D電影&#xff0c;這樣的視頻流量會不會高…

自動生成圖標小程序(iOS)

續上篇《iOS應用程序開發(圖片處理器&#xff09;》 這是一個圖片瀏覽器和處理器&#xff0c;增加一些功能&#xff0c;可以自動生成小圖標。 (This is a picture viewer and editor.You can add some functions,generate the icon automatically.You can select the object …

Netty應用:從零搭建Java游戲服務器網絡框架

在游戲開發領域,服務器網絡框架是連接玩家與游戲世界的橋梁,其穩定性和高效性直接影響玩家的游戲體驗。本文將詳細介紹如何使用Java語言和Netty框架,搭建一個兼具TCP和UDP協議支持的游戲服務器網絡框架,并配套開發客戶端,助你快速掌握游戲網絡開發的核心技術。 1.項目概覽…

SpringBoot-13-多表查詢之一對一查詢association

文章目錄 1 mysql數據庫1.1 account賬戶表1.2 user用戶表2 實體類2.1 model/Account.java2.2 model/User.java3 mapper3.1 AccountToUserMapper.java3.2 AccountToUserMapper.xml3.2.1 mapper3.2.2 resultMap3.2.3 association3.2.4 select4 AccountController.java5 測試5.1 有…

Python如何賦能自動駕駛地圖構建?從點云處理到實時導航

Python如何賦能自動駕駛地圖構建?從點云處理到實時導航 自動駕駛的核心是什么?毫無疑問,精準的地圖 是整個系統的靈魂。沒有高精度地圖,自動駕駛汽車就如同在迷霧中航行。而 Python,憑借其強大的數據處理能力和豐富的開源生態,正在成為自動駕駛地圖構建的關鍵工具。 今…

QT之巧用對象充當信號接收者

備注&#xff1a;以下僅為演示不代表合理性&#xff0c;適合簡單任務&#xff0c;邏輯簡單、臨時使用&#xff0c;可保持代碼簡潔&#xff0c;對于復雜的任務應創建一個專門的類來管理信號和線程池任務. FileScanner類繼承QObject和QRunnable&#xff0c;掃描指定目錄下的文件獲…

Transformer,多頭注意力機制 隱式學習子空間劃分

Transformer,多頭注意力機制 隱式學習子空間劃分 在Transformer中,多頭注意力機制天然支持隱式學習子空間劃分——每個注意力頭可以專注于輸入的不同方面(如語義、句法、位置關系等),從而隱式形成多個子空間。 一、核心思路:將多頭注意力視為隱式子空間 原理 Transfo…

java基礎(繼承)

什么是繼承 繼承好處 提高代碼的復用性 繼承注意事項 權限修飾符 單繼承、Object類 沖突&#xff1a; 方法重寫 擴展&#xff1a; 其實我們不想看地址&#xff0c;地址看來沒用&#xff0c;我們是用來看對象有沒有問題 重寫toString: 比如這個如果返回的是地址值&#xff0c;…