本文介绍LangChain的另一个重要组件——提示词模板(Prompt Template)组件,它主要用于将用户输入和参数转换为语言模型可理解的指令。有助于引导模型生成符合预期的响应,帮助其更好地理解上下文,从而输出相关且连贯的语言结果。提示词模板的输入是一个字典,其中每个键对应模板中需要填充的变量名。输出是一个 PromptValue 对象。该对象可以直接传递给语言模型(LLM)或聊天模型(ChatModel),也可以转换为字符串或消息列表。引入 PromptValue 的目的是为了在字符串格式和消息格式之间灵活切换,提升使用的便捷性。
简单介绍过后我们就可以开始学习两个重要的prompt类了,LangChain Prompt一共有四个类,但我觉得先学会两个重要的再说。
提示词模版 | 功能描述 |
---|---|
PromptTemplate | 定义基础提示词模板,支持变量替换 |
FewShotPromptTemplate | 支持注入少量示例(few-shot learning)以引导模型输出 |
PipelinePromptTemplate | 支持将多个 Prompt 模板组合串联使用 |
ChatPromptTemplate | 针对 ChatModel 设计的消息格式封装,适用于对话模型 |
(1)基础提示词模板
基础提示词模板定义一个带变量的模板,你要替换的变量用 {{ }} 包裹住就行。
from langchain.prompts import PromptTemplatetemplate = "请回答以下问题:{question}"
prompt = PromptTemplate.from_template(template)# 使用
print(prompt.format(question="什么是人工智能?"))
# 输出是“请回答以下问题:什么是人工智能?”
(2)对话提示词模板
对话提示词模板用于构造符合聊天模型格式的消息结构,之前的版本是用SystemMessage, HumanMessage类来构建的,现在可以用更简单的方式,使用元组并且第一个元素放上“对话角色”就可以了。
from langchain.prompts import ChatPromptTemplateprompt = ChatPromptTemplate.from_messages([("system", "你是一个知识丰富的助手。"),("human", "请介绍:{topic}")
])# 使用
messages = prompt.format(topic="深度学习")
print(messages)