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

LangChain提示词模版 PromptTemplate

0 什么是PromptTemplate

Prompt Template 是LangChain中的一个概念,接收用户输入,返回一个传递给LLM的信息(即提示词prompt)。

在应用开发中,固定的提示词限制了模型的灵活性和适用范围。所以,prompt template 是一个 模板化 的字符串 ,你可以将
变量插入到模板 中,从而创建出不同的提示。调用时:

  • 以 字典 作为输入,其中每个键代表要填充的提示模板中的变量。
  • 输出一个 PromptValue 。这个 PromptValue 可以传递给 LLM 或 ChatModel,并且还可以转换 为字符串或消息列表。

简单地说就是一个通过输入参数快速构造提示词模版的构造方法

1 构造PromptTemplate的两种方式

构造提示词模板有两种方式,一个是直接使用PromptTemplate构造方法,另一个是通过其from_template()方法来生成

1.1 PromptTemplate构造方法

1.1.1 主要参数介绍
  • template:定义提示词模板的字符串,其中包含 文本 和 变量占位符(如{name}) ;
  • input_variables: 列表,指定了模板中使用的变量名称,在调用模板时被替换;
  • partial_variables:字典,用于定义模板中一些固定的变量名。这些值不需要再每次调用时被替换。
1.1.2 示例代码
import os
import dotenv
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAIdotenv.load_dotenv()os.environ["OPENAI_BASE_URL"] = os.getenv("QWEN_BASE_URL")
os.environ["OPENAI_API_KEY"] = os.getenv("QWEN_API_KEY")# 获取对话模型
chat_model = ChatOpenAI(model="qwen-plus",streaming=True
)template = PromptTemplate(template="说一个关于{topic}的笑话,不超过{max_len}字",input_variables=["topic"],partial_variables={"max_len": 100},
)prompt = template.format(topic="猪")
# 调用模型
response = chat_model.stream(prompt)print("提示词:", prompt)
# 流式输出
for chunk in response:print(chunk.content, end='', flush=True)
1.1.3 效果

请添加图片描述

1.2 调用from_template()

1.2.1 总结理解

相比使用PromptTemplate构造函数的方式,该方式无需在构造方法中填写input_variables和partial_variables,只需填写模版字符串,对于初始化部分参数可以通过partial()方法实现,注意,该方法也可以在使用PromptTemplate构造函数的方式中使用

1.2.2 示例代码
import os
import dotenv
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAIdotenv.load_dotenv()os.environ["OPENAI_BASE_URL"] = os.getenv("QWEN_BASE_URL")
os.environ["OPENAI_API_KEY"] = os.getenv("QWEN_API_KEY")# 获取对话模型
chat_model = ChatOpenAI(model="qwen-plus",streaming=True
)template = PromptTemplate.from_template("说一个关于{topic}的笑话,不超过{max_len}字").partial(max_len="100")prompt = template.format(topic="牛")
# 调用模型
response = chat_model.stream(prompt)print("提示词:", prompt)
# 流式输出
for chunk in response:print(chunk.content, end='', flush=True)
1.2.3 效果

请添加图片描述

2 format()调用和invoke()调用

2.1 format()和invoke()的使用规则

  • 只要对象是RunnableSerializable接口类型,都可以使用invoke(),替换前面使用format()的调用方式。
  • format(),返回值为字符串类型;
  • invoke(),返回值为PromptValue类型,接着调用to_string()返回字 符串。

总结一下就是format参数使用a="xx"的形式,invoke使用json形式传值

2.2 示例代码

import os
import dotenv
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAIdotenv.load_dotenv()os.environ["OPENAI_BASE_URL"] = os.getenv("QWEN_BASE_URL")
os.environ["OPENAI_API_KEY"] = os.getenv("QWEN_API_KEY")# 获取对话模型
chat_model = ChatOpenAI(model="qwen-plus",streaming=True
)template = PromptTemplate.from_template("说一个关于{topic}的笑话,不超过{max_len}字").partial(max_len="100")prompt = template.invoke({"topic": '鸡'})
# 调用模型
response = chat_model.stream(prompt)print("提示词:", prompt)
# 流式输出
for chunk in response:print(chunk.content, end='', flush=True)

2.3 效果

请添加图片描述

http://www.dtcms.com/a/585311.html

相关文章:

  • 做国外购物的网站怎么发货网站建设中期怎么入账
  • 【安全开发】Nuclei源码分析-模板引擎实现(五)
  • 【小技巧】PyCharm建立项目,VScode+CodeX+WindowsPowerShell开发Python pyQT6 (二)
  • 办个人网站租空间餐饮网站建设的模板
  • 国家开发投资集团有限公司广州新站优化
  • MySQL数据类型详解
  • Rust 练习册 :Rail Fence Cipher与栅栏密码
  • 织梦dedecms绿色led照明公司企业网站模板 下载网站如何免费推广
  • 【Svelte】动态加载组件并传递参数的正确姿势,及两种方式比较
  • 【ZeroRange WebRTC】Amazon Kinesis Video Streams C WebRTC SDK 详解与实践指南
  • openEuler边缘计算实践:构建高效边云协同架构
  • 自建国外购物网站公司网站开发外包公司
  • Linux内存管理揭秘:页表递归清理与TLB优化机制
  • 从“医疗大模型”向“医疗智能体”架构与路径分析(白皮书草案-下)
  • Webpack性能优化终极指南:4步实现闪电打包
  • 零基础学JAVA--Day26(枚举类)
  • Kafka概述
  • CTFHub Web进阶-PHP:Bypass_disable_function通关8之PHP FFI
  • 重庆本地网站有哪些world做网站怎么做连接
  • 【028】Dubbo3从0到1系列之序列化机制
  • phpcms模板资源网站快速优化排名
  • 0 基础学前端:100 天拿 offer 实战课(第 18 天)—— JS 事件进阶:冒泡、委托与自定义事件,搞定复杂交互
  • 【C++】STL小总结
  • go基础语法练习
  • 360任意看地图网站网站开发设计需要什么证书
  • 大数据Spark(七十二):Transformation转换算子repartition和coalesce使用案例
  • Android 16 Kotlin协程 第二部分
  • 网站建设公司兴田德润电话新县城乡规划建设局网站
  • Claude Code使用指南
  • 如何进行MSSQL提权?默认库,xp_cmdshell提权