在上一期文章中,我们已经完成了 LangChain 的基本环境搭建并成功运行了一个基础示例程序。本篇将继续深入介绍LangChain 的核心模块之一 :PromptTemplate(提示词模板)。
在与大语言模型交互时,通常不会直接将用户的原始输入直接传递给大模型,而是会先进行一系列包装、组织和格式化操作。这样做的目的是:更清晰地表达用户意图,更好地利用模型能力。
这套结构化的提示词构建方式,就是 LangChain 中的 提示词模板(PromptTemplate)。对于 LLM 应用来说,好的提示词就是成功的一半。本文将深入讲解提示词模板的使用方法与技巧。
一、提示词模板分类
LangChain 提供了多种不同的提示词模板,下面介绍几种常用的提示词模板:
PromptTemplate:文本生成模型提示词模板,用字符串拼接变量生成提示词
ChatPromptTemplate:聊天模型提示词模板,适用于如 gpt-3.5-turbo、gpt-4 等聊天模型
HumanMessagePromptTemplate:人类消息提示词模板
SystemMessagePromptTemplate:系统消息提示词模板
FewShotPromptTemplate:少量示例提示词模板,自动拼接多个示例到提示词中,例:1+1=2,2+2=4,让大模型去计算5+5等于多少。
二、提示词模板用法
2.1 PromptTemplate文本提示词模板
PromptTemplate 针对文本生成模型的提示词模板,也是LangChain提供的最基础的模板,通过格式化字符串生成提示词,在执行invoke时将变量格式化到提示词模板中,示例如下:
from langchain_core.prompts import PromptTemplate
prompt = PromptTemplate.from_template("你是一个专业的律师,请你回答我提出的法律问题,并给出法律条文依据,我的问题是:{question}")
prompt_value = prompt.invoke({
"question": "婚姻法是在哪一年颁布的?"})
print(prompt_value)
执行结果:
text='你是一个专业的律师,请你回答我提出的法律问题,并给出法律条文依据,我的问题是:婚姻法是在哪一年颁布的?'
2.2 ChatPromptTemplate聊天消息提示词模板
ChatPromptTemplate 是专为聊天模型(如 gpt-3.5-turbo、gpt-4 等)设计的提示词模板,它支持构造多轮对话的消息结构,每条消息可指定角色(如系统、用户、AI)。
代码示例如下,提示词模板中包含两条消息,第一条是系统消息,无需做提示词渲染,第二条是人类消息,在执行invoke时,需要把变量question渲染进去。
from langchain_core.prompts import ChatPromptTemplate
chat_prompt = ChatPromptTemplate.from_messages([
("system", "你是一个资深的Python应用开发工程师,请认真回答我提出的Python相关的问题,并确保没有错误"),
("human", "请写一个Python程序,关于{question}")
])
print(chat_prompt.invoke({
"question": "冒泡排序"}))
执行结果:
messages=[SystemMessage(content='你是一个资深的Python应用开发工程师,请认真回答我提出的Python相关的问题'), HumanMessage(content='请写一个Python程序,关于冒泡排序')]
2.3 Prompt三个常用方法区别
上述的代码示例中,我们使用了invoke方法,除了invoke方法能够格式化提示词模板,format()和partial()方法也可以做到,以下是它们的作用:
f

最低0.47元/天 解锁文章
1577

被折叠的 条评论
为什么被折叠?



