理解langgraph.graph.StateGraph中 State 的 Annotated 以函数作为元数据(meta)如何影响State传递

LangChain 编程的一大创新是引入管道化表达式(Pipeline Expressions),通过链式组合不同的模块来构建 LLM 任务流。
为了实现这种链式编程,LangChain 通过 Runnable 统一封装模块,使它们提供标准化接口(如 invoke()batch()stream()

通过运算符(|)实现模块间的数据传递,“|” 像一数据管道,本质上仍然是 invoke() 逐步执行。

langgraph.graph.StateGraph 更是引入图论、基于图论,通过节点(node)定义不同的任务,通过边(Edge)使数据在多个任务之间流转和更新。

V0.3 版的聊天机器人示例代码中,State就是通过Edge流转。里面的StateMessage通过Annotated中引用的add_message实现了自动叠加历史消息的逻辑。

为了理解add_message如何影响State,我们先用一个更直观的例子来理解。

以下代码展示的是一个有三个节点的工作流,数据从一个节点流入下一个节点的过程中,会被Annotated中元数据的函数修改,模拟“带历史消息”的聊天。

因为数据(state)是从一个节点流入另一个节点,连接节点的是边(edge),为了形象,我们用管道来描述,即edge是数据流通的管道。

为了展示数据是在管道中被修改的,我们分别把节点收到的state、节点输出的state、管道中的state分别打印出来。

为了方便演示,我们定义State的结构包含2个成员:foo 表示数据要流向的节点名称,bar 表示本环节大模型api接口返回的结果。 Annotated 的bar_meta_function 对b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值