做一个有温度和有干货的技术分享作者 —— Qborfy
上一节学习了04篇 AI从零开始 - LangChain学习与实战(1) 基础知识,对Langchain有了基础的认知和简单应用,其中我们使用PromptTemplate
去实现一次大模型对话。
同时我们在03篇 AI从零开始 - Prompt提示语学习与应用也学习了提示语生成规范,但是在结合 LangChain中我们应该如何利用PromptTemplate
提示模板+提示语规范去降低 AI幻觉呢?
AI幻觉, 指人工智能(尤其是大语言模型)生成看似合理但实际错误、虚构或与现实不符的内容的现象。本质是模型在缺乏真实理解能力的情况下,基于统计模式生成的「自信错误」。
下面是 Langchain执行一次 LLM 调用的流程图:
1. 什么是PromptTemplate
提示词模板跟平时大家使用邮件模板、短信模板类型,本质上是一个字符串模板,模板里包含了模板参数,可以通过输入参数来生成最终的提示词。
一个提示词模板包括以下内容:
- 发送给大模型的指令
- 一个问答示例,提醒大模型用什么格式返回
- 发给大模型的问题
2. 创建提示词模板
可以使用PromptTemplate
类来创建一个提示词模板,它接收一个prompt
参数,这个参数是一个字符串,用于指定提示词模板。
1 | from langchain_core.prompts import ChatPromptTemplate |
这样子我们就可以得到一个正确的Message
了, 如上代码执行结果如下:
返回的内容如下说明:
- SystemMessage: 系统设定,设定大模型的角色
- HumanMessage: 人类消息,代表用户输入的消息
- AIMessage: 人工智能消息,代表大模型返回的消息
LangChain还抽象了其他提示语模版,具体如下:
- PromptTemplate: 普通提示词模板,返回一个字符串
- ChatPromptTemplate: 聊天消息模板,返回一个
ChatPromptTemplate
对象,可以设定大模型角色和示例
3. 上下文 MessagesPlaceHolder
MessagesPlaceHolder
主要作用在特定位置添加消息列表(等于占位符), 可以集中管理消息列表,更好聊天过程注入上下文。
1 | from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder |
4.提示词示例 FewShot
在之前03篇 AI从零开始 - Prompt提示语学习与应用中也提到过示例的重要性, 这里我们不在说示例对应大模型应用中的重要性了。
我们看看 在 LangChain中如何讲示例集 给到大模型中,其中FewShot
主要作用是给大模型提供示例,让大模型更好的理解用户输入,从而生成更符合用户预期的结果,从而降低 AI 幻觉。
这里可以理解成模型的微小型训练,让大模型能依据我们提供少量示例(有点类似小RAG知识库),从而更加更加准确的答案。
在 LangChain 创建一个示例集,如下:
1 | from langchain.prompts.few_shot import FewShotPromptTemplate |
输出结果如下:
5. 示例选择器 ExampleSelector
示例集合等同于一个知识库,在正式环境中我们不可能把完整的知识库都给到模型,因此我们需要去分析用户输入,从而选择合适的示例,LangChain 提供了ExampleSelector
类来帮助我们实现这个功能。
LangChain 提供了不同的ExampleSelector
,具体如下:
SemanticSimilarityExampleSelector
: 语义相似性示例选择, 会根据用户输入,然后通过嵌入模型计算输入与示例之间的相似性,然后使用向量数据库进行相似搜索,从示例集合中选择最相似的示例。MaxMarginalRelevanceExampleSelector
: 基于 最大边际相关性(MMR) 的示例选择器, 希望在从示例集中选择与输入 既相关又多样化 的示例, 通过平衡 相关性 与 多样性 来优化示例选择效果。
通常情况下,我们使用SemanticSimilarityExampleSelector
, 根据上面示例集合,我们根据问题去选择示例,如下:
1 | # ExapleSelector 示例筛选器 |
具体输出效果如下图:
总结
本文我们完整学习了 LangChain 中如何使用 PromptTemplate去更好的创建一个提示语模板,从而降低 大模型的自我创新性(降低AI 幻觉)。
这里总结一下整个实现过程 约等于 后续 RAG知识库训练过程,如下图所示:
参考资料
- LangChain官方文档
- LangChain中文教程
- LangChain(0.0.340)官方文档十一:Agents之Agent Types
- (哔哩哔哩视频)2025吃透LangChain大模型全套教程(LLM+RAG+OpenAI+Agent)通俗易懂,学完即就业!
声明:本文部分材料是基于DeepSeek-R1模型生成。
- 本文作者: Qborfy
- 本文链接: https://www.qborfy.com/ailearn/ai-learn05.html
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!