04.AI应用搭建--langchain框架提示词模版
本文介绍了LangChain框架中提示词模板PromptTemplate和ChatPromptTemplate的使用方法。PromptTemplate通过占位符将用户输入嵌入固定模板,实现提示词动态生成;ChatPromptTemplate则能设定AI角色,使相同输入产生不同输出。文章通过代码示例展示了两种模板的实际应用,对比了它们的输出效果。总结指出PromptTemplate适用于简单提示词重
文章目录
前言
提示:本文适用于新手观看,快速上手langchain:
本文主要介绍通过提示词模版,如何接收输入,并组装提示词
一、概念同步
一个应用的通俗概念: 一个应用与用户的交互,就是接收用户的信息输入,交由应用处理后,返回结果给客户展示
上篇文章03.AI应用搭建–初识langchain框架中,我们将AI、用户的对话文本固定后,交由大模型进行输出。
这种固定输入的方法明显无法服务实际业务场景,故本文引入提示词模版解决这个问题
二、认识提示词模版PromptTemplate、ChatPromptTemplate
1.PromptTemplate介绍
PromptTemplate主要用于创建具有占位符的提示词,将用户输入放入占位符即可生成最终要用的提示词。
举个列子:
prompt_promptTemplate = PromptTemplate(
# 声明模板中使用的变量
input_variables=["xingge"],
# 模板字符串。若模版内有多个占位变量,则input_variables也需要添加多个变量,如:["xingge","年龄"]
template="我是一个{xingge}的人,生成一段100字内的夸奖文本。"
)
该例子中:
template:为模版内容
input_variables:为输入变量列表。其中的值需要确保与template中的占位变量的名称一致
2.ChatPromptTemplate的介绍
ChatPromptTemplate主要用于创建具有角色的占位符的提示词,除了重构用户的提示词,还能对ai添加设定,让其输出不同内容。
举个列子:
prompt_chatPromptTemplate = ChatPromptTemplate.from_messages([
('system', '你是一个问答机器人,会生产与用户提问{shezhi}的答案'),
('human', '我是一个很{xingge}的人,请对夸奖我,要求使用3个以上的成语')
])
该例子中:
system、human:分别代表AI和用户。使用ai、user也行但是为了避开python的关键字,所以一般这么写
shezhi、xingge:为需要用户输入的变量列表。分别接收不同的内容
三、PromptTemplate、ChatPromptTemplate的使用
请提前导入PromptTemplate 国内镜像地址:
pip3 install langchain_core -i https://pypi.tuna.tsinghua.edu.cn/simple
1.代码:
import os
# 引入chatopenai,用于使用外部大模型(如deepseek、通义千问模型)
from langchain_openai import ChatOpenAI
# 引用PromptTemplate进行提示词模版化(本质上就是:将用户输入的值填入模版中对应的占位符,形成完成的提示词)
from langchain_core .prompts import PromptTemplate,ChatPromptTemplate
#大模型的api key、模型、base_url
MODULE_API_KEY=os.getenv("DASHSCOPE_API_KEY")
MODULE_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
MODULE_NAME="qwen-plus"
#1、使用PromptTemplate创建个模版
template= '我是一个很{xingge}的人,请对我进行夸奖,要求使用3个以上的成语'
#使用PromptTemplate创建个模版
prompts=PromptTemplate(input_variables=['xingge'],template=template)
print(prompts.format(xingge='开朗'))
#使用ChatPromptTemplate创建个模版
messages2 = [
('system', '你是一个问答机器人,会生产与用户提问{shezhi}的答案'),
('human', '我是一个很{xingge}的人,请对夸奖我,要求使用3个以上的成语')
]
prompts2 = ChatPromptTemplate.from_messages(messages2)
try:
# 引入ChatOpenAI,链接外部大模型。我这里用的qwen-plus
client = ChatOpenAI(api_key=MODULE_API_KEY,model=MODULE_NAME,base_url=MODULE_BASE_URL)
# invoke 调用大模型能力,返回提问结果
res_msg = client.invoke(prompts.format(xingge='开朗'))
res_msg2 = client.invoke(prompts2.format_messages(shezhi='相同',xingge='开朗'))
res_msg3 = client.invoke(prompts2.format_messages(shezhi='相反',xingge='开朗'))
# 大模型返回的结果有很多内容,可自选要用的内容
print(res_msg.content)
print(res_msg2.content)
print(res_msg3.content)
except Exception as e:
print(f"错误信息:{e}")
print("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code")
2.运行结果:

三种结果。可以看到使用ChatPromptTemplate对ai进行回答设置后,用户相同的提问,确生成了相反的结果
总结
这里对文章进行总结:
1、目前主流使用的就是PromptTemplate、ChatPromptTemplate这两个模版,其他模版有兴趣的可以自行去了解下
2、PromptTemplate适用于直接对用户输入内容进行重新组装(或者叫增强)
3、ChatPromptTemplate适用于需要对ai进行增强和设定的场景
最后,提示词模版就一句话:接收用户输入,并进行增强,形成最终的提示词内容
更多推荐



所有评论(0)