当前位置: 首页 > ds >正文

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.xdnf.cn/news/20338.html

相关文章:

  • 深度学习:Dropout 技术
  • c++ 第三方库与个人封装库
  • 【完整源码+数据集+部署教程】西兰花实例分割系统源码和数据集:改进yolo11-AggregatedAtt
  • leetcode 6 Z字形变化
  • 基于YOLOv8的车辆轨迹识别与目标检测研究分析软件源代码+详细文档
  • 整理了几道前端面试题
  • 字符串格式化——`vsnprintf`函数
  • 图像处理:实现多图点重叠效果
  • More Effective C++ 条款29:引用计数
  • 【完整源码+数据集+部署教程】骰子点数识别图像实例分割系统源码和数据集:改进yolo11-DCNV2
  • 【知识点讲解】模型扩展法则(Scaling Law)与计算最优模型全面解析:从入门到前沿
  • 深入了解synchronized
  • 2025世界职校技能大赛总决赛争夺赛汽车制造与维修赛道比赛资讯
  • 告别Qt Slider!用纯C++打造更轻量的TpSlider组件
  • 一文了解太阳光模拟器的汽车材料老化测试及标准解析
  • 企业级 AI Agent 开发指南:基于函数计算 FC Sandbox 方案实现类 Chat Coding AI Agent
  • 集成学习 | MATLAB基于CNN-LSTM-Adaboost多输入单输出回归预测
  • 调试技巧:Chrome DevTools 与 Node.js Inspector
  • 从零开始学大模型之大模型训练流程实践
  • Multisim14.0(五)仿真设计
  • OpenResty 和 Nginx 到底有啥区别?你真的了解吗!
  • 分布式3PC理论
  • Qt---字节数据处理QByteArray
  • 【FastDDS】Layer Transport ( 02-Transport API )
  • k8s基础练习环境搭建
  • 服务器硬盘“Unconfigured Bad“状态解决方案
  • WebSocket:实现实时通信的革命性技术
  • Iwip驱动8211FS项目——MPSOC实战1
  • 当服务器出现网卡故障时如何检测网卡硬件故障并解决?
  • Grizzly_高性能 Java 网络应用框架深度解析