Langchain/Langgraph知识点1

和Langchain的区别,为什么要有langgraph?

  • 链表和图的区别
  • 单agent 和多agent
  • Memory 和state的区别
维度 LangChain LangGraph
1. 设计哲学 链式(Chain):线性、顺序、无环 DAG 图式(Graph):节点+边,可循环、可分支
2. 状态管理 依赖 Memory 组件,上下文有限,无全局持久化 内置中央 State,支持检查点持久化与断点续跑
3. 控制流 固定 A→B→C,条件逻辑需手动编码 条件边 + 循环边,LLM 可动态决定下一步
4. 并发能力 单线程/简单并行 原生支持并行节点,官方压测并发吞吐高 3 倍
5. 适用场景 问答机器人、固定流程的数据处理 多智能体协作、长时任务、需要反复决策的系统(如金融风控)
6. 与 LLM 关系 直接调用 LLM,链内顺序组合 可把任意 LangChain Chain/Tool 作为节点复用
7. 使用体验 上手简单,API 直观 需理解图、状态、边,学习曲线略高

LangGraph 编排的原理是什么?

LangGraph 编排原理的 4 个核心要点,可拆解如下:

  1. 核心抽象 • 节点(Node):任何可执行单元------LLM、工具、API、子图------均封装为节点。 • 边(Edge):描述节点先后关系,支持固定边(A→B)与条件边(if-else 路由)。 • 状态(State):共享的 Pydantic 数据结构,在节点间传递并作为上下文与内存。 • 图(Graph):节点与边的组合,编译成可调用对象,对外暴露 invoke/stream 等接口。

  2. 运行时流程 • 初始化:用输入数据填充初始状态。 • 超步调度:引擎根据当前状态和边策略,选出就绪节点并行执行。 • 状态更新:节点执行后写回状态,并把更新后的状态沿出边发送。 • 终止判断:无就绪节点或满足终止条件时结束。

  3. 与 DAG(无环图) 的区别 • 支持任意有向图,不局限于无环结构。 • 允许循环执行,只要状态收敛即可安全终止。 • DAG 只是 LangGraph 的一个子集。

  4. 与 LangChain 的关系 • LangChain 的链是线性或简单分支结构,靠 Memory 维持上下文。 • LangGraph 把"链"泛化为任意图,用状态机式机制支持循环、并行、多 Agent 协作等复杂场景。

State是什么?

  1. 上下文容器 把对话历史、工具结果、用户变量等一切需要跨节点传递的信息,放进一个统一的 Pydantic/BaseModel 对象里。
  2. 消息总线 节点执行完只干两件事: • 读取当前 State • 返回对 State 的"补丁"(delta) 运行时引擎把这些补丁合并,形成新的 State,再沿着边发出去,供下游节点继续消费。
  3. 持久化锚点 通过 CheckpointSaver,State 可以被序列化到线程级存储;恢复时只需把上一步的 State 反序列化,就能从断点继续跑,实现长期记忆。

State 就是 LangGraph 的「内存+消息+快照」三合一的数据结构

Memory和State的区别

维度 Memory(LangChain 语境) State(LangGraph 语境)
1. 本质 一个记忆插件(对象/组件),封装了"如何保存/读取历史" 一个数据容器(Pydantic/BaseModel),放在图的全局 Context 里,节点直接读/写
2. 作用范围 只能被所在链访问;跨链需手动传递 整张图共享;任何节点都能访问同一实例
3. 生命周期 链执行完就结束;持久化需额外配置 可随检查点持久化到磁盘,线程重启后自动恢复
4. 数据形态 通常是"对话历史列表"或"向量检索器" 任意字段(messages、变量、文件句柄、任务状态等)
5. 使用方式 在 Chain 构造时传 memory= 参数 节点函数签名里直接声明 state: State 并返回 {"field": new_value}
6. 可变性 由 Memory 类内部控制,外部只读 每个节点可直接修改字段,引擎合并补丁
7. 与并发关系 链内通常是顺序执行,无需并发保护 图支持并行节点,State 由引擎做冲突合并

两种架构中Memory 是如何实现的?

维度 LangChain LangGraph
1. 设计哲学 链式(Chain):线性、顺序、无环 DAG 图式(Graph):节点+边,可循环、可分支
2. 状态管理 依赖 Memory 组件,上下文有限,无全局持久化 内置中央 State,支持检查点持久化与断点续跑
3. 控制流 固定 A→B→C,条件逻辑需手动编码 条件边 + 循环边,LLM 可动态决定下一步
4. 并发能力 单线程/简单并行 原生支持并行节点,官方压测并发吞吐高 3 倍
5. 适用场景 问答机器人、固定流程的数据处理 多智能体协作、长时任务、需要反复决策的系统(如金融风控)
6. 与 LLM 关系 直接调用 LLM,链内顺序组合 可把任意 LangChain Chain/Tool 作为节点复用
7. 使用体验 上手简单,API 直观 需理解图、状态、边,学习曲线略高

State和Memory的区别

维度 Memory(LangChain 语境) State(LangGraph 语境)
1. 本质 一个记忆插件(对象/组件),封装了"如何保存/读取历史" 一个数据容器(Pydantic/BaseModel),放在图的全局 Context 里,节点直接读/写
2. 作用范围 只能被所在链访问;跨链需手动传递 整张图共享;任何节点都能访问同一实例
3. 生命周期 链执行完就结束;持久化需额外配置 可随检查点持久化到磁盘,线程重启后自动恢复
4. 数据形态 通常是"对话历史列表"或"向量检索器" 任意字段(messages、变量、文件句柄、任务状态等)
5. 使用方式 在 Chain 构造时传 memory= 参数 节点函数签名里直接声明 state: State 并返回 {"field": new_value}
6. 可变性 由 Memory 类内部控制,外部只读 每个节点可直接修改字段,引擎合并补丁
7. 与并发关系 链内通常是顺序执行,无需并发保护 图支持并行节点,State 由引擎做冲突合并
相关推荐
KarrySmile14 分钟前
Day17--二叉树--654. 最大二叉树,617. 合并二叉树,700. 二叉搜索树中的搜索,98. 验证二叉搜索树
数据结构·算法·二叉树·二叉搜索树·合并二叉树·最大二叉树·验证二叉搜索树
凤年徐15 分钟前
【数据结构与算法】21.合并两个有序链表(LeetCode)
c语言·数据结构·c++·笔记·算法·链表
程序员老冯头23 分钟前
第三十二节 MATLAB函数
数据结构·算法·matlab
lifallen28 分钟前
hadoop.yarn 带时间的LRU 延迟删除
java·大数据·数据结构·hadoop·分布式·算法
淮北4944 小时前
STL学习(十一、常用的算数算法和集合算法)
c++·vscode·学习·算法
糖葫芦君4 小时前
玻尔兹曼分布与玻尔兹曼探索
人工智能·算法·机器学习
花火|10 小时前
算法训练营day37 动态规划⑤ 完全背包 518. 零钱兑换 II、 377. 组合总和 Ⅳ、70. 爬楼梯 (进阶)
算法·动态规划
Neil今天也要学习10 小时前
永磁同步电机无速度算法--脉振方波注入法
算法
绿炮火10 小时前
【MATLAB】(二)基础知识
开发语言·算法·matlab
88号技师11 小时前
2025年6月最新SCI-灰熊脂肪增长优化算法Grizzly Bear Fat Increase-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法