1. 项目概述:打造具备记忆能力的AI对话系统
在构建现代AI对话系统时,如何让AI记住上下文是核心挑战之一。想象一下你和朋友聊天时,如果对方每句话都当作独立问题来回应,那对话将变得支离破碎。这正是传统PromptTemplate的局限性——它像是一个只能处理单张照片的相框,而我们需要的是能播放整个视频的放映机。
ChatPromptTemplate就是LangChain为解决这一问题提供的专业工具。与常规模板不同,它专门设计用于处理多轮对话场景,通过MessagesPlaceholder机制动态管理对话历史,使得AI能够理解"再来一首"、"像刚才那样"等需要上下文理解的指令。这种能力对于构建聊天机器人、客服系统、创作助手等需要长期记忆的应用至关重要。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心概念解析:三种Prompt模板对比
2.1 PromptTemplate:单次任务专家
PromptTemplate是最基础的模板类型,适合处理独立、一次性的任务。它的工作方式类似于填空题模板,通过占位符注入简单变量:
python复制from langchain_core.prompts import PromptTemplate
template = "将以下文本翻译成{language}: {text}"
prompt = PromptTemplate.from_template(template)
filled_prompt = prompt.format(language="法语", text="你好世界")
典型应用场景包括:
- 单次文本翻译
- 独立问题回答
- 内容摘要生成
- 关键词提取
注意:PromptTemplate只能处理字符串类型的变量,无法维护对话状态。
2.2 FewShotPromptTemplate:示例学习大师
FewShotPromptTemplate在基础模板上增加了示例学习能力,通过提供示范案例指导AI完成任务:
python复制from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate
examples = [
{"input": "高兴", "output": "笑容满面,手舞足蹈"},
{"input": "悲伤", "output": "低头垂泪,沉默不语"}
]
example_template = "情感: {input}\n表现: {output}"
example_prompt = PromptTemplate.from_template(example_template)
few_shot_prompt = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
prefix="根据示例描述情感表现",
suffix="情感: {input}\n表现:",
input_variables=["input"]
)
适用场景包括:
- 需要模仿特定风格的文本生成
- 复杂推理任务
- 格式要求严格的内容创作
- 需要示范才能理解的任务
2.3 ChatPromptTemplate:对话记忆专家
ChatPromptTemplate是专为多轮对话设计的模板系统,其核心创新在于:
- 支持多角色消息(System、Human、AI等)
- 通过MessagesPlaceholder动态管理对话历史
- 保持对话上下文的完整结构
python复制from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceho
