深入浅出LangChain AI Agent智能体开发教程(四)—LangChain记忆存储与多轮对话机器人搭建
本期分享笔者将通过一个包含前端和后端的全栈项目——大模型智能问答网站,带大家进一步巩固LangChain的基础知识。
前言
学完以上内容我们就掌握了LangChain代码编写的基本语法。本期分享笔者将通过一个包含前端和后端的全栈项目——大模型智能问答网站,带大家进一步巩固LangChain的基础知识。
一、LangChain搭建多轮对话流式智能系统
1.1 LangChain单轮对话机器人
学习完以上三节内容,相信大家已经掌握与大模型实现单轮对话的技巧,这里通过一个快速示例带大家简单回顾一下LangChain链式调用的基本内容。编写LangChain对话智能体的基本流程如下:
- 导入相关依赖包并初始化提示词
ChatPromptTemplate
- 调用统一接口
init_chat_model
初始化大模型组件 - 使用LCEL语法将大模型组件和输出解析器组件相连接,形成“链”
- 执行“链”并输出结果
按照以上流程编写代码如下:
from langchain_core.output_parsers import StrOutputParser
以上代码的执行结果如下图所示,可见大模型正确输出了回答:
1.2 LangChain添加多轮记忆
要把单轮对话修改为多轮对话我们应该怎么做呢?逻辑其实很简单,在LangChain中我们可以通过人工拼接消息队列来为每次模型调用设置多轮对话记忆。需要进行如下步骤:
- 构建提示词组件
ChatPromptTemplate
时,通过占位符MessagePlaceholder
定义一个消息列表, 关键代码为:
prompt = ChatPromptTemplate.from_messages([
- 在多轮对话中不断的向
message
列表中追加消息,并将其传递给占位符,大模型组件接收到列表信息后会自动关联历史消息并回复内容, 关键代码为:
# 1) 追加用户消息
完整的多轮对话代码如下:
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage
执行结果如下:
1.3 流式打印
当前的多轮聊天大模型存在一个严重问题,大模型每次只有获得聊天的全部内容才会输出到屏幕上,这样用户输入问题后会感觉大模型反应很慢。我们平常使用的网站包括DeepSeek
, Qwen Chat
, 豆包
等都是大模型一旦有字立马输出,用户看到的是模型边回答边思考的效果,体验更好!
那么在LangChain中如何实现这个效果呢?其实也很简单,LangChain提供了一个stream
方法,可以实现流式输出,大家只需要在调用模型回答时将invoke
方法替换为stream
即可。stream()
是同步方法,使用for
循环接受返回的chunk
块。如果异步调用,需要使用astream()
,然后使用async for
异步for循环获取模型输出。
修改上述多轮代码中的指定部分如下:
# 2) 调用模型
实现效果如下:
二、全栈智能聊天机器人项目搭建
上述代码我们学习了如何构建多轮对话的大模型应用以及如何实现流式输出。对于我们来说在命令行输入输出还是太抽象了,下面我们就一起来编写一个支持在网页上进行交互的问答机器人。
本项目前端使用gradio
构建,gradio是一个开源的Python库,旨在快速构建机器学习模型的交互式网页界面。它允许用户通过简单的几行代码创建可视化的机器学习模型演示项目。在我们的anaconda虚拟环境langchainenv
中执行命令pip install gradio==5.23.0
安装gradio依赖包:
关于gradio
的使用方法笔者这里不会展开讲解,大家可以看gradio官方文档,笔者也推荐B站视频 https://www.bilibili.com/video/BV1TK66YYEvJ/?spm_id_from=333.1387.upload.video_card.click&vd_source=a6085a5a7095d4f45688516622c0911c 快速学习。
全栈智能聊天机器人的核心原理就是上面分享的多轮对话实例,在上述对话实例中加入相应的前端代码即可完成项目搭建,完整的项目代码如下:
import gradio as gr
以上代码如下要点向大家解释说明:
- 通过
gr.State()
对象储存我们的对话列表状态,同时在事件绑定中将State
对象作为输入和输出。如submit.click(respond, [msg, chatbot, state], [msg, chatbot, state])
函数,将发送消息按钮与respond
函数绑定,[msg, chatbot,state]
与respond
函数的输入参数绑定,respond
函数的返回值给下一状态[msg, chatbot,state]
赋值。msg
绑定了用户输入消息栏的内容,chatbot
绑定了对话栏内容。 - 流式响应函数支持
async
流式输出, 使用async for
循环来获取模型astream
的异步输出即可。同时这里使用yield
生成器实时反馈到前端。
上述代码的执行效果如下,可以看到我们已经可以和聊天机器人进行多轮对话:
三、 总结
本期分享首先回顾了LangChain的基本概念、接入大模型和构造链的方法,然后学习了LangChain多轮对话记忆的编写原理,最后通过gradio和多轮对话打造了具备前后端功能的智能机器人。学习完本期分享,大家就掌握了LangChain的基本使用方法了。
不过大模型的能力就是陪你聊聊天,说说话? 自然不是,现在的大模型已经是具备Function Calling
函数调用能力,MCP
工具接入能力的大聪明了,能够利用外界的函数和工具拓展自己的能力边界,真正成为人类的小助手。在LangChain中我们如何让大模型调用外界的函数和工具呢?我们下期内容接着分享,大家拭目以待。
大模型算是目前当之无愧最火的一个方向了,算是新时代的风口!有小伙伴觉得,作为新领域、新方向
人才需求必然相当大,与之相应的人才缺乏、人才竞争自然也会更少,那转行去做大模型是不是一个更好的选择呢?是不是更好就业
呢?是不是就暂时能抵抗35岁中年危机呢?
答案当然是这样,大模型必然是新风口!
那如何学习大模型 ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。但是具体到个人,只能说是:
最先掌握AI的人,将会比较晚掌握AI的人有竞争优势。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
但现在很多想入行大模型的人苦于现在网上的大模型老课程老教材
,学也不是不学也不是,基于此我用做产品的心态来打磨这份大模型教程
,深挖痛点并持续修改了近100余次
后,终于把整个AI大模型的学习路线完善出来!
在这个版本当中:
您只需要听我讲,跟着我做即可,为了让学习的道路变得更简单,这份大模型路线+学习教程已经给大家整理并打包分享出来
, 😝有需要的小伙伴,可以 扫描下方二维码领取
🆓↓↓↓
一、大模型经典书籍(免费分享)
AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。
二、640套大模型报告(免费分享)
这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
三、大模型系列视频教程(免费分享)
四、2025最新大模型学习路线(免费分享)
我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。
L1阶段:启航篇丨极速破界AI新时代
L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。
L2阶段:攻坚篇丨RAG开发实战工坊
L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。
L3阶段:跃迁篇丨Agent智能体架构设计
L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。
L4阶段:精进篇丨模型微调与私有化部署
L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。
L5阶段:专题集丨特训篇 【录播课】
全套的AI大模型学习资源
已经整理打包,有需要的小伙伴可以微信扫描下方二维码
,免费领取
更多推荐
所有评论(0)