【干货收藏】LangGraph检查点机制实现:让AI智能体记住一切

用LangGraph搭建智能体—AI Agents in LangGraph(四、持久化和流式输出) 本节学习了持久化和流式输出,最后还有个异步流式输出,按部就班即可。 阅读详情

内置的持久层-检查点(Checkpoint) 机制实现

真正强大且以用户为中心的 AI 智能体不仅需要速度,还需要有连续性。用户期望AI 智能体能够记住过往交互,跨多个会话保持上下文,并能优雅地从中断或错误中恢复。这正是持久化技术的价值所在。

LangGraph 的持久化基于线程(Thread)和存档点(Checkpoint)两大概念之上。

线程代表图的独立执行上下文或会话,由 thread_id 唯一标识。

存档点本质上是图在执行的不同阶段的状态快照,由可插拔的存档点器(Checkpointer)管理。

本章节将深入探讨线程和存档点如何协同工作以提供连续性并实现高级智能体功能。

核心概念:线程(Thread)与检查点(Checkpoint)

1. 线程(Thread)

在LangGraph 框架中,线程代表图的独立执行上下文。可以将其理解为特定对话历史记录或工作流程执行的专属实例。每个线程都通过唯一的thread_id 进行标识,开发者在调用支持持久化的LangGraph 时必须提供该标识符。这个thread_id 作为命名空间,确保每个执行过程关联的存档点和状态数据与其他执行实例保持隔离。这种隔离机制对于处理并发用户交互或管理同一LangGraph 应用中的多个独立工作流程具有关键作用。

当启动支持持久化的LangGraph 运行时,必须在configurable 配置部分明确指定thread_id 参数。

在调用 LangGraph 时在 config 中传递 thread_id

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

2. 检查点(Checkpoint)

LangGraph 中的检查点是图在特定时间点的状态快照。当启用持久化功能时,LangGraph 会在图执行的每个 Superstep 后自动创建这些快照。Superstep 通常对应图中一个或多个节点的执行,然后由控制流逻辑确定下一步。每个存档点都会完整捕获图的当前状态,包括所有已定义状态通道的值。此状态被封装在 StateSnapshot 对象中,该对象包含以下关键组成部分。

属性名称描述
config与此存档点关联的配置,包括 thread_id 和唯一的 checkpoint_id。
metadata与存档点关联的元数据,包括执行步骤、存档点来源,以及写入操作的上下文信息。
values包含存档点创建时所有状态通道值的字典。这是持久化的核心状态数据。
next指示在图流程中计划执行的下一个节点的元组。
tasks由 PregelTask 对象组成的元组,提供关于下一步任务的详细信息,包括任务 ID、节点名称,以及可能出现的错误或中断记录。

这些 StateSnapshot 对象由存档点器存储在持久化存储后端中,并与 thread_id 关联。LangGraph 自动处理存档点过程,在每个Superstep 后创建新的存档点。这确保了智能体状态的定期备份,从而实现状态的恢复、重放和检查。通过检索和加载这些存点,LangGraph 可以从先前保存的状态开始“回溯”或“恢复”智能体,从而支持诸如记忆保持和时间旅行等高级特性。

内存检查点保存器

LangGraph 提供了几种内置的存档点器实现,每种实现都利用不同的存储后端。

MemorySaver:内存存档点
  • • 优点:快速、易于设置
  • • 缺点:数据不持久,应用重启后丢失
  • • 用途:开发、测试、原型设计
SqliteSaver:基于文件的持久化
  • • 优点:轻量级、跨应用重启持久
  • • 缺点:不适合高并发场景
  • • 用途:本地应用、小规模部署
PostgresSaver:生产级持久化
  • • 优点:可靠、可扩展、支持并发
  • • 缺点:需要数据库服务器
  • • 用途:生产环境、多用户应用

让我们通过实际例子来演示持久化的使用:

示例 1:使用 MemorySaver 实现持久化的笑话生成器

让我们创建一个带有持久化功能的笑话生成器,演示如何保存和恢复状态:

from langgraph.checkpoint.memory import MemorySaver# 使用 LLM 版本的笑话生成器,但添加持久化graph_persistent = (    StateGraph(State)    .add_node(refine_topic)    .add_node("generate_joke", generate_joke_with_llm)    .add_edge(START, "refine_topic")    .add_edge("refine_topic", "generate_joke")    .compile(checkpointer=MemorySaver())  # 启用持久化)# 定义线程配置config = {"configurable": {"thread_id": "my_thread_1"}}print("第一次运行:")for chunk in graph_persistent.stream(    {"topic": "ice cream"},    config=config,    stream_mode="updates",):    print(chunk)print("\n获取最终状态:")print(graph_persistent.get_state(config).values)第一次运行:{'refine_topic': {'topic': 'ice cream and cats'}}{'generate_joke': {'joke': 'Why did the cat wear a scarf around its ice cream cone?\n\nBecause it was a chilly day and the cat wanted to keep its "paws" cool!'}}获取最终状态:{'topic': 'ice cream and cats', 'joke': 'Why did the cat wear a scarf around its ice cream cone?\n\nBecause it was a chilly day and the cat wanted to keep its "paws" cool!'}
示例 2:使用 SqliteSaver 编译具有持久化的 LangGraph
import sqlite3from langgraph.checkpoint.sqlite import SqliteSaverconn = sqlite3.connect("checkpoints.sqlite", check_same_thread=False)checkpointer = SqliteSaver(conn)# 使用 LLM 版本的笑话生成器,但添加持久化graph_persistent = (    StateGraph(State)    .add_node(refine_topic)    .add_node("generate_joke", generate_joke_with_llm)    .add_edge(START, "refine_topic")    .add_edge("refine_topic", "generate_joke")    .compile(checkpointer=checkpointer)  # 启用持久化)# 定义线程配置config = {"configurable": {"thread_id": "my_thread_1"}}print("第一次运行:")for chunk in graph_persistent.stream(    {"topic": "ice cream"},    config=config,    stream_mode="updates",):    print(chunk)print("\n获取最终状态:")print(graph_persistent.get_state(config).values)第一次运行:{'refine_topic': {'topic': 'ice cream and cats'}}{'generate_joke': {'joke': 'Why did the cat refuse to eat the ice cream?\n\nBecause it was purr-fectly chilled!'}}获取最终状态:{'topic': 'ice cream and cats', 'joke': 'Why did the cat refuse to eat the ice cream?\n\nBecause it was purr-fectly chilled!'}

持久化的实际应用

1. 对话记忆

这种由 LangGraph 持久化实现的对话记忆,实际上是一种短期对话记忆。智能体会记住当前对话中的内容,因为消息历史记录和相关状态会在每个回合通过存档点器保存。这种短期记忆对于维持基本的对话连贯性和响应性至关重要。

2. 人机环路工作流

持久化机制在 LangGraph 中对于实现人机环路工作流至关重要。
这些工作流需要在智能体执行的各阶段引入人工干预,以实现批准、反馈或直接的状态编辑。持久化支持图执行的无缝中断和恢复,允许人工操作员检查存档点处的智能体状态、做出决策、提供输入或修改状态,然后指示图从该点继续执行。

3. 时间旅行调试和分支

LangGraph 的持久化机制在支持时间旅行方面展现了其强大能力,为高级开发和调试工作提供重要支持。时间旅行在此能指导并查看 LangGraph 执行的历史状态,使开发者能检查过去的决策、从特定点重放执行过程,甚至分支执行路径以探索替代结果。这一功能显著提升开发效率,使调试工作更高效,实验更加便捷,同时深化对复杂智能体行为的整体理解。

时间旅行的基础是浏览执行历史记录的能力。在 config 中提供 thread_id时,graph.get_state(config) 方法会返回指定线程的当前状态。graph.get_state_history(config) 方法会返回按时间顺序排列的 StateSnapshot 对象列表。此列表记录指定线程的完整执行历史,最新状态快照排在最前。

示例 3:使用 graph.get_state_history 浏览执行历史记录

持久化的一个强大功能是能够查看完整的状态历史:

print("状态历史回顾:")state_history = list(graph_persistent.get_state_history(config))for i, snapshot in enumerate(state_history):    print(f"\n存档点 {i + 1}:")    print(f"  ID: {snapshot.config['configurable']['checkpoint_id'][:8]}...")    print(f"  步骤: {snapshot.metadata}")    print(f"  状态: {snapshot.values}")    print(f"  下一个节点: {snapshot.next}")    print("-" * 50)状态历史回顾:存档点 1:  ID: 1f07dcca...  步骤: {'source': 'loop', 'step': 2, 'parents': {}}  状态: {'topic': 'ice cream and cats', 'joke': 'Why did the cat refuse to eat the ice cream?\n\nBecause it was purr-fectly chilled!'}  下一个节点: ()--------------------------------------------------存档点 2:  ID: 1f07dcca...  步骤: {'source': 'loop', 'step': 1, 'parents': {}}  状态: {'topic': 'ice cream and cats'}  下一个节点: ('generate_joke',)--------------------------------------------------存档点 3:  ID: 1f07dcca...  步骤: {'source': 'loop', 'step': 0, 'parents': {}}  状态: {'topic': 'ice cream'}  下一个节点: ('refine_topic',)--------------------------------------------------存档点 4:  ID: 1f07dcca...  步骤: {'source': 'input', 'step': -1, 'parents': {}}  状态: {}  下一个节点: ('__start__',)--------------------------------------------------

💡 状态历史的价值:

通过查看状态历史,我们可以看到:

  • • 每个存档点的唯一 ID
  • • 执行的步骤和元数据信息
  • • 每个阶段的完整状态
  • • 计划执行的下一个节点

这对于调试、监控和理解智能体的行为非常有价值。

示例 4:使用 graph.stream(…, checkpoint_id=…) 重放执行
# 正确的重放方式:从检查点继续执行# 选择一个中间存档点(有下一个步骤的)# 第2个存档点,状态为刚完成refine_topiccheckpoint_to_replay = state_history[1]print(f"重放检查点:{checkpoint_to_replay.values}")print(f"下一个节点:{checkpoint_to_replay.next}")# 从该检查点继续执行replay_config = checkpoint_to_replay.configprint("\n从检查点继续执行:")for event in graph_persistent.stream(None, replay_config, stream_mode="values"):    print(event)重放检查点:{'topic': 'ice cream and cats'}下一个节点:('generate_joke',)从检查点继续执行:{'topic': 'ice cream and cats'}{'topic': 'ice cream and cats', 'joke': 'Why did the cat join the ice cream shop\'s loyalty program?\n\nBecause she heard they had a "paw-some" reward for paws-singly good reviewers!'}
更新状态(update_state)

功能: 允许用户或外部系统手动编辑图的状态。这可以用于强制纠正、注入信息或在特定检查点创建分叉(Fork)历史。

关键参数:

config:必须包含thread_id。如果包含checkpoint_id,则会从该历史点开始分叉。只传递thread_id则更新当前最新状态。
values:用于更新状态的值。更新逻辑与节点输出完全相同,即会通过状态通道的归约器进行处理。对于有归约器的通道,它是累加/合并;对于没有归约器的通道,它是覆盖。
as_node:(可选)指定本次更新来自哪个节点。这很重要,因为它会影响图在更新后决定下一个执行哪个节点。

示例 5:使用 graph.update_state(…, values) 从存档点分支执行
# 让我们从历史记录中的第 2 个存档点分支checkpoint_to_branch = state_history[1]branch_config = checkpoint_to_branch.config# 创建一个新存档点,使用相同的 checkpoint_id 但更新状态new_branch = graph_persistent.update_state(    branch_config,    {"topic": "ice cream and dogs"})# 恢复图的执行 - 它现在将使用分支的存档点for event in graph_persistent.stream(None, new_branch, stream_mode="values"):    print(event){'topic': 'ice cream and dogs'}{'topic': 'ice cream and dogs', 'joke': 'Why did the dog refuse the ice cream?\n\nBecause he heard it was "paw-sicly" good!'}

普通人如何抓住AI大模型的风口?

为什么要学AI大模型

当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!

DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。

在这里插入图片描述

与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。
在这里插入图片描述

AI大模型开发工程师对AI大模型需要了解到什么程度呢?我们先看一下招聘需求:

在这里插入图片描述

知道人家要什么能力,一切就好办了!我整理了AI大模型开发工程师需要掌握的知识如下:

大模型基础知识

你得知道市面上的大模型产品生态和产品线;还要了解Llama、Qwen等开源大模型与OpenAI等闭源模型的能力差异;以及了解开源模型的二次开发优势,以及闭源模型的商业化限制,等等。

img

了解这些技术的目的在于建立与算法工程师的共通语言,确保能够沟通项目需求,同时具备管理AI项目进展、合理分配项目资源、把握和控制项目成本的能力。

产品经理还需要有业务sense,这其实就又回到了产品人的看家本领上。我们知道先阶段AI的局限性还非常大,模型生成的内容不理想甚至错误的情况屡见不鲜。因此AI产品经理看技术,更多的是从技术边界、成本等角度出发,选择合适的技术方案来实现需求,甚至用业务来补足技术的短板。

AI Agent

现阶段,AI Agent的发展可谓是百花齐放,甚至有人说,Agent就是未来应用该有的样子,所以这个LLM的重要分支,必须要掌握。

Agent,中文名为“智能体”,由控制端(Brain)、感知端(Perception)和行动端(Action)组成,是一种能够在特定环境中自主行动、感知环境、做出决策并与其他Agent或人类进行交互的计算机程序或实体。简单来说就是给大模型这个大脑装上“记忆”、装上“手”和“脚”,让它自动完成工作。

Agent的核心特性

自主性: 能够独立做出决策,不依赖人类的直接控制。

适应性: 能够根据环境的变化调整其行为。

交互性: 能够与人类或其他系统进行有效沟通和交互。

img

对于大模型开发工程师来说,学习Agent更多的是理解它的设计理念和工作方式。零代码的大模型应用开发平台也有很多,比如dify、coze,拿来做一个小项目,你就会发现,其实并不难。

AI 应用项目开发流程

如果产品形态和开发模式都和过去不一样了,那还画啥原型?怎么排项目周期?这将深刻影响产品经理这个岗位本身的价值构成,所以每个AI产品经理都必须要了解它。

img

看着都是新词,其实接触起来,也不难。

从0到1的大模型系统学习籽料

最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师(吴文俊奖得主)
在这里插入图片描述

给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。

图片

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

适学人群

应届毕业生‌: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。
在这里插入图片描述

AI大模型系统学习路线

在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。

  • 基础篇,包括了大模型的基本情况,核心原理,带你认识了解大模型提示词,Transformer架构,预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门AI大模型
  • 进阶篇,你将掌握RAG,Langchain、Agent的核心原理和应用,学习如何微调大模型,让大模型更适合自己的行业需求,私有化部署大模型,让自己的数据更加安全
  • 项目实战篇,会手把手一步步带着大家练习企业级落地项目,比如电商行业的智能客服、智能销售项目,教育行业的智慧校园、智能辅导项目等等

img

但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。

AI大模型入门到实战的视频教程+项目包

看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径

在这里插入图片描述
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

海量AI大模型必读的经典书籍(PDF)

阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
在这里插入图片描述

600+AI大模型报告(实时更新)

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

AI大模型面试真题+答案解析

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
在这里插入图片描述

在这里插入图片描述

AI时代,企业最需要的是既懂技术、又有实战经验的复合型人才,**当前人工智能岗位需求多,薪资高,前景好。**在职场里,选对赛道就能赢在起跑线。抓住AI这个风口,相信下一个人生赢家就是你!机会,永远留给有准备的人。

如何获取?

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

LangGraph基础知识(MemorySaver/SqliteSaver )(三) 不论是简单还是复杂的图,一个明显的限制是:之前内容中的所有实现都只能执行单一任务。也就是说,一旦图被编译并根据用户的输入运行以后,它虽然可以按照既定的图流程输出结果,但在下一次交互时,这个图将无法记住之前的对话内容。通过两次询问,我们可以确定当前的`graph`实例不具备任何的上下文记忆能力。 阅读详情

相关推荐

LangGraph SqliteSaver报错解决:从‘_GeneratorContextManager‘到完整流式控制的实战指南

本文深入解析了LangGraph开发中常见的SqliteSaver报错`AttributeError: '_GeneratorContextManager' object has no attribute 'get_next_version'`的根源与解决方案。该错误源于LangGraph版本升级后API变更,`SqliteSaver.from_conn_string()`返回的是上下文管理器而非直接实例。文章提供了使用`with`语句、手动创建实例、`ExitStack`管理及异步处理四种实战方案,并探讨

weixin_29184371的博客 83

LangGraph实战:从零分阶打造人工智能航空客服助手

过本指南,你将学习构建一个专为航空公司设计的客服助手,它将协助用户查询旅行信息并规划行程。在此过程中,你将掌握如何利用LangGraph的中断机制、检查点技术以及更为复杂的状态管理功能,来优化你的助手工具,同时有效管理用户的机票预订、酒店住宿、租车服务以及旅游活动。

qingkahui24689的博客 918

手把手教你逆向分析某里系bx-ua参数(以225版本为例)

本文详细解析了某里系应用bx-ua参数的逆向工程实战方法,重点拆解其三层加密体系(二进制加密、字符替换和Base64编码)。通过工具链配置和实战案例,帮助开发者掌握逆向分析技巧,适用于合法合规的安全研究和加密技术评估场景。

weixin_33220360的博客 412

LangGraph异步化sqlite checkpoint

Langgraph异步化sqlite checkpiont

zhangkai1992的专栏 1410

实战复盘:一次绕过WAF的EDUSRC SQL注入漏洞挖掘

本文详细复盘了一次针对教育行业网站的SQL注入漏洞挖掘实战。通过手动信息收集发现可疑点,并利用‘+’号替换空格等技巧,成功绕过WAF(Web应用防火墙)的拦截。文章逐步演示了从判断注入点到手工获取数据结构、最终解密进入后台的完整过程,并总结了手工测试的优势及高级绕过思路,强调了在EDUSRC等授权范围内进行安全测试的重要性。

weixin_28622215的博客 191

PyTorch实战:从零构建CNN图像分类模型

卷积神经网络(CNN)作为计算机视觉的核心架构,通过局部连接和权值共享机制高效处理图像数据。其核心组件包括卷积层、池化层和全连接层,其中PyTorch的动态计算图特性为CNN实现提供了灵活的开发环境。在工程实践中,使用CIFAR-10这类标准数据集可以快速验证模型性能,而数据增强和批归一化等技术能有效提升模型泛化能力。通过PyTorch实现CNN不仅能够掌握图像分类的基本原理,还能为后续迁移学习和复杂视觉任务打下基础,特别是在结合Adam优化器和学习率调度策略后,模型收敛速度和准确率都能得到显著提升。

weixin_42405592的博客 318

【干货收藏】AI智能体框架选型指南:AutoGen、AgentScope、CAMEL、LangGraph对比

正如前文所述,AutoGen 的设计哲学根植于"以对话驱动协作"。它巧妙地将复杂的任务解决流程,映射为不同角色的智能体之间的一系列自动化对话。基于这一核心理念,AutoGen 框架持续演进。我们将以 0.7.4 版本为例,因为它是截止目前为止最新版本,代表了一次重要的架构重构,从类继承设计转向了更灵活的组合式架构。为了深入理解并应用这一框架,我们首先需要讲解其最核心的构成要素与底层的对话交互机制。工程化优先的多智能体平台。

xxue345678的博客 1439

手把手教你用Keil5和Proteus8给51单片机跑个流水灯(附完整源码+安装包)

本文详细介绍了如何使用Keil5和Proteus8为51单片机实现流水灯效果,包括开发环境配置、汇编代码编写、电路设计及仿真调试。通过完整的源码和安装包,帮助初学者快速掌握C51单片机开发的核心流程,适合嵌入式开发入门学习。

weixin_42632434的博客 372

【干货收藏】智能体框架入门指南:LangGraph从零到精通

智能体框架代表了人工智能系统设计方式的范式转变。与依赖静态、预定义工作流程的传统人工智能应用不同,智能体框架引入了动态、自适应的系统,这些系统能够自主感知、推理和行动。这些框架可以将复杂的任务分解成更小的子任务,由专门的智能体来处理,这些智能体协同工作以实现更广泛的目标。通过利用大型语言模型 (LLM),代理框架可以管理工作流程、做出决策并无缝集成工具,使其成为动态决策和实时问题解决等高级应用的理想选择。

大模型教程的博客 1101

一文说清Arduino如何实现舵机平滑转动(机器人场景)

深入讲解如何利用arduino控制舵机转动,实现机器人场景中的平稳运动。通过代码优化与脉冲宽度调节,让舵机动作更精准流畅,适用于各类自动化项目。

weixin_35706255的博客 899

基于Docker的D435i相机与IMU联合标定实战指南

本文详细介绍了基于Docker的D435i相机与IMU联合标定实战指南,涵盖kalibr镜像构建、IMU标定全流程、双目相机标定技巧及联合标定结果验证。通过Docker容器化部署,简化了复杂依赖环境,提升标定效率与精度,适用于机器人视觉与SLAM应用。

weixin_30872337的博客 239

【干货收藏】LangGraph+ReAct打造智能体:从硬编码到LLM驱动的完整指南

文章摘要:本文详细介绍了使用LangGraph框架构建ReAct智能体的方法。第一部分通过硬编码示例展示了ReAct循环的核心机制,包括状态设置、模拟工具、推理节点和行动节点的实现。第二部分将升级为LLM驱动的动态决策智能体。文章重点讲解了如何通过LangGraph的图结构(节点和边)来定义智能体工作流,实现"推理-行动-观察"的循环流程,并提供了完整的代码示例展示从构建到运行的全过程。这种设计实现了工作流结构与智能推理的解耦,为构建实用型AI智能体提供了清晰的技术路径。

2301_76168381的博客 1083

【GlobalMapper精品教程】038:模拟水位上升(洪水淹没分析)案例教程

基于数字高程模型 ( DEM )格网模型,实现给定水深情况下洪水淹没区的计算模型,讨论洪水淹没演进过程可视化实现的关键技术,以三维可视化方式,动态而形象地模拟在指定洪水水位下的洪水淹没演进过程。

智慧空间实验室 2884

看完就懂!AI智能体(AI Agent)从原理到实践:含LangGraph框架示例,技术干货收藏!

AI智能体(Agent)是能够代表用户独立完成任务的系统,与传统LLM应用的最大区别在于其动态决策、工具调用和多轮状态管理能力。智能体由模型、工具和指令三部分组成,适用于需要上下文判断的复杂任务场景。构建时应选择合适模型、定义标准化工具接口,并编写清晰的指令。智能体编排可采用单智能体或多智能体系统,同时必须建立安全护栏体系来确保行为边界。文章最后通过LangGraph框架提供了一个可运行的最小智能体示例,展示了从理论到实践的完整流程。

优快云_224022的博客 1055

基于Simulink的风电系统背靠背变流器解耦控制仿真

本文完成了基于 Simulink 的风电背靠背变流器解耦控制仿真,实现了:✅掌握 dq 解耦控制的数学本质✅构建 MSC + GSC 完整控制链✅验证其在动态、扰动下的卓越性能✅达成高解耦度、低 THD、稳母线三大目标。

xiaoheshang_123的博客 79

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【干货收藏】LangGraph多智能体系统构建指南:从单体瓶颈到协作突破

多智能体系统通过将复杂问题拆解为可治理的自治单元,解决单体智能体的工具过载、上下文负担和领域专精冲突等问题。LangGraph提供五种典型架构(网络、监督者、层级等),支持显式交接协议(Command)和状态管理,实现模块化、专精化和可控性。文章详细介绍了三种交接模式的代码实现及工程化落地要点,建议从简单模式起步,逐步演进至复杂架构。

weixin_72959097的博客 1576

蓝牙模块HM-10手册

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

【干货收藏】大模型智能体系统详解:从单智能体到多智能体的技术演进与框架选型

【干货收藏】大模型智能体系统详解:从单智能体到多智能体的技术演进与框架选型

youmaob的博客 1870

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【干货收藏】LangChain与LangGraph 1.0:AI智能体开发进入工程化时代,附学习指南

LangChain与LangGraph同时发布1.0正式版,标志着AI智能体开发从原型迈向生产级落地的关键转折。LangChain作为高层抽象框架,提供快速构建智能体的能力,新增create_agent接口和中间件系统;LangGraph作为底层运行时引擎,支持持久化状态和人工干预。两者协同进化,开发者可从LangChain快速启动原型,再无缝迁移到LangGraph实现高可靠性部署,为AI智能体开发提供从入门到生产的完整路径。

2401_85325557的博客 977

收藏级干货:LangChain与LangGraph对比解析,看透Agent智能体的本质

本文通过LangChain和LangGraph两大主流AI框架,深入剖析Agent智能体的本质。LangChain将大模型视为流水线工人,采用链式结构但过于死板;LangGraph引入图结构,赋予大模型决策能力,实现循环和记忆功能。Agent核心是"大模型+循环控制流+记忆",市场上的产品主要由反思模式、工具路由模式和监督者模式三种基础模式组合而成,理解这些模式就能看透Agent的本质。

ytt0523_com的博客 1053

LangGraph实战教程,手把手教你构建多智能体架构,全程干货,简单易懂,建议收藏!!

大模型多智能体系统(Large Model Multi-Agent System) 是由多个基于大语言模型(LLM)的智能体(Agent)组成的协作系统。每个智能体具备独立的任务处理能力,通过协同工作解决单一智能体难以完成的复杂问题。

bugyinyin的博客 1297

【干货收藏】LangChain和LangGraph如何构建真正的大模型Agent

本文通过LangChain和LangGraph两大主流AI开发框架,解析了Agent智能体的本质。LangChain将大模型视为"流水线工人",执行固定流程;而LangGraph引入循环和记忆,赋予大模型决策能力。真正的Agent=大模型+循环控制流+记忆。市面上复杂的Agent产品主要由反思模式、工具路由模式和监督者模式三种基础模式组合而成。理解这些模式,就能看透各类Agent产品的底层逻辑。

Android_XG的博客 763

【干货收藏】LangGraph核心技术:断点恢复与状态流实现AI Agent记忆与控制

本文介绍了LangGraph框架的两个核心能力:通过SqliteSaver实现对话状态持久化保存,让AI Agent具备记忆功能;使用graph.stream()实现状态流式展示和人工介入控制。文章详细讲解了如何配置SQLite数据库、使用thread_id管理不同会话上下文,以及如何在关键节点中断流程实现人工判断。这些功能使AI Agent能够记住过去对话内容,并在执行过程中实时受控,更好地应对复杂的多轮任务和长周期运行场景。

bugyinyin的博客 1127

LangGraph从入门到精通:构建复杂多智能体系统的完整指南(必收藏)

本文介绍了LangGraph框架,这是一个基于有向图模型的多智能体应用开发工具。LangGraph通过节点和边构建复杂工作流,支持状态管理、条件分支、循环和人机协作等高级功能。文章详细解析了其核心概念(图、状态、节点、边)以及多智能体架构模式(supervisor、swarm、handoffs),并介绍了Java版本的LangChain4J和LangGraph4J。相比传统线性执行方式,LangGraph提供了更灵活的控制流和更好的可调试性,适用于智能客服、自动化运维等场景。

ytt0523_com的博客 1152

【干货收藏】上下文工程实战:用LangChain和LangGraph优化大模型应用性能

文章详细介绍了上下文工程的概念及其实施方法,重点讲解了LangChain和LangGraph工具在构建智能体、RAG应用和LLM应用中的应用。文章系统阐述了四种上下文工程策略(编写、选择、压缩、隔离),并通过代码示例展示了如何实现状态管理、记忆存储、工具调用、上下文压缩和多智能体系统等技术,帮助开发者提升AI智能体的性能和效率。

2401_84815887的博客 1089

【收藏级干货】智能体应用工程师:AI时代程序员的黄金赛道,核心能力全解析

对于正在迷茫择业、想转行提升,或是刚入门的程序员、编程小白来说,有一个问题几乎人人都在问:未来10年,什么领域的职业发展潜力最大?答案只有一个:人工智能(尤其是大模型方向)当下,人工智能行业正处于爆发式增长期,其中大模型相关岗位更是供不应求,薪资待遇直接拉满——字节跳动作为AI领域的头部玩家,给硕士毕业的优质AI人才(含大模型相关方向)开出的月基础工资高达5万—6万元;即便是非“人才计划”的普通应聘者,月基础工资也能稳定在4万元左右。

大模型教程的博客 1218

【干货收藏】LangChain v1.0全解析:四大组件、中间件机制与Deep Agents实战

摘要: LangChain生态已从单一框架扩展为四大组件:基础框架LangChain、工作流引擎LangGraph、智能体执行框架Deep Agents和监控平台LangSmith。v1.0版本引入核心中间件机制,统一Runnable接口设计,强化智能体开发,并通过Deep Agents简化工业级智能体构建。新版本显著优化开发体验,建议开发者重构项目而非简单升级。注意LangGraph Studio已更名为LangSmith Studio,LangServe将逐步淘汰。

ytt0523_com的博客 1121
上一篇: 【AI大模型面试】大模型集成学习:从基础到高级,一篇搞定,值得收藏
下一篇: 【收藏必学】RAG模式详解:让大模型拥有实时知识检索能力,告别“胡扯“
Agent学习路线
博客等级 码龄6年 1万+粉丝 1903原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值