首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >LangGraph >LangGraph 的状态管理机制是如何工作的?

LangGraph 的状态管理机制是如何工作的?

词条归属:LangGraph

1. 状态 schema 定义

LangGraph 的状态通过类型化的数据结构定义,支持 TypedDict、Pydantic BaseModel 或 dataclass。TypedDict 是最常用的方式,性能最优;Pydantic 提供递归数据验证但性能略低。每个节点的输入和输出都遵循状态的 schema,确保类型安全。从 LangGraph 1.0 开始,官方推荐使用 Pydantic BaseModel 定义状态;Pydantic v3 的验证性能相比 v2 有显著提升,适合生产环境使用。

2. 通道与 Reducer

状态中的每个键对应一个通道(Channel),通道决定了当多个节点同时写入同一字段时如何进行合并。常见的 reducer 包括:add_messages(追加模式,用于消息历史累加)、last_value(覆盖模式,用于标量值)、merge(字典合并)和自定义 reducer。开发者可以通过 Annotated[..., reducer] 语法为每个状态键指定合并策略,避免并发写入时的数据冲突。

3. 子图和模块化状态

LangGraph 支持子图(Subgraph)机制,可以将复杂的 Agent 拆分为多个独立的子状态机。子图作为一个整体节点嵌入父图中,通过定义的输入/输出 schema 与父图通信。这种模块化设计允许不同团队各自开发子图模块,最后组装成完整系统,也便于单元测试和复用。

4. 上下文 Schema

除了状态之外,LangGraph 还支持 context schema,用于注入运行时不变的上下文数据(如 user_id、数据库连接等)。context 对所有节点可见但不可修改,适合传递只读的配置信息,避免了将这些数据放入可变状态中带来的复杂度。

相关文章
Flink中可查询状态是如何工作的
QueryableStates 允许用户对流的内部状态进行实时查询,而无需将结果存储到任何外部存储中。 这制造了许多有趣的可能,因为我们不再需要等待系统写入外部存储(这一直是此类系统的主要瓶颈之一)。 甚至可能没有任何类型的数据库能让用户的应用程序直接查询流,这将使应用程序更快、更便宜。 这可能不适用于所有用例,但如果您的 Pipeline 必须维护内部状态(可能是进行一些聚合),则最好使状态可用于查询。
smartsi
2021-06-29
3.6K0
JavaScript 是如何工作的🔥 🤖 [视觉解释]
JavaScript 是世界上最受欢迎和最讨厌的语言之一。它被爱,因为它是有效的。您只需学习 JavaScript 即可制作全栈应用程序。它也被讨厌,因为它以出乎意料和令人不安的方式行事,如果您不投入理解该语言,可能会让您讨厌它💔。 这篇博客将解释 JavaScript 如何在浏览器中执行代码,我们将通过动画 gif 来学习它😆。看完这篇博文,你离成为Rockstar开发者又近了一步🎸😎 执行上下文 “ JavaScript 中的一切都发生在一个执行上下文中。” 我希望每个人都记住这句话,因为它是必不可
玖柒的小窝
2021-09-12
4.6K0
Goroutine是如何工作的
在golangweekly的第36期Go Newsletter中我发现一篇短文"How Goroutines Work" ,其作者在参考了诸多资料后,简短概要地总结了一下 Goroutine的工作原理,感觉十分适合刚入门的Gophers(深入理解Goroutine调度的话,可以参考Daniel Morsing的" The Go scheduler" )。这里粗译如下。 一、Go语言简介 如果你是Go语言新手,或如果你对"并发(Concurrency)不是并行(parallelism)"这句话毫无赶脚,那么请
李海彬
2018-03-19
4K0
聊聊Flink框架中的状态管理机制
在目前所有流式计算的场景中,将数据流的状态分为有状态和无状态两种类型。无状态指的就是无状态的计算观察每个独立的事件,并且只根据最后一个事件输出结果。举个栗子:一个流处理程序,从传感器接收温度数据然后在温度为90摄氏度发出报警信息。有状态的计算则会根据多个事件输出结果。举个栗子:计算过去一小时的平均温度,就是有状态的计算、若在一分钟内收到两个相差 20 度以上的温度读数,则发出警告等等。
百思不得小赵
2022-12-01
8940
HashMap是如何工作的
最简单形式的 hash,是一种在对任何变量/对象的属性应用任何公式/算法后, 为其分配唯一代码的方法。
java思维导图
2020-06-05
5.4K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券