LangChain關于提示詞的幾種寫法

上文中 <---->(可點擊移步查閱),我們已經了解到LangChain如何編寫調用大模型的一個基本框架,
在編寫完這個基本框架后,就要與大模型進行交互了,這時候,就需要我們編寫提示詞了,
那么以下,就會介紹提示詞的幾種編寫方式

1 可攜帶變量的提示詞

1.1 PromptTemplate

1.1.1 以構造方法的形式創建

創建步驟如下:【1】導包【2】構建變量提示詞模板【2.1】創建PromptTemplate實例【2.2】PromptTemplate構造函數中傳遞兩個參數【2.2.1】template:定義攜帶變量的<提示詞模板字符串>【2.2.2】input_variables:以列表形式指定<提示詞模板字符串>中哪些是變量【3】通過實例調用方法組成真正的提示詞【3.1】format(變量名1=值1, 變量名2=值2, ...)【3.2】invoke({"變量名1":"值1","變量名2":"值2","變量名3":"值3", ...})以上兩個方法任選其一,作用是會將提示詞模板中的變量替換成真正的值,返回PromptValue 對象

示例代碼如下:

# 調用format()# 導包
from langchain.prompts import PromptTemplate#定義多變量模板。
template = PromptTemplate(template="請評價{product}的優缺點,包括{aspect1}和{aspect2}。",input_variables=["product", "aspect1", "aspect2"]
)#使用模板生成提示詞
# 說明:在調用format()函數時,一定要將所有的參數都進行賦值,才可以得到正確的字符串返回結果。否則報錯
# prompt_1 = template.format(product="智能手機", aspect1="電池續航")
prompt_1 = template.format(product="智能手機", aspect1="電池續航", aspect2="拍照質量")print("提示詞1:",prompt_1)
# 調用invoke()# 導包
from langchain.prompts import PromptTemplate#定義多變量模板。
template = PromptTemplate(template="請評價{product}的優缺點,包括{aspect1}和{aspect2}。",input_variables=["product", "aspect1", "aspect2"]
)#使用模板生成提示詞
prompt_1 = template.invoke({"product": "智能手機", "aspect1": "電池續航","aspect2": "拍照質量"
})print("提示詞1:",prompt_1)

PromptTemplate構造方法中還可以再傳入一個參數:partial_variables
示例代碼如下:

from langchain.prompts import PromptTemplatetemplate = PromptTemplate(template="請評價{product}的優缺點,包括{aspect1}和{aspect2}。",input_variables=["product", "aspect1","aspect2"],partial_variables={"aspect2":"拍照質量","aspect1":"電池續航"}
)str = template.format(product = "筆記本電腦")

1.1.2 以PromptTemplate類提供的from_template()的形式創建

創建步驟如下:【1】導包【2】構建變量提示詞模板【2.1】調用PromptTemplate類提供的from_template()【2.2】from_template()中傳遞一個參數【2.2.1】template:定義攜帶變量的<提示詞模板字符串>【3】通過實例調用方法組成真正的提示詞【3.1】format(變量名1=值1, 變量名2=值2, ...)【3.2】invoke({"變量名1":"值1","變量名2":"值2","變量名3":"值3", ...})以上兩個方法任選其一,作用是會將提示詞模板中的變量替換成真正的值,返回PromptValue 對象

示例代碼如下:

# 調用format()# 導包
from langchain.prompts import PromptTemplatetemplate = PromptTemplate.from_template(template="請評價{product}的優缺點,包括{aspect1}和{aspect2}。"
)prompt_1 = template.format(product="智能手機", aspect1="電池續航", aspect2="拍照質量")print("提示詞1:",prompt_1)
# 調用invoke()# 導包
from langchain.prompts import PromptTemplatetemplate = PromptTemplate.from_template(template="請評價{product}的優缺點,包括{aspect1}和{aspect2}。"
)prompt_1 = template.invoke({"product":"智能手機","aspect1":"電池續航","aspect2":"拍照質量"})print(prompt_1)
print(type(prompt_1))

from_template()中還可以再傳入一個參數:partial_variables
示例代碼如下:

from langchain.prompts import PromptTemplatetemplate = PromptTemplate.from_template(template="請評價{product}的優缺點,包括{aspect1}和{aspect2}。",partial_variables={"aspect2":"拍照質量","aspect1":"電池續航"}
)result = template.format(product="智能手機", )

1.1.3 結合大模型使用

定義好提示詞后,如何將其傳遞給大模型呢?
我們這里以大模型提供的invoke()為例:
其他方法的使用可點擊移步查閱

[1] 非對話大模型:

import os
import dotenv
from langchain_openai import OpenAIdotenv.load_dotenv()os.environ['OPENAI_API_KEY'] = os.getenv("OPENAI_API_KEY1")
os.environ['OPENAI_BASE_URL'] = os.getenv("OPENAI_BASE_URL")# 非對話大模型
llm = OpenAI()
template = PromptTemplate.from_template(template="請評價{product}的優缺點,包括{aspect1}和{aspect2}。"
)prompt_1 = template.invoke({"product":"智能手機","aspect1":"電池續航","aspect2":"拍照質量"})str = llm.invoke(prompt_1)  #此時的參數prompt_1是PromtValue類型
print(str)print(type(str))

[2] 對話大模型:

import os
import dotenv
from langchain_openai import ChatOpenAIdotenv.load_dotenv()os.environ['OPENAI_API_KEY'] = os.getenv("OPENAI_API_KEY1"

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

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

相關文章

CyberPoC 是一個現代化的網絡安全練習和競賽平臺,支持容器化部署的安全挑戰,為用戶提供實踐網絡安全技能的環境。

工具介紹 CyberPoC 是一個現代化的網絡安全練習和競賽平臺&#xff0c;支持容器化部署的安全挑戰&#xff0c;為用戶提供實踐網絡安全技能的環境。 &#x1f680; 快速開始 使用 Docker Compose (推薦) 克隆項目 git clone https://github.com/dushixiang/cyberpoc.gitcd cy…

【單片機day03】

UART串口通用異步收發器&#xff0c;2個串口(1個串口被用于ISP下載程序&#xff0c;1個串口被用于和主機之間的通信)全雙工&#xff08;兩根線TX、RX&#xff09;、串行、異步通信方式&#xff1a;單工&#xff1a;發送方和接收方是固定的&#xff0c;數據只能從發送方 發給 …

react16到react19更新及底層實現是什么以及區別

好問題 &#x1f44d;。React 16 → 19 的更新跨度其實涵蓋了 React 的幾個“時代級”的演進&#xff1a;從 Fiber 架構 的重寫、到 并發特性 的引入&#xff0c;再到 React Server Components 和 現代語法支持。我幫你梳理下主要更新點和底層實現的區別&#xff0c;方便你系統…

【分享】基于百度腦圖,并使用Vue二次開發的用例腦圖編輯器組件

偶然間發現了這個項目&#xff0c;分享出來。 【分享】基于百度腦圖&#xff0c;并使用Vue二次開發的用例腦圖編輯器組件1 項目地址2 項目簡介3 項目部署3.1 安裝node和npm3.2 項目下載3.3 修改npm鏡像源3.4 部署4 項目中使用1 項目地址 基于百度腦圖&#xff0c;并使用Vue二次…

Kotlin中抽象類和開放類

抽象類 (Abstract Class) 定義和特點 抽象類使用 abstract 關鍵字聲明&#xff0c;是一種不能被直接實例化的特殊類&#xff0c;主要用于被其他類繼承。 abstract class Base {open fun f() {} }abstract class Derived : Base() {override abstract fun f() // 抽象成員在類中…

TensorFlow深度學習實戰(37)——深度學習的數學原理

TensorFlow深度學習實戰&#xff08;37&#xff09;——深度學習的數學原理0. 前言1. 反向傳播歷史2. 微積分相關概念2.1 向量2.2 導數和梯度2.3 梯度下降2.4 鏈式法則2.5 常用求導公式2.6 矩陣運算3. 激活函數4. 反向傳播4.1 前向計算4.2 反向傳播5. 交叉熵及其導數6. 批量梯度…

1.1 汽車運行滾動阻力

汽車運行阻力由4部分構成&#xff1a;滾動阻力、空氣阻力、坡度阻力、加速阻力。 1).汽車在水平道路上等速行駛時&#xff0c;必須克服來自地面的滾動阻力和來自空氣的空氣阻力。 2). 當汽車在坡道上上坡行駛時&#xff0c;還必須克服重力沿坡道的分力&#xff0c;稱為坡度阻…

e203000

1&#xff09;①BIU作為核心通信樞紐&#xff0c;主要承擔兩大功能&#xff1a;一是連接處理器核內的關鍵執行單元&#xff08;包括IFU、LSU和EAI協處理器&#xff09;&#xff0c;統一管理指令和數據的內部傳輸路徑&#xff1b;二是作為"核內計算"與"核外資源&…

Infortrend普安科技IEC私有云平臺VM解決方案

Infortrend企業云&#xff08;IEC&#xff09;內置Hypervisor運行VM。功能完整、無需額外付費。在本文中&#xff0c;我們將為您詳細介紹IEC是如何支持 VM的。市場現狀與挑戰市場現狀 虛擬化市場面臨轉型&#xff0c;主流廠商&#xff08;如 VMware&#xff09;改用訂閱制…

【代碼隨想錄算法訓練營——Day6(Day5周日休息)】哈希表——242.有效的字母異位詞、349.兩個數組的交集、202.快樂數、1.兩數之和

LeetCode題目鏈接 https://leetcode.cn/problems/valid-anagram/ https://leetcode.cn/problems/intersection-of-two-arrays/ https://leetcode.cn/problems/happy-number/ https://leetcode.cn/problems/two-sum/ 題解 242.有效的字母異位詞 這道題要想到用哈希表來做。同時注…

安科瑞基站智慧運維云平臺:安全管控與節能降耗雙效賦能

功能&#xff1a;基站智慧用電云平臺通過對5G宏站和室分站點加裝交/直流智能監控設備、無線采集設備以及系統管理平臺&#xff0c;完成夜間無業務時段的下電操作&#xff0c;減少電能消耗&#xff0c;降低運營成本支出&#xff0c;以及提升通信設備供電線路狀態的實時監測保護功…

處理省市區excel數據加工成SQL

原始數據相關內容鏈接 處理excel數據加工成SQL的腳本 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Excel行政區域數據轉SQL腳本 - 支持特殊行政單位處理&#xff08;如省直轄縣級行政單位&#xff09; - 支持批量處理 """import pand…

雙碳目標下的24小時分時綜合能源系統低碳優化調度:基于 Matlab/YALMIP/CPLEX的方法與仿真

在“雙碳”戰略目標的推動下&#xff0c;綜合能源系統&#xff08;Integrated Energy System, IES&#xff09;已成為實現能源結構優化與碳排放控制的重要途徑。本文以光伏、風電、燃氣—電熱聯產&#xff08;CHP&#xff09;、燃氣鍋爐、電鍋爐、電儲能以及碳捕集&#xff08;…

TDengine 選擇函數 Last() 用戶手冊

LAST() 函數用戶手冊 函數定義 LAST(expr)功能說明 LAST() 函數統計表/超級表中某列的值最后寫入的非 NULL 值&#xff0c;即返回時間戳最大的非 NULL 值。 版本要求 最低版本: v3.0.0.0 返回值 數據類型: 同應用的字段返回內容: 時間戳最大的非 NULL 值及其對應的時間戳…

< 自用文 學習 > 用 Claude Code 做一個日歷

環境&#xff1a; OS: Windows 11 IDE&#xff1a;TREA Model: Sonnet / Qwen (免費 Token 用完) 參考&#xff1a; Claude Code Beginner Guide – Get Started in 20 Minutes (2025) by Alex Finn 油管博客 https://www.youtube.com/watch?viYiuzAsWnHU&listTLGG1L…

Gmail 數據泄露安全警報以及啟示

目前&#xff0c;大規模數據泄露和針對性釣魚攻擊持續威脅著數十億 Gmail 用戶的安全&#xff0c;受ShinyHunters、UNC6040、UNC6395等威脅組織攻擊&#xff0c;25 億 Gmail 用戶面臨極大風險&#xff1b;攻擊者已從暴力破解轉向社會工程學與混合勒索&#xff0c;而密碼復用、弱…

2024年6月GESPC++三級真題解析(含視頻)

視頻講解&#xff1a;GESP2024年6月三級C真題講解 一、單選題 第1題 解析&#xff1a; 答案C&#xff0c; 認證語言有C/C、Python、Scratch 第2題 解析&#xff1a; 答案B&#xff0c;判斷閏年口訣“ 4閏 100不閏 400再閏 ” 第3題 解析&#xff1a; 答案C&#xff…

AiPPT生成的PPT內容質量怎么樣?會不會出現邏輯混亂或數據錯誤?

作為一個每天要和 PPT 打交道的職場人&#xff0c;我用 AiPPT快一年了&#xff0c;從最初的 “試試看” 到現在的 “離不開”&#xff0c;最讓我驚喜的就是它生成的 PPT 內容質量 —— 不僅邏輯清晰、數據專業&#xff0c;還能精準貼合不同場景需求&#xff0c;完全沒遇到過邏輯…

DINOv3 新穎角度解釋

1. Gram錨定&#xff08;Gram Anchoring&#xff09;的創新視角 新穎角度&#xff1a;oriane_simeoni&#xff08;Meta AI研究人員&#xff09;在X上分享了一個關于Gram錨定的深入線程&#xff0c;強調這一技術如何解決自監督學習中長期訓練導致的特征圖退化問題。 解釋&#x…

【T2I】Discriminative Probing and Tuning for Text-to-Image Generation

paper&#xff1a;CVPR 2024 2403 https://arxiv.org/abs/2403.04321 code&#xff1a; https://github.com/LgQu/DPT-T2IAbstract 盡管文本到圖像生成&#xff08;T2I&#xff09;取得了進展&#xff0c;但先前的方法往往面臨文本 -圖像對齊問題&#xff0c;例如生成圖像中的關…