Python LangChain与LangGraph构建带对话记忆的AI智能体
“作为长期从事机器学习和AI算法研究的从业者,我注意到一个趋势:越来越多的开发者希望构建具备“对话记忆”的AI智能体——它能记住刚才聊过什么,进而给出连贯、合理的回复,而不是像金鱼一样每次对话都从零开始。”
成为新会员获取本项目完整教程资料
作为长期从事机器学习和AI算法研究的从业者,我注意到一个趋势:越来越多的开发者希望构建具备“对话记忆”的AI智能体——它能记住刚才聊过什么,进而给出连贯、合理的回复,而不是像金鱼一样每次对话都从零开始。这种需求在客服助手、个人知识管家、代码陪练等场景中尤为突出。本文中客户的核心诉求是:能否不依赖外部向量数据库或知识库(即不走RAG路线),仅凭大语言模型自身的推理能力和对话上下文的记忆,就搭建一个可理解、可规划、可交互的AI智能体?我们基于LangChain和LangGraph框架给出了一个模块化的技术方案。本文将从环境搭建、状态定义、工作流编排到可视化分析,逐步展示一个完整的实现路径。希望通过这篇文章,能帮助读者理解状态图驱动的工作流设计思路,并以此为基础扩展出更复杂的智能体应用。
“本项目完整教程资料”
在正式进入实现之前,我们需要先理解这两个框架各自的职责,这好比理解发动机和变速箱在汽车中的分工——它们各自解决不同层面的问题,但组合在一起才能驱动整车。LangChain 是一个面向大语言模型应用的开发框架。它的核心价值在于将LLM调用过程中常见的操作——提示词管理、链式调用(将多个操作串联为流水线)、对话记忆管理、外部工具连接(如API、数据库)——封装为可复用的模块。可以把LangChain看作连接LLM与上层业务逻辑的“万能胶水层”(行业术语:LLM编排框架)。LangGraph 则专注于解决更复杂的问题:当AI应用不是一条直线走到底,而是需要根据条件分支、循环迭代、状态流转时,LangGraph用“状态图(State Graph)”的方式来描述整个工作流。每个节点代表一个逻辑步骤(如分类、生成、优化),节点之间的边定义了数据流转方向。这种设计让复杂的工作流变得可视化和可调试——就像用流程图描述业务流程一样直观(行业术语:有状态工作流引擎)。两者的组合创造了一种“模块化搭建AI系统”的模式:LangChain负责每个节点内部的LLM交互,LangGraph负责节点间的编排。后续各节将展示这一组合的具体落地过程。
智能体之所以能“记住”对话,核心在于我们设计了一个结构化的状态对象。这里使用Python的TypedDict类型注解来明确状态中每个字段的含义和类型约束。具体而言,状态对象包含三个字段:user_query用于存储用户最新输入的问题,bot_reply保存模型生成的回复内容,chat_log则以列表形式累积全部历史对话记录,为后续轮次提供上下文。首先安装所需的核心依赖包:langchain、langgraph、langchain-openai、networkx和matplotlib。接下来需要配置OpenAI API密钥,使得LangChain能够正常发起模型调用请求,密钥应通过环境变量传入而非硬编码在代码中。
最受欢迎的见解
- Python员工数据人力流失预测:ADASYN采样CatBoost算法、LASSO特征选择与动态不平衡处理及多模型对比研究
- R分布式滞后非线性模型DLNM分析某城市空气污染与健康数据:多维度可视化优化滞后效应解读
- Python古代文物成分分析与鉴别研究:灰色关联度、岭回归、K-means聚类、决策树分析
- Python TensorFlow OpenCV的卷积神经网络CNN人脸识别系统构建与应用实践
- Python用Transformer、SARIMAX、RNN、LSTM、Prophet时间序列预测对比分析用电量、零售销售、公共安全、交通事故数据
- MATLAB贝叶斯超参数优化LSTM预测设备寿命应用——以航空发动机退化数据为例
- Python谷歌商店Google Play APP评分预测:LASSO、多元线性回归、岭回归模型对比研究
- Python+AI提示词糖尿病预测模型融合构建:伯努利朴素贝叶斯、逻辑回归、决策树、随机森林、支持向量机SVM应用
以下是定义智能体状态结构并搭建三阶段工作流的代码实现。通过TypedDict定义状态,categorize → produce_answer → polish_response 三个节点按顺序执行,形成一个完整的“接收输入→生成回复→记忆更新”闭环。
# 智能体状态定义与工作流搭建
from typing import TypedDict, List
from langgraph.graph import StateGraph, START, END
from langchain.chat_models import init_chat_model
# 定义带记忆的智能体状态结构
class AgentState(TypedDict):
user_query: str # 用户当前问题
bot_reply: str # 模型回复内容
chat_log: List[str] # 历史对话记录列表
# 初始化LLM(GPT-4.1,temperature=0.3保证稳定性)
llm = init_chat_model("gpt-4.1", temperature=0.3)
# 节点1:意图分类
def classify_intent(state: AgentState) -> AgentState:
prompt = f"请根据以下用户问题判断意图类别:\n{state['user_query']}"
result = llm.invoke(prompt)
state["bot_reply"] = result.content
return state
# 节点2:生成回复
def generate_reply(state: AgentState) -> AgentState:
history = "\n".join(state.get("chat_log", []))
prompt = f"历史对话记录:\n{history}\n\n当前用户问题:{state['user_query']}\n请结合上下文给出专业回复:"
result = llm.invoke(prompt)
state["bot_reply"] = result.content
return state
# 节点3:结果润色并更新记忆
def polish_response(state: AgentState) -> AgentState:
state["chat_log"].append(f"用户:{state['user_query']}")
state["chat_log"].append(f"智能体:{state['bot_reply']}")
return state
# 构建状态图并编译
graph = StateGraph(AgentState)
graph.add_node("classify_intent", classify_intent)
graph.add_node("generate_reply", generate_reply)
graph.add_node("polish_response", polish_response)
graph.add_edge(START, "classify_intent")
graph.add_edge("classify_intent", "generate_reply")
graph.add_edge("generate_reply", "polish_response")
graph.add_edge("polish_response", END)
agent_graph = graph.compile()
LangGraph构建的工作流可以通过NetworkX转换为拓扑图,直观呈现数据在各节点间的流转路径。每个节点以不同颜色区分功能角色,箭头标明执行顺序。

工作流拓扑图清晰展示了三个节点的线性串联关系:消息从用户输入进入classify_intent节点,经generate_reply生成回复,最后由polish_response完成润色并更新记忆。
最后一步是将编译好的状态图投入实际使用。我们构建一个持续运行的对话循环:用户每次输入问题后,智能体会结合chat_log中积累的历史上下文,给出连贯的回复,并将本轮问答追加到记忆中供下次使用。

运行效果表明,智能体能够在多轮对话中保持上下文连贯性——当用户连续追问时,模型会基于chat_log中已有的回复来理解新问题的意图,而非孤立地处理每一次输入。
RAG与Python的智能编程教程问答系统:DeepSeek大模型驱动、LangChain流程构建、FAISS向量检索与语义相似度匹配技术实现
基于LangChain流程构建框架,结合DeepSeek大模型与FAISS向量数据库,搭建了一套完整的RAG(检索增强生成)智能编程教程问答系统。
阅读全文下表从多个维度对比了本文方案的特性与两种常见替代路线(无记忆的简单LLM调用、基于外部知识库的RAG系统)。
| 对比维度 | 本文方案 | 无记忆LLM | RAG系统 |
|---|---|---|---|
| 对话连贯性 | 基于chat_log保持多轮上下文 | 每轮独立 | 取决于检索质量 |
| 架构复杂度 | 中等 | 低 | 高 |
| 外部依赖 | 仅需LLM API | 仅需LLM API | 需向量库+嵌入模型 |
| 可扩展性 | 节点可自由增删 | 有限 | 检索策略可调 |
| 工作流可视化 | 支持 | 无 | 部分支持 |
| 适用场景 | 客服、个人管家、代码陪练 | 单次问答 | 文档问答 |
持久化记忆使得智能体在会话期间能记住此前所有交互内容。模块化设计将分类、生成、优化拆分为独立节点,便于单独调试和替换。可视化能力让工作流的逻辑一目了然,降低了团队协作中的沟通成本。无需外部知识库意味着部署更轻量,只需确保LLM接口可用即可运行。值得一提的是,在论文答辩场景中,导师常会追问‘为什么选择状态图而不是简单的顺序调用’。标准回答:状态图提供了条件分支和循环的能力——当未来需要根据用户意图导向不同处理链路时,只需在classify_intent后增加条件边即可,无需重构整体架构。这一设计的前瞻性正是LangGraph区别于传统链式调用的关键。
本文方案在客服场景中,记忆能力使重复问题率降低,用户无需反复提供上下文;在个人AI管家场景中,连贯的多轮对话更接近人类交流体验,从而提升用户留存。从技术角度,图驱动模块化架构将LLM调用拆解为可组合、可替换的节点,每个节点职责单一,团队可以并行开发不同节点,且单元测试可精确到单个节点级别。本文配套的建模可直接套用的AI智能体、完整代码包、分析,可加小助手:tecdat_cn领取。
作者系机器学习与AI算法领域分析师,拥有多年大语言模型应用开发与数据挖掘项目经验。

每日分享最新报告和数据资料至会员群
关于会员群
- 本会员社群以垂直产业数据研究、深度行业报告分享、AI数据工具实操交流为核心定位;
- 入群即可解锁全行业数据内容免费阅读与下载权限,同步更新海内外一手优质研究报告文档与产业数据;
- 会员老用户享受专属 9 折续费优惠,可长期锁定社群全部权益;
- 为会员提供一对一免费 PDF 报告专属代找服务。
非常感谢您阅读本文,如需帮助请联系我们!

Python多智能体multi-agent客服与情感识别电商系统|附AI智能体、代码和数据
Python+XGBoost与LangGraph、DeepSeek增强的电商用户好评预测|附AI智能体、代码和数据
2026AI产业链出海全景洞察:国产AI,Token经济,品牌破局|附100+报告、数据合集下载
Python结合TF-IDF、逻辑回归、transformers、DistilBERT实现评论语义搜索|附AI智能体、代码和数据

