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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;例如生成图像中的关…