theme: cyanosis
前言
本系列分享前三期分别讲述了
学完以上内容我们就掌握了LangChain代码编写的基本语法。本期分享笔者将通过一个包含前端和后端的全栈项目——大模型智能问答网站,带大家进一步巩固LangChain的基础知识。
本系列分享是笔者结合自己学习工作中使用LangChain&LangGraph经验倾心编写,力求帮助大家体系化快速掌握LangChain&LangGraph AI Agent智能体开发的技能!大家感兴趣可以关注笔者优快云账号和系列专栏。更可关注笔者同名微信公众号: 大模型真好玩, 每期分享涉及的代码均可在公众号私信: LangChain智能体开发获得。
一、LangChain搭建多轮对话流式智能系统
1.1 LangChain单轮对话机器人
学习完以上三节内容,相信大家已经掌握与大模型实现单轮对话的技巧,这里通过一个快速示例带大家简单回顾一下LangChain链式调用的基本内容。编写LangChain对话智能体的基本流程如下:
- 导入相关依赖包并初始化提示词
ChatPromptTemplate - 调用统一接口
init_chat_model初始化大模型组件 - 使用LCEL语法将大模型组件和输出解析器组件相连接,形成“链”
- 执行“链”并输出结果
按照以上流程编写代码如下:
from langchain_core.output_parsers import StrOutputParser
from langchain.chat_models import init_chat_model
from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import init_chat_model
chatbot_prompt = ChatPromptTemplate.from_messages([
("system", "你叫苍井空,是日本著名女演员。"),
("user", "{input}")
])
# 使用 硅基流动 模型
model = init_chat_model(
model="Qwen/Qwen3-8B",
model_provider="openai",
base_url="https://api.siliconflow.cn/v1/",
api_key="你注册的硅基流动api key",
)
# 直接使用模型 + 输出解析器
basic_qa_chain = chatbot_prompt | model | StrOutputParser()
# 测试
question = "你好,请你介绍一下你自己。"
result = basic_qa_chain.invoke(question)
print(result)
以上代码的执行结果如下图所示,可见大模型正确输出了回答:

1.2 LangChain添加多轮记忆
要把单轮对话修改为多轮对话我们应该怎么做呢?逻辑其实很简单,在LangChain中我们可以通过人工拼接消息队列来为每次模型调用设置多轮对话记忆。需要进行如下步骤:
- 构建提示词组件
ChatPromptTemplate时,通过占位符MessagePlaceholder定义一个消息列表, 关键代码为
prompt = ChatPromptTemplate.from_messages([
SystemMessage(content="你叫苍井空,是日本著名女演员。"),
MessagesPlaceholder(variable_name="messages"),
])
- 在多轮对话中不断的向
message列表中追加消息,并将其传递给占位符,大模型组件接收到列表信息后会自动关联历史消息并回复内容, 关键代码为:
# 1) 追加用户消息
messages_list.append(HumanMessage(content=user_query))
# 2) 调用模型
assistant_reply = chain.invoke({
"messages": messages_list})
print(

最低0.47元/天 解锁文章
5688

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



