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 由引擎做冲突合并
相关推荐
浩少7021 小时前
LeetCode-17day:贪心算法
算法·leetcode·贪心算法
mashanshui5 小时前
Https之(二)TLS的DH密钥协商算法
算法·https·tls·dh·ecdhe
wearegogog1238 小时前
MATLAB的脉搏信号分析预处理
算法·matlab
fs哆哆8 小时前
在VB.net中一维数组,与VBA有什么区别
java·开发语言·数据结构·算法·.net
wjt1020209 小时前
机器学习--续
算法·机器学习
牵星术小白10 小时前
【GNSS基带算法】Chapter.2 相干积分与非相干积分
算法
哇哈哈QIQ10 小时前
2025.7.19卡码刷题-回溯算法-组合
算法
gihigo199813 小时前
matlab多目标优化差分进化算法
数据结构·算法
weixin_5824701713 小时前
GS-IR:3D 高斯喷溅用于逆向渲染
人工智能·算法
Lin9成14 小时前
机器学习集成算法与K-means聚类
算法