news 2026/7/18 23:09:16

State状态模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
State状态模式

1. reducer

State中的每个键 都有自己独立的reducer,通过指定的reducer函数进行数据的更新

即,对于每个节点的返回值,state有自己的一套更新策略,可以人工通过reducer进行定制

2. 一个使用reducer的例子(Annotated)

from langgraph.graph import StateGraph import operator from typing import Annotated, TypedDict, List from langgraph.graph import START, END class State(TypedDict): messages:Annotated[list[dict],operator.add] builder = StateGraph(State) def addition(state): print(state) msg = state['messages'][-1] response = {"x": msg["x"] + 1} return {"messages": [response]} def subtraction(state): print(state) msg = state['messages'][-1] response = {"x": msg["x"] - 2} return {"messages": [response]} # 向图中添加两个节点 builder.add_node("addition", addition) builder.add_node("subtraction", subtraction) # 构建节点之间的边 builder.add_edge(START, "addition") builder.add_edge("addition", "subtraction") builder.add_edge("subtraction", END) graph = builder.compile() input_state = {'messages': [{"x": 10}]} print(graph.invoke(input_state))

这里主要看State类的定义

这里用了一个东西Annotated 在python中用来增加特殊注解

即,本来是指定类型list[dict] 而 这里用Annotated 可以增加一个operator.add 即使用加法作为reducer函数

所以该demo运行后的结果是多个字典合并 而非直接替换

3. stream和invoke

graph.stream({"messages": [("user", user_input)]})

这个是一个dict类型的东西,里面是节点名:节点返回值这样构成的

invoke是直接返回完整的最终state

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 23:06:09

Linux 高效对比神器 bzdiff 详解|无需解压直接比较 bz2 文件差异

Linux 学习资料 https://pan.baidu.com/s/1A6qqBk2ViE_Le2cQjSowkQ?pwd7uz8 一、命令简介 bzdiff 是一个用于直接比较两个 .bz2 压缩文件中原始内容的命令行工具。它内部自动调用解压程序,并将解压后的内容传递给 diff 命令进行比较,从而省去了手动…

作者头像 李华
网站建设 2026/7/18 23:05:44

提示词中的受众设定:让内容精准触达目标人群

提示词中的受众设定:让内容精准触达目标人群你是否有过这样的经历:写了一篇技术文章,老板说"太深了,客户看不懂";写了一篇产品介绍,用户说"太虚了,不知道你在说什么"。同样…

作者头像 李华
网站建设 2026/7/18 23:01:00

报表笔记:删除数据时明明已删除再重新调用方法以刷新数据,无故导致 405,请懂的人不会再写前后端代码

问题:删除数据时明明已删除再重新调用方法以刷新数据,无故导致 405,请懂的人不会再写前后端代码 咏方舟-长流支流 2026-07-18 由于报表在移动端时不宜显示太多字段,于是将主要字段显示,其它字段以展开发的方式显示&am…

作者头像 李华
网站建设 2026/7/18 22:59:54

组件库版本兼容矩阵:向后兼容的系统化保障方案

组件库版本兼容矩阵:向后兼容的系统化保障方案 一、组件库的发版焦虑:为什么每次升级都像拆盲盒 组件库的版本升级是前端基础设施中最容易引发连锁故障的操作。一个看似无害的 minor 版本升级——比如将 Button 组件的 type prop 的默认值从 default 改为…

作者头像 李华
网站建设 2026/7/18 22:59:33

Cursor实时通知系统落地实践(从0到支撑50万DAU的推送链路拆解)

更多请点击: https://kaifayun.com 第一章:Cursor实时通知系统的演进与定位 Cursor 实时通知系统并非从零构建的全新模块,而是伴随 IDE 核心能力演进而持续重构的通信中枢。早期版本依赖轮询机制触发轻量级状态同步,存在延迟高、…

作者头像 李华
网站建设 2026/7/18 22:58:47

编译原理硬核语法制导翻译——给文法赋予“含义“(五)

1. 定位导航 建立了语法的形式(CFG → 分析树)。本篇往树上"挂东西": 文法(形式)  +  属性与语义规则(含义)  =  语法制导定义 (SDD)\text{文法(形式)} \;+\; \text{属性与语义规则(含义)} \;=\; \text{语法制导定义 (SDD)}文法(形式)+

作者头像 李华