编程助手学Python--Deepseek对提示词模板PromptTemplate / ChatPromptTemplate / ChatMessagePromptTemplate 的理解
在构建基于语言模型的应用程序时,PromptTemplate
、ChatPromptTemplate
和 ChatMessagePromptTemplate
是常用的工具,用于生成和管理提示(prompts)。以下是它们的详细解释:
1. PromptTemplate
PromptTemplate
是一个用于生成文本提示的模板类。它允许你定义带有变量的模板字符串,并在运行时填充这些变量,生成最终的提示文本。
主要功能:
- 模板字符串:定义一个包含占位符的字符串模板。
- 变量填充:在运行时将占位符替换为具体的值。
示例:
from langchain.prompts import PromptTemplate
# 定义一个模板
template = "请告诉我关于{subject}的信息。"
prompt_template = PromptTemplate(input_variables=["subject"], template=template)
# 填充变量
prompt = prompt_template.format(subject="人工智能")
print(prompt)
# 输出: "请告诉我关于人工智能的信息。"
2. ChatPromptTemplate
ChatPromptTemplate
是专门用于生成聊天式提示的模板类。它允许你定义多个消息模板,并将它们组合成一个完整的聊天提示。
主要功能:
- 多消息模板:支持定义多个消息模板,每个模板可以代表不同的角色(如用户、助手等)。
- 组合消息:将多个消息模板组合成一个完整的聊天提示。
示例:
from langchain.prompts import ChatPromptTemplate, HumanMessagePromptTemplate
# 定义用户消息模板
human_template = HumanMessagePromptTemplate.from_template("请告诉我关于{subject}的信息。")
# 定义聊天提示模板
chat_prompt = ChatPromptTemplate.from_messages([human_template])
# 填充变量
prompt = chat_prompt.format_prompt(subject="人工智能").to_messages()
print(prompt)
# 输出: [HumanMessage(content='请告诉我关于人工智能的信息。')]
3. ChatMessagePromptTemplate
ChatMessagePromptTemplate
是用于生成单个聊天消息的模板类。它允许你定义消息内容和角色(如用户、助手等)。
主要功能:
- 消息角色:定义消息的发送者角色(如用户、助手等)。
- 消息内容:定义消息的内容模板。
示例:
from langchain.prompts import ChatMessagePromptTemplate
# 定义消息模板
message_template = ChatMessagePromptTemplate.from_template(role="user", template="请告诉我关于{subject}的信息。")
# 填充变量
message = message_template.format(subject="人工智能")
print(message)
# 输出: ChatMessage(role='user', content='请告诉我关于人工智能的信息。')
总结
PromptTemplate
:用于生成简单的文本提示,支持变量替换。ChatPromptTemplate
:用于生成复杂的聊天提示,支持多个消息模板的组合。ChatMessagePromptTemplate
:用于生成单个聊天消息,支持定义消息角色和内容。
这些工具在构建基于语言模型的应用程序时非常有用,尤其是在需要动态生成提示或处理多轮对话的场景中。