使用LangGraph构建具备记忆功能的智能对话Agent

LangGraph实战-在agent中使用短期记忆(Short-Term memory) 通过使用MemorySaver,我们可以在会话线程中存储对话的状态。在后台,LangGraph 每一步都会保存检查点(checkpoints)--对话状态的快照。这些检查点与模拟会话的线程 ID 相连。只要线程 ID(thread ID) 保持不变,Agent就能记住过去的交互。 阅读详情

使用LangGraph构建具备记忆功能的智能对话Agent

在AI应用开发中,构建一个既能调用外部工具又能保持对话记忆的智能Agent是一个常见需求。本文将通过一个完整的代码示例,详细介绍如何使用LangGraph框架创建一个具备天气查询功能和对话记忆的React Agent。

项目概述

本项目实现了一个智能对话Agent,具备以下核心功能:

  • 工具调用能力:能够调用天气查询工具获取指定地区的天气信息
  • 对话记忆:通过MemorySaver保持对话历史,实现上下文理解
  • 流式输出:支持实时流式响应,提升用户体验
  • 线程隔离:通过thread_id实现多用户会话隔离

环境准备与依赖导入

首先,我们需要导入必要的依赖包并加载环境变量:

import os

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint.memory import MemorySaver

load_dotenv()

这些导入包括:

  • dotenv:用于加载环境变量,安全管理API密钥
  • langchain_openai:提供OpenAI模型接口
  • langchain_core.tools:工具装饰器,用于定义可调用的工具函数
  • langgraph:核心框架,提供Agent创建和记忆管理功能

定义工具函数

使用@tool装饰器定义一个天气查询工具:

@tool
def get_weather(region: str) -> str:
    """
    获取指定地区的天气
    :param region: 地区
    :return: 天气信息
    """
    return f"{region}晴天,25度"

关键特点:

  • 使用@tool装饰器将普通函数转换为Agent可调用的工具
  • 函数文档字符串对Agent理解工具功能至关重要
  • 参数类型注解帮助Agent正确传递参数
  • 这里使用模拟数据,实际应用中可接入真实天气API

配置语言模型

llm = ChatOpenAI(
    base_url="https://ark.cn-beijing.volces.com/api/v3", 
    api_key=os.getenv("OB_OPENAI_KEY"),
    model="doubao-1.5-lite-32k-250115"
)

配置说明:

  • base_url:指定API服务地址,这里使用的是字节跳动的豆包模型
  • api_key:从环境变量中获取API密钥,保证安全性
  • model:指定使用的模型版本

实现流式输出处理

def print_stream(stream):
    print(stream)
    for chunk in stream:
        message = chunk['messages'][-1]
        if isinstance(message, tuple):
            print(message)
        else:
            message.pretty_print()

这个函数负责处理Agent的流式响应:

  • 遍历流式输出的每个chunk
  • 提取最新的消息内容
  • 根据消息类型选择合适的打印方式

创建具备记忆功能的Agent

prompt = "你是一个智能助手,能够回答用户的问题。你可以选择调用工具,也可以选择不调用,针对用提出的问题,用英文回复"

# 创建记忆管理器
memory = MemorySaver()

# 创建React Agent
agent = create_react_agent(
    llm, 
    tools=[get_weather], 
    checkpointer=memory, 
    prompt=prompt
)

核心组件:

  • MemorySaver:负责保存和恢复对话历史
  • create_react_agent:创建具备推理-行动能力的Agent
  • checkpointer:启用记忆功能的关键参数
  • prompt:定义Agent的行为指令和回复语言

多轮对话测试

配置会话线程

config = {"configurable": {"thread_id": "2"}}

通过thread_id实现会话隔离,不同的thread_id对应独立的对话历史。

第一轮:天气查询

inputs = {"messages": [("user", "上海天气怎么样?")]}
print_stream(agent.stream(inputs, config=config, stream_mode="values"))

Agent会:

  1. 理解用户询问上海天气
  2. 调用get_weather工具
  3. 返回英文回复结果

第二轮:记忆测试

inputs = {"messages": [("user", "我刚问了你什么问题?")]}
print_stream(agent.stream(inputs, config=config, stream_mode="values"))

由于具备记忆功能,Agent能够回忆起之前的对话内容。

第三轮:身份询问

inputs = {"messages": [("user", "你是谁?")]}
print_stream(agent.stream(inputs, config=config, stream_mode="values"))

Agent会根据初始prompt回答自己的身份。

技术特点与优势

1. React模式

Agent采用"推理-行动"模式:

  • Reasoning:分析用户问题,决定是否需要调用工具
  • Acting:执行相应的行动(调用工具或直接回复)

2. 记忆持久化

  • 使用MemorySaver自动保存对话历史
  • 支持跨会话的上下文理解
  • 通过thread_id实现多用户隔离

3. 流式处理

  • 支持实时流式输出
  • 提升用户体验
  • 适合长文本生成场景

扩展应用场景

这个基础架构可以轻松扩展为更复杂的应用:

  1. 多工具集成:添加更多工具(搜索、计算、数据库查询等)
  2. 复杂业务逻辑:结合业务规则和工作流
  3. 多模态支持:集成图像、语音等多模态输入
  4. 企业级部署:添加用户认证、权限管理等功能

总结

本文通过一个完整的代码示例,展示了如何使用LangGraph构建具备工具调用和记忆功能的智能Agent。这种架构为开发更复杂的AI应用提供了坚实的基础,通过合理的抽象和模块化设计,可以快速适应各种业务场景的需求。

关键takeaway:

  • 工具定义要清晰明确,文档字符串至关重要
  • 记忆功能通过MemorySaver轻松实现
  • 流式输出提升用户体验
  • thread_id机制保证多用户会话隔离
LangGraph+Mem0构建AI Agent长期记忆系统 AI Agent的长期记忆并非简单缓存历史数据,而是指具备结构化存储、语义检索、元信息管理与生命周期控制的知识资产系统。其核心原理在于解耦大模型的瞬时推理能力与外部可演化的记忆层,通过向量检索+元数据过滤+时间衰减等混合策略实现高精度召回。该技术显著提升多轮对话连贯性、跨会话状态保持能力与个性化响应质量,在客服机器人、法律辅助、设备诊断等需经验沉淀的场景中形成关键竞争力。本文详解LangGraph与Mem0协同构建生产级长期记忆架构的完整路径。 阅读详情

相关推荐

Megatron-LM深度解析:万亿参数大模型的3D并行训练之道

训练框架,采用创新的"层内模型并行"设计,通过将Transformer层的计算拆分到多个GPU上并行执行,显著提升训练效率。该系统支持3D并行策略(数据并行、张量并行、流水线并行)和序列并行等新技术,成功应用于训练5300亿参数的MT-NLG模型。相比DeepSpeed、TPU GSPMD等框架,Megatron-LM在NVIDIA GPU上展现出卓越性能,并与TensorRT等工具深度集成,形成从训练到部署的完整解决方案。该项目持续演进,已成为大模型训练的重要基准。

数据与算法架构提升之路专栏 2088

【LangGraph】langgraph.prebuilt.create_react_agent() 函数:快速创建基于 ReAct(Reasoning + Acting)架构的智能代理

langgraph.prebuilt.create_react_agent 是 LangGraph 库中的一个预构建函数,位于 langgraph.prebuilt 模块,用于快速创建基于 ReAct(Reasoning + Acting)架构的智能代理。LangGraph 是 LangChain 生态的扩展,专注于构建复杂、有状态的工作流,通过状态图(State Graph)管理节点和边,支持动态路由、循环和多代理协作。它通过封装 LLM、工具和状态管理,简化了开发流程,支持多轮对话、工具调用和流式输出。

彬彬侠的博客 8493

AD在建PCB封装时如何添加元器件的3D模型

3D模型

k1ang的博客 1万+

ReAct Agent(LangGraph实现)

ReAct Agent(LangGraph实现)

缘友一世的博客 1704

22、嵌入式软件随机延迟生成与加密算法防护技术

本文探讨了嵌入式软件中的随机延迟生成方法与块密码软件实现的高阶掩码及洗牌技术。重点介绍了浮动均值延迟生成方法,其在8位AVR平台上的实现效率为Θ(1),显著提升了抗相关功率分析(CPA)攻击的能力,相比传统方法更安全且轻量。同时,分析了高阶掩码与洗牌技术结合的方案,通过理论建模量化其对高级差分功率分析(DPA)攻击的抵抗能力,并以AES为例展示了该方案的应用流程。最后对比了不同防护技术在安全性与开销之间的权衡,为实际应用中选择合适的安全策略提供了依据。未来可进一步优化实现效率并融合多种防护手段以应对复杂安全

fern8的博客 86

手把手教你学simulink实例--基于Simulink的航空发动机控制系统设计与仿真

航空发动机是飞机的核心动力装置,其性能直接影响飞行器的安全性、经济性和可靠性。现代航空发动机控制系统需要具备高精度、快速响应和强鲁棒性的特点,以适应复杂的飞行环境和任务需求。本项目旨在使用MATLAB/Simulink平台,设计并实现一种适用于涡扇发动机的闭环控制系统,通过调节燃油流量、压气机叶片角度等控制变量,确保发动机在不同工况下稳定运行,并满足推力需求。

MHD0815的博客 275

初识 LangGraph ReAct Agent:一步步教你构建自己的智能 Agent

在这篇文章中,我们将聚焦于构建一个实用的 ReAct Agent —— 从概念原理、应用场景,到使用 LangChain + LangGraph 构建可运行的智能体,一步步带你完成从 0 到 1 的开发过程。

瓦罗兰特顶级C位的博客 1234

手把手教你学Simulink——基于Simulink的多用户MIMO系统仿真建模示例

多用户MIMO概述在多用户MIMO系统中,基站配备多个天线,可以同时与多个用户进行通信。利用空间复用技术,不同用户的信号被分配到不同的空间流上,从而实现频谱资源的高效利用。多用户MIMO的核心挑战包括信道估计、波束成形设计以及干扰管理。关键技术点波束成形:通过调整发射信号的相位和幅度,在特定方向上增强信号强度并减少干扰。信道估计:获取每个用户的信道状态信息(CSI),用于优化波束成形矩阵。调制与解调:选择合适的调制方式(如QPSK、16-QAM等)以适应不同用户的信道条件。干扰消除。

MHD0815的博客 268

5. langgraph中的react agent使用 (从零构建一个react agent)

首先,我们需要定义 Agent 的状态,这包括 Agent 所持有的消息。Annotated,Sequence,TypedDict,我们需要定义工具节点和模型调用节点,以便在 Agent 工作流中使用。

The cure for boredom is curiosity. This is the log of its adventures. 1844

2.2 保姆级教程:手把手带你构建第一个 LangGraph 应用

本文是一份保姆级教程,手把手教你构建第一个LangGraph应用——"智能工具助手"Agent。教程分为8个步骤:从环境准备到工具定义(使用Tavily搜索API和自定义计算器),再到定义图状态、创建决策节点和执行节点,最后连接工作流并编译运行。通过这个项目,你将学会如何让Agent智能选择工具(搜索或计算),掌握LangGraph开发的基本流程,为构建更复杂系统打下基础。关键点包括状态管理、节点设计和条件路由的实现。

yonggeit的博客 3115

学 Simulink—— 基于储能系统(BESS)并网逆变器的 削峰填谷(Peak Shaving & Valley Filling)功能仿真

本文详细介绍了基于储能系统(BESS)并网逆变器的削峰填谷功能Simulink仿真方法。主要内容包括:1)削峰填谷原理与典型日负荷曲线控制逻辑;2)简化系统拓扑与关键参数设置;3)分步骤建模过程,重点讲解EMS控制逻辑、SOC模型和PQ控制实现;4)典型仿真结果分析及参数调优建议;5)常见问题解决方案和工程扩展方向。通过该仿真可掌握BESS在用户侧储能、虚拟电厂等场景的核心应用,实现电网侧功率按峰谷时段规划、BESS充放电控制及并网逆变器PQ控制。文章还提供了完整的BESS/微网系列课程框架和混合微网系统进

xiaoheshang_123的博客 41

LangGraph保姆级教程开篇!手把手带你从0到1构建第一个ReAct Agent,核心概念+实操全搞定,收藏这篇就够了!

在构建基于大型语言模型(LLM)的应用时,我们很快会发现简单的“一问一答”模式远远不够。真正的智能应用需要具备规划、执行、反思的能力,能够与外部世界交互,并根据情况做出决策。这正是 LangGraph 的用武之地。

m0_59164520的博客 1423

基于YOLO26深度学习框架的智能停车场管理系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的智能停车场管理系统实现方法。系统采用CSPDarknet53作为主干网络,结合特征金字塔和注意力机制提升检测性能。通过数据预处理、模型训练和停车分析三个主要模块,实现了车位占用检测、车辆类型识别等功能。实验结果表明,该方法在检测精度和速度方面表现优异,为智能停车场管理提供了有效的技术解决方案。

一键难忘的博客 570

LangGraph实战:构建具备长期记忆与复杂推理的金融问答Agent

在实际 AI 应用开发中,构建一个能够理解复杂指令、利用工具、并保持长期记忆的智能体(Agent)是核心挑战。开发者常常面临工具链集成困难、状态管理复杂、调试过程不透明以及生产部署繁琐等问题。LangChain 及其生态,包括 LangGraph,正是为了解决这些工程化难题而生的开源框架和平台。它们提供了一套标准化的组件和开发范式,让开发者能够更专注于业务逻辑,而非底层基础设施的搭建。本文将深入探讨 LangChain 和 LangGraph 的核心概念、区别,并通过一个完整的“金融大模型问答机器人”项目案

weixin_30652491的博客 426

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

从零构建 LangGraph + MCP 的智能对话 Agent:Coze 插件集成实战

本文将详细介绍如何使用Python构建一个基于LangGraph的MCP Chat Agent,该系统能够集成Coze插件,并支持图像生成功能。我们将探讨其架构设计、核心组件以及实际应用场景。本文介绍了基于LangGraph的MCP Chat Agent的设计与实现。该系统具有良好的架构设计,支持多种后端模型,集成了Coze插件系统,并具备图像生成与保存功能。通过使用LangGraph,我们能够构建一个有状态的、可扩展的对话系统,为后续的功能扩展奠定了基础。

weixin_46244623的博客 1023

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LangGraph中的记忆存储

在具体使用上,我们为保证数据的结构化和可解析性,需先定义统一的状态空间State,覆盖交流全量关键信息,简单的格式如下:human用户提出的问题和交流")AI对当前问题进行回复的时间")datetime下面需要完成Agent的初始化和使用,仿照前面章节的内容,我们定义一个Agent的实例,通过传入工具完成用户的查询,示例如下:modelhuman用户提出的问题和交流")AI对当前问题进行回复的时间")datetime# 1.定义工具@tooldef get。

夏天又到了的专栏 914

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

第二章节使用LangGraph构建Agent智能体

Agent,这是LangGraph后续构建Graph图的基础。但其实Agent并不是LangGraph框架当中独有的。甚至Agent 并不是一种技术,而是我们设想的一种理想的大模型工作模式。那么到底什么是Agent?或者说AI行业心目中理想 的Agent应该是什么样子呢?LangGraph实际上给我们提供了一种理解。而这个理解,或许比具体实现更重要。这一章节,我们重点在演练LangGraph中Agent的功能。

weixin_46994548的博客 1175

使用 DeepSeek 构建 LangGraph Agent 指南

因为我们要调用DeepSeek这个外部服务,就像你打电话给别人,有可能会遇到各种问题,比如信号不好打不通,或者对方给了你错误的信息。但是DeepSeek对数据的格式是有要求的,就像你去参加一个活动,得穿符合要求的衣服一样。里面,把错误信息打印出来,还可以做一些其他的处理,比如给结果赋一个默认值,这样程序就不会因为一个小错误就直接挂掉啦。在LangGraph里,Agent是由好多节点组成的,每个节点都有自己的小任务。要是在测试的时候发现Agent反应很慢,就像人做事磨磨蹭蹭的,那就得给它优化优化。

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 3743

LangGraph 构建Agent

LangGraph是LangChain团队推出的状态化工作流框架,专为构建复杂多步骤的AI代理和工作流设计。其核心是将AI应用逻辑抽象为图结构,支持循环、分支和状态持久化,适用于需要长期记忆和多轮决策的场景。与LangChain相比,LangGraph更专注于流程管理,两者常结合使用。

weixin_42828342的博客 1324

从零开始构建Agent记忆系统:LangGraph长短期记忆实战指南

本文深入探讨Agent Memory的核心概念,详解LangGraph框架下短期会话与长期记忆的实现机制,包括存储管理、语义检索等技术。通过MCP协议实战案例,手把手构建融合长记忆机制的Multi-Agent系统,展示中断处理、记忆协作等高级功能。文章提供完整代码示例,帮助开发者掌握记忆管理策略,打造具有上下文感知能力的智能体系统。

大模型工程师老蓝的博客 1313

使用 LangGraph 构建 AI Agent:RAG 与长期记忆

RAG让它能够从特定文档中查找答案,长期记忆让它能够记住跨会话的对话历史。

m0_64363449的博客 693

LangGraph 向量语义记忆:让 Agent 拥有「联想」能力

本文围绕向量语义记忆展开,介绍如何借助真实嵌入模型与ChromaDB,让智能体突破线程限制,按语义跨会话召回用户偏好、事实与历史信息。文章通过向量存储、对话召回、多用户隔离和故障降级四组实战,拆解“召回—回答—写回”闭环,并复现持久化场景下的记忆污染与用户串味问题。重点说明显式传入向量、元数据过滤、稳定标识去重、冷启动兜底及召回质量评估等工程方法,强调向量记忆应与检查点协同使用:前者负责联想,后者负责精确恢复,从而构建安全、可靠、可持续演进的长期记忆系统。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 1万+

# 使用 LangGraph 构建 AI Agent:RAG 与长期记忆

你的AI助手总是“一问三不知”?今天,我们要给它装上知识库和长期记忆,让它真正成为你的得力伙伴!

2401_82469710的博客 785

掌握LangGraph记忆管理:构建智能Agent的必经之路,附完整代码,值得收藏

本文深入解析LangGraph框架的长短期记忆管理机制,详解短期记忆(通过Checkpointer)和长期记忆(通过BaseStore)的实现与应用。提供修剪、删除、总结等多种记忆管理策略及数据库持久化方法,并通过航班预订案例展示实战应用。掌握这些技术可帮助开发者构建具有类人记忆能力的智能Agent,提升AI系统的实用性和用户体验。

优快云_224022的博客 875

Macro mcp_toolset 深度解析:已连接 MCP Server 的 ToolSet 适配层、名称编解码与调用路由

在 Macro 这样一个把邮件、聊天、文档、任务和 AI Agent 整合在同一工作区的项目里,Agent 需要调用大量外部工具,而这些工具绝大多数来自 MCP(Model Context Protocol)Server。`mcp_toolset` crate 解决的正是"连接已经建立之后"的那一段:把若干条已经握手成功的 MCP 会话,统一适配成 `ai_toolset::ToolSet`,并为

gitblog_00021的博客 906

LangGraph实战:从零构建具备记忆与工具调用能力的AI Agent

在人工智能应用开发领域,工作流编排是构建复杂智能系统的核心技术。其原理在于将任务分解为可管理的节点,并通过定义节点间的流转逻辑实现自动化执行。这项技术的核心价值在于能够将抽象的业务逻辑转化为可执行、可维护的代码流程,显著提升开发效率与系统可控性。在实际工程实践中,工作流编排技术广泛应用于智能客服、自动化流程引擎和数据分析助手等场景,通过状态管理和条件分支实现多轮对话与复杂决策。本文聚焦于LangGraph这一专门为AI Agent设计的工作流编排框架,通过实战案例详细讲解如何构建具备记忆、工具调用和复杂决策

weixin_29054245的博客 261
上一篇: 基于LangGraph构建可控制日志分析系统:子图组合与状态管理详解
下一篇: LangGraph批量并行处理解决方案:Send
AI航海家(Ethan)
博客等级 码龄7年 477粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值