news 2026/10/15 4:27:09

ChatPromptTemplate的两种实例化方式和三种调用方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ChatPromptTemplate的两种实例化方式和三种调用方式

提示词模板(Prompt Templates)

为什么推荐提示词模板?

在LangChain开发中,构造提示词既可以直接使用Python字符串拼接(如f-string、format()或+),也可以使用LangChain提供的PromptTemplate或ChatPromptTemplate。

举例1:字符串拼接方式

# 字符串拼接topic="python"difficulty="初学者"# 难以维护,容易出错prompt_str=f"你是一个{difficulty}级别的编程导师。请用简单的语言解释{topic}"response=model.invoke(prompt_str)print(response)

举例2:提示词模板

from dotenvimportload_dotenv from langchain.chat_modelsimportinit_chat_model from langchain_core.promptsimportPromptTemplate topic="Python"difficulty="初学者"template=PromptTemplate.from_template(f"你是一个{difficulty}级别的编程导师,请用简单的语言解释{topic}")# 使用模板生成提示词prompt=template.format(difficulty=difficulty ,topic=topic)load_dotenv(override=True)model=init_chat_model(model="deepseek:deepseek-v4-flash")response=model.invoke(prompt)print(f"AI 回复:{response.content}")
from langchain_core.promptsimportChatPromptTemplate prompt_template=ChatPromptTemplate([("system","你是一个AI开发工程师,你的名字是{name}"),("human","{user_input}")])# 调用format()方法,返回字符串prompt=prompt_template.invoke({"name":"小智AI","user_input":"你能帮我做什么"})print(type(prompt))print(f"AI 回复:{prompt}")response=model.invoke(prompt)print(response.content)

ChatPromptTemplate的使用

在LangChain1.0中,ChatPromptTemplate是用于生成消息列表的核心组件

ChatPromptTemplate是创建聊天消息列表的提示模板。它比普通PromptTemplate更适合处理多角色、多轮次的对话场景。支持System/Human/AI等不同角色的消息模板。

消息类型:

角色字符串含义用途
“system”系统消息设定AI的行为、角色、规则
“user”/“human”用户消息用户的输入/问题
“assistant”/“ai”AI消息AI的回复(用于对话历史)

两种实例化方式

ChatPromptTemplate可以通过初始化方法或from_messages方法来实例化提示词模板。实例化时需要传入messages参数。常见类型是:tuple构成的列表,参数类型(role:str,content:str)

方式1(推荐):调用from_messages()

该方法允许传入一个由元组(Tuple)构成的列表,列表中的每一个元组都代表一条具有特定角色的消息

chat_prompt_template=ChatPromptTemplate.from_messages([("system","你是一个友好的AI助手,你的名字叫{name}"),("human","你好,最近如何"),("ai","我很好,谢谢"),("human","{user_input}")])print(type(chat_prompt_template))result=chat_prompt_template.invoke({"name":"小智","user_input":"1 + 1 = ?"})response=model.invoke(result)print(response.content)
方式2:使用实例初始化方法
chat_prompt_template=ChatPromptTemplate([("system","你是一个友好的AI助手,你的名字叫{name}"),("human","你好,最近如何"),("ai","我很好,谢谢"),("human","{user_input}")])print(type(chat_prompt_template))result=chat_prompt_template.invoke({"name":"小智","user_input":"1 + 1 = ?"})response=model.invoke(result)print(response.content)

模板调用的三种方式

使用invoke()

返回ChatPromptValue

使用format()

返回值是字符串

使用format_messages()

返回值是list

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 4:27:05

EtherCAT Linux主站IGH完全解析:架构、编译与调试实战

简介:面向EtherCAT实时运动控制开发者,这套资料以Linux下开源主站IgH程序讲解为主线,结合汇川SV630N伺服电机和六自由度机械臂,梳理从主站配置、从站通信到伺服同步控制的完整流程。压缩包内含一篇英文学术论文,系统介…

作者头像 李华
网站建设 2026/10/15 4:26:57

智能工厂总体设计方案怎么落地?从四层架构到实施避坑指南

每次有人丢给我一份《智能工厂总体设计方案(111页PPT)》之类的文档,我的第一反应不是急着去看架构图,而是先问一句:你下载完打算怎么用?这句话听起来有点扫兴,但做过几轮智能工厂规划和落地的人…

作者头像 李华
网站建设 2026/10/15 4:26:55

Python气象海洋数据流水线:从插值、EOF到风速预测

年初有个朋友把一份需求表发给我:两个测风塔两年逐十分钟风速、一个区域模式输出、加上一套再分析数据集,要算场区年均风功率密度、主导变化模态和未来3天逐小时风速预测。我对着这份需求想了一晚上,第二天回复他说:这活儿不是某个…

作者头像 李华
网站建设 2026/10/15 4:26:47

NB-IoT模块原理图设计:从电源到射频的五大关键点

简介:一份NB-IoT模块原理图PDF,面向物联网硬件开发者、嵌入式工程师及电子设计初学者,用于理解NB-IoT通信模块的硬件构成与信号连接方式。原理图覆盖电源管理(VDD_3.3V、VDD_EXT、SIM_VDD)、晶振时钟、SPI/UART串行接口…

作者头像 李华
网站建设 2026/10/15 4:26:47

Spring Boot+Vue个人博客系统:前后端分离开发全流程实战

我见过太多人做个人博客,要么用WordPress套个主题草草了事,要么拿起Hexo写两篇就吃灰。真正想练手、想掌握前后端分离开发全流程的人,最后还是绕不开Spring Boot加Vue这套组合。手头这套博客系统,就是我当时从零搭起来、后来反复重…

作者头像 李华
网站建设 2026/10/15 4:26:25

Spring Boot宠物医院管理系统实战:从数据库设计到前后端部署

最近抽空把一个萌宠宠物医院系统从零完整做了一遍,从需求梳理、数据库设计、后端接口到前端上线的过程中,我发现宠物医院的管理和普通门诊完全不是一回事。宠物没有医保、没有统一身份证,还可能频繁更换主人,一只猫狗名下可以挂好…

作者头像 李华