深入浅出 LangGraph —— 第7章:持久化与检查点机制

深入浅出LangGraph AI Agent智能体开发教程(九)—LangGraph长短期记忆管理 本期内容分享了LangGraph中的长短期记忆管理机制,短期记忆演示通过InMemorySaver和PostgresSaver实现会话级对话跟踪,支持线程隔离的数据持久化;长期记忆则演示通过InMemoryStore和PostgresStore构建跨会话的稳定知识体系,支持语义检索等高级功能。同时指出大家可通过继承BaseCheckpointSaver和BaseStore抽象类实现自定义存储扩展。 阅读详情

📖 本章学习目标

  • ✅ 理解 LangGraph Checkpointer 的核心概念与工作原理
  • ✅ 掌握 MemorySaver(内存)和 SqliteSaver(本地DB) 的使用
  • ✅ 学会使用 thread_id 实现多用户/多会话状态隔离
  • ✅ 理解检查点的存储结构,能够读取和恢复历史状态
  • ✅ 掌握检查点在故障恢复和调试中的应用
  • ✅ 避免常见的持久化陷阱和性能问题

一、为什么需要持久化

1、无持久化的 Agent 是"失忆症患者"

没有持久化的 Agent 每次对话都从零开始——上一次你告诉它你叫什么名字,下次重启后它完全不记得。这在生产中是不可接受的。

没有持久化的痛点:

  • ❌ 服务重启后所有对话历史丢失
  • ❌ 多轮任务中途中断后无法恢复
  • ❌ 无法支持多用户并发,状态互相干扰
  • ❌ 无法审计和回放历史执行过程
  • ❌ 长时任务(数小时)一旦失败全部重来

❌ 无持久化

用户:我叫Alice

AI:记住了

进程重启

用户:我叫什么?

AI:不知道😢

✅ 有持久化

用户:我叫Alice

AI:记住了
💾保存检查点

进程重启

用户:我叫什么?

AI:你叫Alice!😊
🔄恢复检查点

2、Checkpointer 解决了什么

有持久化

对话1
状态A

💾 检查点存储

对话2
恢复状态A
继续执行

无持久化

对话1
状态A

对话2
状态重置

Checkpointer 提供:

  • ✅ 每个节点执行后自动保存状态快照
  • ✅ 基于 thread_id 隔离不同会话
  • ✅ 支持从任意历史检查点恢复执行
  • ✅ 天然支持"时间旅行"调试(第15章详述)
  • ✅ 故障恢复:从中断点继续,无需重头开始

核心概念对比:

特性无持久化有持久化
进程重启状态丢失状态保留
多用户状态混乱完全隔离
故障恢复从头开始检查点恢复
调试能力黑盒可查看历史
长时任务不可靠可靠

二、MemorySaver:内存检查点

1、最简单的持久化方案

MemorySaver 将检查点存储在内存中,进程退出后消失。适合开发测试和简单场景:

步骤1:导入依赖
import * as dotenv from 'dotenv';
dotenv.config();

import { MemorySaver, MessagesAnnotation, StateGraph } from '@langchain/langgraph';
import { ChatOpenAI } from '@langchain/openai';
import { HumanMessage, AIMessage } from '@langchain/core/messages';
步骤2:定义节点
const model = new ChatOpenAI({ model: 'gpt-4o-mini' });

async function chatNode(state: typeof MessagesAnnotation.State) {
  const response = await model.invoke(state.messages);
  return { messages: [response] };
}
步骤3:创建MemorySaver并编译图
// 创建内存检查点保存器
const memorySaver = new MemorySaver();

const graph = new StateGraph(MessagesAnnotation)
  .addNode('chat', chatNode)
  .addEdge('__start__', 'chat')
  .addEdge('chat', '__end__')
  // 编译时传入 checkpointer
  .compile({ checkpointer: memorySaver });

代码解读:

  • MemorySaver:进程内存存储,适合开发和测试
  • compile({ checkpointer }):启用持久化,图的每个节点执行后自动保存
  • 一旦启用 checkpointer,invoke 时必须传入 configurable.thread_id

工作原理:

  1. 每个节点执行完成后,自动序列化State
  2. 将State保存到MemorySaver的内部Map
  3. 下次调用相同thread_id时,自动加载历史State

2、thread_id:会话隔离的关键

场景1:单用户多轮对话
// 会话1:用户 Alice
const aliceConfig = { configurable: { thread_id: 'alice-session-001' } };

// 首轮对话
await graph.invoke(
  { messages: [new HumanMessage('我叫Alice,请记住我的名字')] },
  aliceConfig
);

// 第二轮对话(自动携带上下文)
const result = await graph.invoke(
  { messages: [new HumanMessage('你记得我叫什么名字吗?')] },
  aliceConfig
);

const reply = result.messages[result.messages.length - 1] as AIMessage;
console.log(reply.content); // "你叫 Alice!"

configurable.thread_id是会话唯一标识,相同 ID 的调用共享状态。LangGraph 会自动加载该 thread_id 的历史检查点,拼接消息历史。不同用户使用不同 thread_id,实现状态完全隔离。

  1. thread_id 必须是字符串
  2. 同一thread_id的所有调用共享状态
  3. 不同thread_id的状态互不干扰
场景2:多用户并发
// 会话2:用户 Bob(完全独立)
const bobConfig = { configurable: { thread_id: 'bob-session-001' } };

const bobResult = await graph.invoke(
  { messages: [new HumanMessage('你知道我叫什么名字吗?')] },
  bobConfig
);
const bobReply = bobResult.messages[bobResult.messages.length - 1] as AIMessage;
console.log(bobReply.content); // "抱歉,你还没有告诉我你的名字。"

常见实际应用:

  • Web应用:thread_id = userId 或 sessionId
  • 客服系统:thread_id = conversationId
  • 任务系统:thread_id = taskId

多用户隔离示意图:

MemorySaver 内部存储

thread: alice-001
messages: [...]

thread: bob-001
messages: [...]

thread: charlie-001
messages: [...]

用户Alice

用户Bob

用户Charlie


三、SqliteSaver:本地持久化存储

1、安装依赖

npm install @langchain/langgraph-checkpoint-sqlite better-sqlite3
npm install -D @types/better-sqlite3

说明:

  • @langchain/langgraph-checkpoint-sqlite:SQLite检查点实现
  • better-sqlite3:高性能SQLite数据库驱动
  • @types/better-sqlite3:TypeScript类型定义

2、SqliteSaver 的使用

步骤1:创建SqliteSaver
import { SqliteSaver } from '@langchain/langgraph-checkpoint-sqlite';

// 创建 SQLite 检查点保存器(自动创建数据库文件)
const sqliteSaver = SqliteSaver.fromConnString('./checkpoints.db');

fromConnString('./checkpoints.db')是指定 SQLite 数据库文件路径

  • 如果文件不存在,会自动创建
  • 如果文件已存在,会加载已有的检查点数据
  • 相对路径相对于当前工作目录
步骤2:编译带持久化的图
const persistentGraph = new StateGraph(MessagesAnnotation)
  .addNode('chat', chatNode)
  .addEdge('__start__', 'chat')
  .addEdge('chat', '__end__')
  .compile({ checkpointer: sqliteSaver });

与MemorySaver用法完全相同,只是换了实现。SQLite数据持久化到磁盘,进程重启后仍然可用,适合本地开发、单机部署场景,生产环境推荐使用 PostgreSQL(参考第14章)。

两种Checkpointer对比:

  • MemorySaver: 速度快,但重启丢失
  • SqliteSaver: 速度稍慢,但重启保留

3、进程重启后恢复对话

第一次运行(保存状态)
// 模拟:第一次运行(保存状态)
async function firstRun() {
  await persistentGraph.invoke(
    { messages: [new HumanMessage('记住:今天的任务是写报告')] },
    { configurable: { thread_id: 'task-001' } }
  );
  console.log('✅ 状态已保存到 SQLite');
  // 进程结束...
}

await firstRun();
第二次运行(恢复状态)
// 模拟:第二次运行(恢复状态)
async function secondRun() {
  const result = await persistentGraph.invoke(
    { messages: [new HumanMessage('我刚才说的任务是什么?')] },
    { configurable: { thread_id: 'task-001' } }  // 相同的 thread_id
  );
  const reply = result.messages[result.messages.length - 1] as AIMessage;
  console.log(reply.content); // "你刚才说今天的任务是写报告。"
}

await secondRun();

两次运行使用相同的thread_id:‘task-001’,第二次运行时,LangGraph自动从SQLite加载第一次的检查点,消息历史被完整恢复,AI记得之前的对话。即使中间隔了几天,只要数据库文件还在,就能恢复。

实际应用场景:

  1. 客服系统:用户关闭浏览器后再打开,对话继续
  2. 任务助手:今天没完成的任务,明天继续
  3. 学习助手:上次学习进度自动保存

持久化工作流程:

SQLite数据库 LangGraph 应用程序 SQLite数据库 LangGraph 应用程序 第一次运行 进程重启 第二次运行 invoke(thread_id='task-001') 执行节点 保存检查点 确认保存 返回结果 invoke(thread_id='task-001') 加载检查点 返回历史状态 继续执行 返回结果

四、读取和管理检查点

1、获取会话状态快照

// 获取某个 thread 的最新状态
async function getLatestState(threadId: string) {
  const state = await persistentGraph.getState({
    configurable: { thread_id: threadId },
  });
  
  console.log('消息数量:', state.values.messages.length);
  console.log('最新检查点:', state.config.configurable?.checkpoint_id);
  console.log('下一步节点:', state.next);  // 图是否还有未执行的步骤
  
  return state;
}

代码解读:

  • getState(config):获取指定 thread_id 的最新状态快照
  • state.values:当前 State 的实际值
  • state.config:包含 checkpoint_id,可用于时间旅行
  • state.next:数组,包含下一步要执行的节点名(若图已完成则为空)

返回值结构:

{
   values: { messages: [...] },  // 当前状态
   config: { checkpoint_id: '...' },  // 检查点ID
   metadata: { source: 'chat', ... },  // 元数据
   next: ['chat']  // 下一步节点
}

2、遍历历史检查点

使用getStateHistory可以获取历史检查点,这在调试、审计和分析历史很有用,配合第15章的时间旅行功能,可以回滚到任意历史状态。

async function listHistory(threadId: string) {
  const history = persistentGraph.getStateHistory({
    configurable: { thread_id: threadId },
  });
  
  let count = 0;
  for await (const checkpoint of history) {
    count++;
    console.log(`检查点 ${count}:`, {
      id: checkpoint.config.configurable?.checkpoint_id,
      node: checkpoint.metadata?.source,
      messageCount: checkpoint.values.messages?.length ?? 0,
    });
  }
}

// 使用示例
await listHistory('task-001');
// 输出:
// 检查点 1: { id: 'xxx', node: 'chat', messageCount: 4 }
// 检查点 2: { id: 'yyy', node: 'chat', messageCount: 6 }
// 检查点 3: { id: 'zzz', node: 'chat', messageCount: 8 }

3、手动更新状态

使用 updateState可以对检查点状态做修改。

// 直接修改某个 thread 的状态(不经过图的执行)
async function injectMessage(threadId: string, message: string) {
  await persistentGraph.updateState(
    { configurable: { thread_id: threadId } },
    { messages: [new HumanMessage(message)] },
    'chat' // 指定更新后从哪个节点继续执行
  );
  console.log('✅ 状态已手动更新');
}

// 使用示例
await injectMessage('task-001', '补充信息:报告需要在周五前完成');

updateState(config, update, asNode)手动修改检查点状态。其中asNode用于模拟更新是由哪个节点产生的(影响路由决策)。主要用于注入测试数据、人工修正 AI 的中间结果等场景,这是第8章"人机交互"的底层机制之一。

应用场景:

  1. 人工审核:修改AI生成的内容后再继续
  2. 数据纠错:修复错误的中间结果
  3. 测试注入:快速设置特定状态进行测试

五、检查点的存储结构

1、理解检查点的数据模型

每个检查点包含以下核心信息:

字段说明用途示例
checkpoint_id唯一标识符时间旅行定位‘1ef4a2b3-c5d6’
thread_id会话 ID隔离不同用户‘user-123-chat’
valuesState 快照恢复执行状态{messages:[…]}
metadata元数据调试信息{source:‘chat’}
next待执行节点中断后续执行[‘agent’]
parent_config父检查点引用构建历史链{checkpoint_id:‘…’}

2、检查点时间线

检查点0
初始状态

检查点1
节点A执行后

检查点2
节点B执行后

检查点3
节点C执行后

检查点4
最终状态

时间线详解:

  1. 检查点0:图启动前的初始状态
  2. 检查点1:节点A执行完成后的状态快照
  3. 检查点2:节点B执行完成后的状态快照
  4. 检查点3:节点C执行完成后的状态快照
  5. 检查点4:图执行完毕的最终状态

每个检查点都可以通过checkpoint_id精确定位,实现"时间旅行"。

3、检查点在数据库中的存储

-- SQLite 数据库中的表结构(简化版)
CREATE TABLE checkpoints (
  thread_id TEXT,           -- 会话ID
  checkpoint_id TEXT,       -- 检查点ID
  parent_checkpoint_id TEXT, -- 父检查点ID
  type TEXT,                -- 类型:full/incremental
  checkpoint BLOB,          -- 序列化的检查点数据
  metadata BLOB,            -- 元数据
  PRIMARY KEY (thread_id, checkpoint_id)
);

六、最佳实践和踩坑指南

💡 实践 1:thread_id 的设计策略

生产级 thread_id 设计建议:

// ✅ 包含用户 ID 和场景,便于管理
const threadId = `user-${userId}-chat-${chatRoomId}`;
const threadId2 = `task-${taskId}-run-${runNumber}`;
const threadId3 = `customer-${customerId}-support-${ticketId}`;

// ❌ 使用随机字符串(无法追踪归属)
const badThreadId = Math.random().toString(36);

推荐的命名规范:

场景格式示例
聊天应用user-{userId}-chat-{chatId}user-123-chat-456
任务系统task-{taskId}-run-{runId}task-789-run-001
客服系统customer-{id}-ticket-{id}customer-001-ticket-999
测试环境test-{testCase}-{timestamp}test-login-1234567890

💡 实践 2:检查点大小控制

import { RemoveMessage } from '@langchain/core/messages';

// 定期清理过长的消息历史,控制检查点大小
async function trimHistory(state: typeof MessagesAnnotation.State) {
  const MAX_MESSAGES = 20;
  if (state.messages.length > MAX_MESSAGES) {
    const toRemove = state.messages
      .slice(0, state.messages.length - MAX_MESSAGES)
      .map(m => new RemoveMessage({ id: m.id! }));
    return { messages: toRemove };
  }
  return {};
}

💡 实践 3:选择合适的Checkpointer

选择指南:

场景推荐方案原因
开发测试MemorySaver速度快,无需配置
本地应用SqliteSaver零配置,单文件
小型生产PostgreSQL可靠性高,支持并发
大型生产Redis + PostgreSQL高速缓存+持久化
云原生LangGraph Platform托管服务,免运维

⚠️ 常见问题

问题现象解决方案
启用 checkpointer 后忘记传 thread_id运行时报 “Missing thread_id”每次 invoke/stream 都必须传 configurable.thread_id
MemorySaver 用于生产重启后状态丢失,用户投诉生产环境使用 SqliteSaver 或 PostgreSQL
thread_id 重用导致状态污染新会话意外继承旧会话的历史每个新会话生成唯一的 thread_id
检查点无限增长数据库文件越来越大定期清理过期的 thread 检查点
并发访问冲突多用户同时写入出错使用PostgreSQL等支持并发的数据库
大对象存入State序列化慢,占用空间大大对象存外部存储,State只存引用

📝 本章小结

核心知识点回顾

知识点关键要点应用场景
MemorySaver内存存储,进程内有效开发测试
SqliteSaver本地数据库,重启可恢复单机部署
thread_id会话唯一标识,隔离状态多用户系统
getState读取最新状态快照查询/监控
getStateHistory遍历历史检查点调试/审计
updateState手动注入或修改状态人机交互
检查点清理控制State大小性能优化

🎯 动手练习

练习 1:跨进程持久化对话

  • 目标:用 SqliteSaver 实现重启后继续上次对话
  • 要求:
    1. 第一次运行保存状态:“记住我的名字是张三”
    2. 关闭程序,重新运行
    3. 第二次运行询问:“我叫什么名字?”
  • 验收标准:
    • AI能正确回答"你叫张三"
    • 证明状态成功跨进程恢复

练习 2:多用户会话管理

  • 目标:模拟3个不同用户同时与 Agent 对话,状态互不干扰
  • 要求:
    1. 创建3个不同的thread_id
    2. 每个用户告知AI自己的名字
    3. 交叉询问其他用户的名字
  • 验收标准:
    • 询问不同用户"你知道我叫什么",各自得到正确回答
    • 没有任何状态泄漏或混淆

练习 3:检查点历史审计

  • 目标:打印某个 thread 的所有检查点历史
  • 要求:
    1. 进行5轮对话
    2. 遍历并打印所有检查点
    3. 显示每个检查点的时间戳、节点名和消息数量
  • 验收标准:
    • 能清晰看到完整的执行历史链
    • 至少5个检查点记录

练习 4:状态清理机制

  • 目标:实现自动清理过旧消息的功能
  • 要求:
    1. 创建trimHistory节点
    2. 当消息超过15条时,删除最旧的5条
    3. 验证清理后仍能保持对话连贯性
  • 验收标准:
    • 消息数量始终不超过15条
    • 最近的对话上下文完整保留
    • 检查点体积明显减小

📚 延伸阅读


下一章:第8章 —— 人机交互:中断与审批流程

中科蓝讯(第一次使用指南) 中科蓝讯 新手指南 阅读详情

相关推荐

DMR对讲机的基本概念理解

刚刚入手DMR对讲机,尚未成功联通。国内互联网上能找到的资料很少,大多数也都是一些DMR协议介绍之类的玩意,对实际操作没有指导意义。以下全部是这几天在网上研究各种资料得出的个人思考,如有错误请斧正。 相比与模拟通讯系统,DMR将语音信号转换为包的形式进行收发。将DMR对比成TCP/IP系统会更容易理解。 一般DMR对讲机都支持模数双通,说明DMR应该使用了跟FM同样的无线AP组件,只在解码上有区别。对讲机先使用DMR进行数字解码,解码成功则说明是数字信号,不成功则使用模拟方式再次进行解码。可以对等理解为

1万+

【由浅入深探究langchain】第十四集-langgraph 状态管理器 checkpointer 详细解析

本文深入解析了LangGraph框架中记忆机制的核心原理。

歪西的博客 1611

ATAC-seq数据分析流程

Outline0. ATAC-seq原理0.1 染色体结构0.2 原理0.3 结果0.4 意义1. ATAC-seq数据分析流程1.1 上游分析(1)序列质控和比对(2)序列筛选1.2 下游分析1.3 进阶分析 0. ATAC-seq原理 0.1 染色体结构 0.2 原理 0.3 结果 0.4 意义 1. ATAC-seq数据分析流程 1.1 上游分析 (1)序列质控和比对 fastqc trim_golare bowtie2 mapping时要加上参数 --very-sensitive -X 2000

weixin_57830892的博客 1万+

【LangGraph】第一篇:从 LangChain 的局限,到 Agent Server 的进化

是正在拍摄一部电影——有场记板(记录状态)、有剧本分镜(多步骤)、导演随时能喊“卡!简单来说,LangGraph 是⼀个专⻔⽤于构建和管理 Agent Server 的底层框架。这种单链路、短记忆的模式,就像你雇了一个智商很高但患有严重失忆症且只能单线程工作的实习生。于是,Agent Server 这种“长期运行的 AI 系统”成为必然。一个可以“长期运行 + 多步骤执行 + 可交互”的 AI 系统。LangChain 已经让我们能“用 AI 做点事情”,它是“状态 + 流程 + 控制”的统一解决方案。

zhai0104的博客 433

【阅读文献笔记】FoundationStereo: Zero-Shot Stereo Matching

提出首个零样本泛化立体匹配基础模型设计 STA 模块融合单目先验提出 AHCF 模块增强代价滤波构建 100 万合成数据集 FSD + 自净化流程。

qq_46460379的博客 1257

56、宇宙微波背景辐射(CMB)望远镜及光学系统解析

本文详细解析了宇宙微波背景辐射(CMB)望远镜及其光学系统,重点介绍了交叉德拉贡系统的结构特点、偏振测量误差及其控制、以及大型地面望远镜如ACT和SPT的设计与对比。同时,总结了不同光学系统和探测器阵列的优劣势,并展望了未来发展方向,旨在为CMB研究提供更高效的工具和技术支持。

f9g0h的博客 243

十、LangGraph能力详解:LangGraph 持久化(Persistence)

本文介绍了LangGraph持久化实现的三大核心应用能力:记忆管理、人机交互和时间旅行。首先,记忆功能分为短期记忆(单次会话)和长期记忆(跨会话),支持消息修剪、删除和总结等管理操作。其次,人机交互通过中断机制实现流程暂停和人工干预,适用于审批、编辑、验证等场景,并强调了中断使用的四大黄金规则。最后,时间旅行功能允许回溯和修改历史状态,用于调试分析和探索替代路径。这些能力共同构成了LangGraph强大的持久化支撑体系,使开发者能够构建具备记忆、交互和调试能力的复杂AI系统。文章通过代码示例详细展示了各项功

2301_79176091的博客 541

TC3XX - MCAL知识点(十三):IOM EB-tresos配置说明及代码浅析

输入输出监视器(IOM)驱动程序作为比较单元,检查系统外设输出的正确操作,这些输出可以作为监视功能的输入。监控功能需要通过配置IOM硬件来实现。它向SMU生成全局系统事件。IOM驱动程序初始化并控制微控制器的IOM单元。驱动程序还为用户提供初始化和设置IOM内部单元的阈值的服务。它还应该提供重置IOM内核的服务。应该提供该服务来组合单个或多个本地事件,以生成单个全局系统事件。IOM驱动程序严重依赖于初始化和配置。软硬件关系如下图缩写解释LAM逻辑分析模块ECM事件组合模块FPC。

梦想技术家 1802

AI开发之LangGraph教程7~时间旅行 (Time Travel)

LangGraph的时间旅行功能允许开发者回溯和恢复任意历史状态,类似于游戏中的存档/读档机制。该功能通过自动保存每个步骤的检查点(checkpoint)实现,每个检查点包含完整状态和唯一标识符(checkpoint_id)。核心应用场景包括:调试时回溯问题步骤、失败后从特定点重试、探索不同执行路径以及审计完整流程历史。使用时必须配置MemorySaver等检查点存储器,通过get_state_history()获取历史记录,并可使用历史状态的config重新执行。典型操作包括查看状态演变、从指定检查点恢复

北京锋通科技有限公司的技术blog 627

《S32系列芯片——Boot & HSE详解》持续更新中...

专栏总目录,将详细介绍S32系列芯片的Boot功能,最终给出HSE基于IVT的Secure Boot方案!!!

车载系统攻城狮 4386

Oracle EBS(R12+)通过Multi-Org 多组织架构、Multi-Ledger 多账簿、SLA 子分类账会计、多币种引擎、多会计政策并行五大核心能力,为跨国企业提供一体化、自动化、合规的

Oracle EBS(R12+)提供全球会计核算解决方案,通过Multi-Org多组织架构实现跨国集团数据隔离与共享,支持四层组织结构(业务组→法律实体→经营单位→库存组织)。Multi-Ledger多账簿功能允许一笔业务多准则自动核算,包含主账簿、辅助账簿和报告币种。系统内置多币种处理引擎,覆盖全流程货币业务,支持自动重估、再计量和折算。通过SLA子分类账会计实现多会计政策并行处理,满足不同国家会计准则和税制要求。该方案可同时支持本地法定、集团合并及管理分析需求,实现全球财务数据集中管理,提升合规性和运营

金牌架构师 553

多图协作的LangGraph架构:从单图到图联邦的演进

在大语言模型(LLM)应用从“单轮问答助手”向“多任务协作智能体系统”跃迁的今天,LangChain生态中的LangGraph已成为构建可控、可观测、可扩展智能体工作流的核心基础设施。然而,当智能体系统需要处理跨领域知识、跨团队权限、跨模态大向量数据集,或面临算力/隐私/性能的约束时,单一的LangGraph图实例(单图)往往无法满足需求。本文将以“图协作的层级演进路径”为主线,采用一步步思考的方法,从LangGraph单图的核心概念、技术原理出发,逐步深入探讨多图协作的四种典型架构(图嵌套协作。

AI Python 编程之道的博客 88

汇川H5U PLC 实现直线插补、圆弧插补、直线圆弧混合连续插补

使用汇川H5UPLC实现直线插补,圆弧插补,直线圆弧混合路径插补,通过示教可以走出复杂的路径,仅供参考学习。

weixin_39832501的博客 4783

深入浅出 LangGraph —— 导读

介绍《深入浅出LangGraph》的写作背景、与《深入浅出LangChain》的关系、目标读者、内容结构与阅读建议。帮助已掌握LangChain基础的工程师顺利进阶到生产级Agent系统开发。

FrontAI的博客 645

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

NTscan扫描工具

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

深入浅出 LangGraph —— 第1章:初识LangGraph

本章从LangChain的Agent概念出发,快速回顾核心要点,重点讲解为什么需要LangGraph来编排复杂Agent工作流,介绍LangGraph的定位与核心优势,带你理解图执行模型的设计哲学,并完成第一个可运行的LangGraph程序。包含完整的生态系统对比和实战示例。

FrontAI的博客 825

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

03|Langgraph | 从入门到实战 | 进阶篇 | 持久化

深入讲解 LangGraph 持久化机制,涵盖三大核心:Checkpoint(检查点) 实现短期记忆与状态快照,Memory Store(记忆存储) 支持跨会话的长期用户画像,Durable Execution(持久化执行) 通过 @task 避免副作用重复执行。通过 PostgreSQL + Milvus 构建智能客服综合案例,演示对话压缩、语义检索、人工审核等企业级场景,为构建可靠的 AI Agent 系统奠定基础。

稳稳C9的博客 1698

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

深入浅出 LangGraph

专为正在做或想要转入 AI Agent 开发领域的开发者量身打造的技术系列教程。全教程以 LangGraph TypeScript 最新版为核心,带你从零开始,由浅入深,最终具备独立构建生产级 AI Agent 系统的能力。

FrontAI的博客 490

LangGraph1.0速通指南(二)—— LangGraph1.0 条件边、记忆、人在回路

本期文章深入讲解了 LangGraph 1.0 的三大进阶功能:通过 Command 对象实现节点内路由、通过检查点实现记忆、通过中断实现人在回路。这些功能为构建复杂可控且具备记忆的智能体提供强大支持

weixin_42782643的博客 1107

06|Langgraph | 从入门到实战 | 进阶篇 | 时间旅行 time travel

LangGraph 的"时间旅行"(Time Travel)特性,这是一项基于检查点机制的强大功能。通过实战案例——笑话生成工作流,我们将学习如何利用状态快照实现三大核心能力:查看历史状态、回退到任意检查点、分叉创建新执行路径。

稳稳C9的博客 1212

LangGraph1.0速通指南(一)—— LangGraph1.0 核心概念、点、边

LangGraph是开发复杂可靠AI应用的强大底层框架,本期内容分享了其核心概念,通过节点与边编排工作流,由状态统一管理数据,并依靠Reducer机制处理并发更新,并通过构建图代码实战掌握其基本使用。

weixin_42782643的博客 1068

LangGraph 1.0入门:从节点与边到智能体工作流构建完全指南

摘要:本文系统介绍了LangGraph 1.0的核心架构,重点解析了状态管理、节点设计、边类型(普通边与条件边)以及Reducer处理并行冲突的机制。通过编程语言类比阐述了LangGraph作为智能体开发框架的核心理念,并提供了构建简单图、实现并行执行和条件分支的代码示例,为开发复杂智能体工作流奠定了技术基础。

ytt0523_com的博客 1156

LangGraph 1.0核心概念详解:从零开始构建智能体工作流

本文介绍了LangGraph 1.0框架的核心概念,包括状态(State)、节点(Node)和边(Edge)三大组件。状态作为数据载体在节点间传递更新,节点通过函数对状态进行操作,边则控制执行流程。文章详细讲解了普通边和条件边的应用,并针对并行执行时的状态冲突问题,介绍了Reducer机制来解决更新合并问题。通过代码示例展示了如何构建简单工作流,为开发者提供了构建复杂AI智能体系统的基础知识。

2401_85375151的博客 850

LangChain DeepAgents 速通指南(十一)—— DeepAgents Code 记忆与状态管理

DeepAgents Code 的记忆系统远不止“存消息”——短期靠检查点+缓存+异步 IO 实现无损恢复,长期靠分层 AGENTS.md + 注入模板 + 防护中间件沉淀跨会话知识。本文拆解 LangChain 团队如何用工程手段驯服记忆,为生产级智能体筑牢可靠性底座。一篇读懂状态与记忆的设计精髓。

weixin_42782643的博客 416

LangGraph 1.0教程(超详细+必藏)从零基础入门到精通,看这一篇就够了!

在之前的系列中,笔者已经系统梳理了 LangChain 1.0 的核心知识点,并通过一个 多模态 RAG 项目带领大家实践了 LangChain 1.0 的关键技术。从本篇开始,笔者将为大家进一步分享的相关知识。与 LangChain 1.0 相比,LangGraph 1.0 的整体架构变动不大,但其定位发生了重要转变:在 1.0 版本之后,LangGraph 不再是 LangChain 的能力延伸,而是成为 LangChain 的能力底座。

Everly_的博客 3143

LangGraph1.0速通指南(一)从状态、节点到边的智能体工作流构建指南

在之前的系列中,笔者已经系统梳理了LangChain 1.0 的核心知识点,并通过一个多模态 RAG 项目带领大家实践了 LangChain 1.0 的关键技术。从本篇开始,笔者将为大家进一步分享的相关知识。与 LangChain 1.0 相比,LangGraph 1.0 的整体架构变动不大,但其定位发生了重要转变:在 1.0 版本之后,LangGraph 不再是 LangChain 的能力延伸,而是成为 LangChain 的能力底座。

HUANGXIN9898的博客 473

深入浅出 Deep Agents 的 Human-in-the-Loop 功能

Human-in-the-Loop 是一种工作流模式,允许人类在 AI 执行敏感操作前进行审批。Deep Agents 通过 LangGraph 的中断(interrupt)功能实现这一机制。AI 代理计划执行某个工具系统检查该工具是否需要人工审批如果需要,AI 暂停执行并等待人类决策人类可以选择批准、编辑、拒绝或直接回应AI 根据人类决策继续执行fill:#333;important;important;fill:none;color:#333;color:#333;

SunnyRivers 626
上一篇: 深入浅出 LangGraph —— 第6章:工具调用与ToolNode
下一篇: 深入浅出 LangGraph —— 第8章:人机交互:中断与审批流程
FrontAI
博客等级 码龄1年 61粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值