如何構建并優化提示詞?

提示詞是一個小白最容易上手大模型的方式,提示詞就是你告訴大模型應該如何去完成一項工作的系統性的命令,所以寫一個好的提示詞是比較關鍵的,那么如何寫好一個提示詞呢?
要寫好提示詞,其實就像我們要把一些命令清晰地傳達出來,大家想象我們在職場中要交給別人一個任務的時候,比如讓分析師去分析下數據,我們一般是不是要告訴這個分析師對應的工作任務是什么,然后有哪些對應的業務的背景信息,這個分析的樣例之前有沒有呢,這個任務完成后給你的交付物應該是什么,是ppt還是一個word或者一個表格就行了呢?

1.1: 提示詞框架

一個任務去如何完成是上述的一個步驟,所以我們去寫提示詞的時候也是遵循一個大體的框架,就是如下幾步:
1: 設定好角色
2: 確定好任務目標
3: 描述清晰背景
4: 給定些樣例
5:明確輸出格式
當然,這個對應的提示詞可能我們自己寫起來比較麻煩,有的時候我們只需要確定好任務目標后,使用些現成的提示詞工具去擴展,然后改寫下就行,比如Kimi和阿里云百煉的提示詞優化工具;

1.2: 提示詞模版

有了上述的對應的框架,我們自己就可以構建對應的提示詞了,但是如果我們自己想讓我們的應用去回答用戶的問題,肯定不能讓用戶自己去寫對應的提示詞,那么這個對應的提示詞的一些內嵌的信息我們自己要規定好,把客戶的問題透出去讓客戶自己寫就行,所以我們自己可以先規定一個提示詞模版,如下所示:

構建提示詞模板

prompt_template_string = ("你是公司的客服小蜜,你需要簡明扼要的回答用戶的問題""【注意事項】:\n""1. 依據上下文信息來回答用戶問題。\n""2. 你只需要回答用戶的問題,不要輸出其他信息\n""以下是參考信息。" "---------------------\n" "{context_str}\n" "---------------------\n" "問題:{query_str}\n。""回答:" 
)  rag.update_prompt_template(query_engine,prompt_template_string) 

1.3: 如何構建高效的提示詞

 1.3.1: 清晰表達需求,并且使用分隔符 ,這個可以讓大模型更加清晰的明白任務是什么,并且使用分隔符可以幫它明白對應的背景信息和輸入是什么,有什么具體要求1.3.2: 指定對應的角色和受眾,說白了這個就是讓大模型知道它是誰,它在為誰工作1.3.3: 提供少量樣本,對于一些專業領域的東西,可能大模型還不是很精通,所以可以提供少量樣本讓他學習下,以便可以讓他在這個對應的領域更加精通點1.3.4: 指定好輸出格式,畢竟我們在編寫程序應用的時候,結構化的輸出格式能更好的讓我們去分析數據1.3.5: 給模型一些思考的時間,這樣可以讓模型的回答更加完善,畢竟我們自己去經過對應的比較長的思考對于問題的回答會更加好嘛

所以一個比較好的示例如下:

question_task= """
【任務要求】
請根據用戶的主題,結合下面【樣例】給的例子,理解和使用一致的風格和結構繼續創作內容,不要輸出多余的內容。
---
【輸出要求】
最終輸出需要以Markdown格式呈現,請注意,在你的回答中包含所有必要的Markdown元素,如標題、列表、鏈接、圖片引用、加粗等,以便于閱讀、后續編輯和保存。
---
【樣例】
### 示例1: 制作簡易書簽
# 簡易書簽制作教程## 材料清單
- 彩色卡紙
- 剪刀
- 裝飾貼紙
- 鉛筆## 步驟
1. 選擇一張彩色卡紙。
2. 用鉛筆在卡紙上畫出一個長方形,尺寸約為2英寸 x 6英寸。
3. 沿著鉛筆線剪下長方形。
4. 使用裝飾貼紙對書簽進行個性化裝飾。
5. 完成!現在你有了一個獨一無二的書簽。## 結束語
希望這個教程能幫助你制作出滿意的書簽!---
【用戶輸入】
以下是用戶的要求創作的主題:
"""
question_doc = "制作手工賀卡"question = question_task + question_doc
ask_llm(question, query_engine)

1.4: 如何讓提示詞進行意圖識別

按照上面的步驟我們設計好了對應的提示詞后,如果問大模型一個問題,然后大模型答非所問,比如下面這種情況,你讓大模型去審查句子,但是由于它的召回文本挺多相關性內容,導致大模型回答錯誤,

所以有的時候我們可以決定用不用rag應用,這就要在前面做個判斷,進行下意圖識別,如果是正常的就讓大模型正常回答,如果涉及到專業領域就讓rag回答,所以對應的提示詞就需要更改下,讓提示詞幫忙進行意圖識別

1.5: 當提示詞遇見了推理模型怎么辦

在DeepSeek出現之前,很多時候我們在編寫提示詞的時候是需要思維鏈(COT)的,什么意思呢?就是說我們想讓模型回答的更精確,我們是需要告訴模型該如何一步步去思考一個問題,然后把對應的答案給到我們,讓模型思考的慢一點,這樣就可以給到我們相應的解決方案,如下所示:

但是DeepSeek出現了之后,相信大家都知道Deepseek基本上已經內嵌了思維鏈,所以我們就不需要去寫cot了,這樣反而會干擾對應的推理模型,導致它的思考出現了偏差,反而給出的答案不嚴謹

綜上所述,當推理大模型出現了之后可能我們不需要寫那么詳細的提示詞,但是提示詞還是需要寫的,而且在寫提示詞的時候最關鍵的一點是要明白,我們一定要清晰地明白一個點:清晰有效的任務目標是很重要的,提供豐富且有效的背景信息

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

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

相關文章

面向大模型的開發框架LangChain

這篇文章會帶給你 如何使用 LangChain:一套在大模型能力上封裝的工具框架如何用幾行代碼實現一個復雜的 AI 應用面向大模型的流程開發的過程抽象 文章目錄 這篇文章會帶給你寫在前面LangChain 的核心組件文檔(以 Python 版為例)模型 I/O 封裝…

【藍橋杯】動態規劃:線性動態規劃

1. 最長上升子序列(LIS) 1.1. 題目 想象你有一排數字,比如:3, 1, 2, 1, 8, 5, 6 你要從中挑出一些數字,這些數字要滿足兩個條件: 你挑的數字的順序要和原來序列中的順序一致(不能打亂順序) 你挑的數字要一個比一個大(嚴格遞增) 問:最多能挑出多少個這樣的數字? …

vue2和vue3的主要區別

一、性能優化與響應式系統 性能優化: Vue2:性能較好,但在大型應用中,當數據變化頻繁時可能出現性能瓶頸。它使用虛擬DOM來高效地進行DOM操作,并通過多種技術手段如懶加載、異步組件、樹形抖動等優化性能。 Vue3&…

Python: 實現數據可視化分析系統

后端基于Python 開源的 Web 框架 Flask,前端頁面采用 LayUI 框架以及 Echarts 圖表,數據庫為sqlite。系統的功能模塊分為數據采集和存儲模塊、數據處理和分析模塊、可視化展示模塊和系統管理模塊。情感分析方面使用LDA等主題建模技術,結合領域…

深度學習總結(3)

數據批量的概念 通常來說,深度學習中所有數據張量的第一個軸(也就是軸0,因為索引從0開始)都是樣本軸[samples axis,有時也叫樣本維度(samples dimension)?]?。深度學習模型不會一次性處理整個…

微軟慶祝它成立整整50周年

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

【操作系統(Linux)】——通過案例學習父子進程的線程異步性

本篇旨在通過幾個案例來學習父子進程的線程異步性 一、父進程與子進程 我們將要做的&#xff1a; 創建父子進程&#xff0c;觀察父子進程執行的順序&#xff0c;了解進程執行的異步行為 源代碼&#xff1a; #include <stdio.h> #include <sys/types.h> #include…

系統性能核心指標:QPS、TPS、RT、并發量詳解

系統性能核心指標&#xff1a;QPS、TPS、RT、并發量詳解 1. 引言 在分布式系統、高并發架構設計中&#xff0c;QPS、TPS、RT、并發量 等指標是衡量系統性能的關鍵。本文深入解析這些術語的定義、計算方法、關聯性及優化策略&#xff0c;幫助開發者更好地進行系統性能評估與調…

PortswiggerLab:Exploiting a mass assignment vulnerability

實驗目標 To solve the lab, find and exploit a mass assignment vulnerability to buy a Lightweight l33t Leather Jacket. You can log in to your own account using the following credentials: wiener:peter. 官方WP In Burps browser, log in to the application using…

卡爾曼濾波器的工作原理

原文: https://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/ 1 概述 你可以對某個動態系統有不確定信息的任何地方使用卡爾曼濾波器&#xff0c;并且對系統下一步的狀態做出有根據的猜測。即使出現混亂的現實狀態&#xff0c;卡爾曼濾波器都會給出一個合理的結果。…

PDFtk

如果下載的pdf文件有秘鑰的話&#xff0c;使用下面linux命令去掉秘鑰&#xff1a; pdftk 納稅記錄.pdf input_pw 261021 output 納稅記錄_output.pdf將多個單頁pdf合并為一個pdf的linux命令: pdftk 自然人電子稅務局1.pdf 自然人電子稅務局2.pdf 自然人電子稅務局3.pdf 自然人…

Openlayers:海量圖形渲染之WebGL渲染

最近由于在工作中涉及到了海量圖形渲染的問題&#xff0c;因此我開始研究相關的解決方案。我在網絡上尋找相關的解決方案時發現許多的文章都提到利用Openlayers中的WebGLPointsLayer類&#xff0c;可以實現渲染海量的點&#xff0c;之后我又了解到利用WebGLVectorLayer類可以渲…

替換jeecg圖標

替換jeecg圖標 ant-design-vue-jeecg/src/components/tools/Logo.vue <!-- <img v-else src"~/assets/logo.svg" alt"logo">-->

Codeforces Round 970 (Div. 3)題解

題目地址 https://codeforces.com/contest/2008 銳評 本次D3的前四題還是比較簡單的&#xff0c;沒啥難度區分&#xff0c;基本上差不多&#xff0c;屬于手速題。E的碼量比F大一些&#xff0c;實現略顯復雜一些。G的數學思維較明顯&#xff0c;如果很久沒有訓練這個知識點&a…

操作系統:線程間同步之事件集

事件集是線程間同步的機制之一&#xff0c;一個事件集可以包含多個事件&#xff0c;利用事件集可以完成一對多、多對多的線程間同步。 目錄 一、事件集舉例說明 二、事件集工作機制 三、RT-Thread為實例說明 四、事件集的應用場合 一、事件集舉例說明 以坐公交車為例&…

基于springboot鉆孔數據管理系統的設計與實現(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 本鉆孔數據管理系統采用B/S架構&#xff0c;數據庫是MySQL&#xff0c;網站的搭建與開發采用了先進的Java語言、Hadoop、數據可視化技術進行編寫&#xff0c;使用了Spring Boot框架。該系統從兩個對象&#xff1a;由管理員和用戶來對系統進行設計構建。用戶主要功能包括&…

全雙工分軌語音數據集:讓AI實現無縫對話

清晨&#xff0c;智能音箱根據指令-播放音樂&#xff1b;駕駛途中&#xff0c;車載助手同步處理導航與來電&#xff1b;智能會議工具無縫切換多語種對話……語音交互技術正快速融入生活。然而&#xff0c;用戶對于對話體驗追求更自然、更流暢&#xff0c;實時理解&#xff0c;動…

Python 網絡請求利器:requests 包詳解與實戰

諸神緘默不語-個人技術博文與視頻目錄 文章目錄 一、前言二、安裝方式三、基本使用1. 發起 GET 請求2. 發起 POST 請求 四、requests請求調用常用參數1. URL2. 數據data3. 請求頭 headers4. 參數 params5. 超時時間 timeout6. 文件上傳 file&#xff1a;上傳純文本文件流7. jso…

linux入門四:Linux 編譯器

一、C 語言編譯器 GCC&#xff1a;開啟編程之旅 1.1 GCC 安裝&#xff1a;一站式工具鏈 GCC&#xff08;GNU Compiler Collection&#xff09;是 Linux 下最常用的 C/C 編譯器&#xff0c;支持多種編程語言。安裝命令&#xff08;適用于 Debian/Ubuntu 系統&#xff09;&…

建筑兔零基礎自學記錄69|爬蟲Requests-2

Requests庫初步嘗試 #導入requests庫 import requests #requests.get讀取百度網頁 rrequests.get(http://www.baidu.com) #輸出讀取網頁狀態 print(r.status_code) #輸出網頁源代碼 print(r.text) HTTP 狀態碼是三位數字&#xff0c;用于表示 HTTP 請求的結果。常見的狀態碼有…