当前位置: 首页 > article >正文

[拆解LangChain执行引擎-07] 静态上下文在Pregel中的应用

在 Pregel 模型中静态上下文是一个专门设计的依赖注入容器。它的出现是为了解决在复杂的图计算中如何优雅地处理“不属于图状态但Node运行又必须依赖的外部环境信息”这一痛点。这些数据具有一个共同的性质那就是在整个运行生命周期内只读且固定比如身份信息当前发起请求的user_id、org_id。外部客户端已实例化的db_connection、redis_client、vector_store。策略约束当前任务的safety_level或budget_limit。静态上下文是 Pregel 运行时提供的一个类型安全的环境变量容器。它将执行环境Context与业务轨迹State物理隔离使得大型 Agent 系统的架构更加模块化也更容易在复杂的生产环境下进行测试和调试。不同于以往字典形式的配置静态上下文采用强类型 Schema 定义方法。由于其静态只读的特性它在整个生命周期内保持一致性。静态上下文具有单次运行锁定机制这保证Pregel对象一旦被调用上下文对象在所有Node、所有 Superstep中引用的是同一个内存地址。它的非持久化特性进一步确保它不会被写入Checkpoint所以当Pregel因为错误停止并从断点恢复时我们必须重新提供一个相同的上下文对象。综上所示静态上下文作为非序列化的、运行时的旁路注入而存在。静态上下文在Pregel被作为Runtime的一部分来传递的。如下所示的Runtime类的泛型参数ConextT指的就是静态上下文数据类型。除了返回该上下文的context字段Runtime还具有额外三个字段分别返回用于长期存储的store字段返回一个BaseStore对象、实现“custom”流模式的stream_writer字段返回一个StreamWriter对象以及提供当前会话上一个返回值的previous字段。dataclass(**_DC_KWARGS)classRuntime(Generic[ContextT]):context:ContextTfield(defaultNonestore:BaseStore|Nonefield(defaultNone)stream_writer:StreamWriterfield(default_no_op_stream_writer)previous:Anyfield(defaultNone)Pregel节点的处理函数读取静态上下文比较繁琐以为除了承载输入的参数一般是一个字典我们只能额外定义一个RunnableConfig类型的参数意味着基本上出原始输入外的其他任务信息都得从这个RunnableConfig配置中提取。RunnableConfig是一个字典所以我们要提取所需数据的前提是得预先知道对用得Key。这样设计也能理解因为LangGraph.Prege在整个LangChain宇宙中作为执行引擎而存在它相当于LangChain体系的内核。Pregel提供的API本就不是针对Agent应用开发者对开发者友好不是Pregel的设计目标保持这个内核足够简洁更重要。RunnableConfig对象会贯穿整个Pregel引擎的执行上游流程利用这个它像下游传递所需的组件和控制信息传递的信息大都被至于configurable子节点下。如果对应的Key以__pregel_作为前缀表示该条目其实是由Pregel内部使用的。Runtime对应的Key为__pregel_runtime。如下这个例子演示了如何声明、指定和读取静态上下文。我们定义一个承载基本用户信息的UserInfo数据类型作为静态上下文的Schema。作为Pregel唯一的Node其处理函数提供了一个RunnableConfig类型的参数我们从中提供作为运行时的Runtime对象进而得到作为静态上下文的UserInfo对象。fromlangchain_core.runnablesimportRunnableConfigfromlanggraph.pregelimportPregel,NodeBuilderfromtypingimportAny,Literalfromlanggraph.channelsimportLastValuefromlanggraph.runtimeimportRuntimefromdataclassesimportdataclassdataclassclassUserInfo:id:strname:strgender:Literal[male,female]defhandle(args:dict[str,Any],config:RunnableConfig)-str:runtime:Runtimeconfig[configurable][__pregel_runtime]returnruntime.context.__repr__()node(NodeBuilder().subscribe_only(start).write_to(output).do(handle))appPregel(nodes{body:node},channels{start:LastValue(None),output:LastValue(str)},input_channels[start],output_channels[output],context_schemaUserInfo,)userUserInfo(id123,nameAlice,genderfemale)resultapp.invoke(input{start:None},contextuser)assertresult[output]user.__repr__()在创建Pregel对象的时候作为静态上下文的UserInfo类型直接以构造函数的context_schema参数进行声明。在调用其invoke方法的时候就通过context参数将指定的UserInfo对象作为静态上下文传递。静态上下文的设计初衷就是为了规避序列化的限制。它允许我们将复杂的、重量级的、带有外部依赖的对象的直接注入而不会破坏 Pregel 模型对状态一致性和可持久化的要求。

相关文章:

[拆解LangChain执行引擎-07] 静态上下文在Pregel中的应用

在 Pregel 模型中,静态上下文是一个专门设计的依赖注入容器。它的出现是为了解决在复杂的图计算中,如何优雅地处理“不属于图状态,但Node运行又必须依赖的外部环境信息”这一痛点。这些数据具有一个共同的性质,那就是在整个运行生…...

升级版会议纪要录音转文字工具 识别准转得快 整理省事体验好

前前后后踩过不下10款录音转写工具的坑,要么错字多到要逐行改,要么转出来的内容逻辑混乱,得花好几个小时捋顺,直到用到2026升级版的会议纪要录音转文字工具,才真的感受到什么叫识别准、转得快、整理省事体验好。今早开…...

2026年4月OpenClaw怎么集成?京东云小白6分钟部署及百炼APIKey配置步骤

2026年4月OpenClaw怎么集成?京东云小白6分钟部署及百炼APIKey配置步骤。OpenClaw(原Clawdbot)作为2026年主流的AI自动化助理平台,可通过阿里云轻量服务器实现724小时稳定运行,并快速接入钉钉,让AI在企业群聊…...

我的杭州亲子旅游线路总结(坐船版)

我的杭州亲子旅游线路总结(坐船版) 这是我带娃走过的线路。孩子最近迷恋坐船,我看到新闻说梅花碑有公交船,而且梅花开了很漂亮,就去看看。 这里记录一下行程,说不定以后还去,能做参考。 文中提及…...

TextInput Effects部署与测试:确保跨平台兼容性的完整流程

TextInput Effects部署与测试:确保跨平台兼容性的完整流程 【免费下载链接】react-native-textinput-effects Text inputs with custom label and icon animations for iOS and android. Built with react native and inspired by Codrops. 项目地址: https://git…...

IntelliJ IDEA中SVN与Git版本管理的高效配置指南

1. 为什么需要版本管理工具? 如果你曾经因为误删代码而熬夜重写,或者因为团队协作时文件覆盖而崩溃,那你一定需要版本管理工具。想象一下,代码就像写作文时的草稿纸——每次修改都保留历史版本,随时可以回退到上周二下…...

51单片学习ing

现在能够实现LED闪烁了!! 开心 今天学习了让LED闪烁以及LED流水灯,主要是了解了软件延时计算器这个工具 现在可以更灵活的变换LED的变换速度了,如下: 接下来学习到了c语言里模块化的思想,之前学习c的时候…...

League Akari:英雄联盟玩家的终极自动化工具包

League Akari:英雄联盟玩家的终极自动化工具包 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari 是一款基于官方 LCU A…...

[LangChain智能体本质论-01]两种视角看待Agent和ReAct循环

作为LangChain智能体的Agent采用一种被称为ReAct循环的执行流程(如下图所示),这是一种结合了“推理”(Reasoning)与“行动”(Acting)的交互模式,旨在让Agent能像人类一样通过逻辑思考…...

C++手动实现共享智能指针my_shared_ptr|引用计数+删除器+完整可运行代码

1.共享智能指针的概念 共享型智能指针就是做出一个像JAVA中垃圾回收器,并且可以运用到所有资源,heap内存和系统资源都可以使用的系统。 shared_ptr实现了共享所有权(shared ownership)方式来管理资源对象,这意味没有一个特定的shared_ptr拥有资源对象。相反,这些指向同一…...

tomcat和国产web中间件区别和联系

国产中间件 宝蓝德 https://www.bessystem.com/product/e717be5b091e4e14a7339aa4be49ca80/info?p101东方通 https://www.tongtech.com/sy.html非国产tomcat tomcat的项目发布方式 将项目复制到tomcat/webapps中启动Tomcat服务器,双击 startup.bat访问项目 IDEA 中…...

Graphormer开源模型价值:替代传统QSAR方法的深度学习新范式

Graphormer开源模型价值:替代传统QSAR方法的深度学习新范式 1. Graphormer模型概述 Graphormer是微软研究院开发的基于纯Transformer架构的图神经网络模型,专门为分子图(原子-键结构)的全局结构建模与属性预测而设计。这个创新模…...

Phi-4-mini-reasoning效果展示:含单位换算、科学计数法的复合型数学题求解

Phi-4-mini-reasoning效果展示:含单位换算、科学计数法的复合型数学题求解 1. 模型能力概览 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型,特别擅长处理需要多步逻辑推导的问题。与通用聊天模型不同,它更专注于"问题输入→…...

嵌入式系统中的累加和校验算法原理与实现

1. 累加和校验算法概述在嵌入式系统开发中,数据通信的可靠性至关重要。想象一下,当你通过无线模块控制一台工业机器人时,如果传输的运动指令数据出现错误,可能导致机械臂做出完全不可预测的动作,轻则损坏产品&#xff…...

华为OD面试官最爱问的10个Python八股文,我这样答拿到了Offer

华为OD Python面试实战指南:10个高频问题的深度解析与应答策略 面试开场:如何用技术叙事打动面试官 去年冬天,我坐在华为OD的会议室里,手指不自觉地敲击着桌面。面试官推了推眼镜,抛出了第一个Python问题。那一刻我突然…...

如何通过霞鹜文楷解决中文开源字体在技术项目中的核心挑战

如何通过霞鹜文楷解决中文开源字体在技术项目中的核心挑战 【免费下载链接】LxgwWenKai An unprofessional open-source Chinese font derived from Fontworks Klee One. 一款非专业的开源中文字体,基于 FONTWORKS 出品字体 Klee One 衍生。 项目地址: https://g…...

2025届学术党必备的六大AI科研工具推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek AI写作软件,是人工智能技术于内容创作领域的具体运用,正一步步改变传…...

手把手教你搭建PaddleOCR开发环境:从CUDA配置到模型验证

1. 环境准备:从零搭建PaddleOCR开发环境 最近在做一个票据识别的项目,需要用到OCR技术。对比了几种开源方案后,发现PaddleOCR不仅识别准确率高,而且对中文支持特别好。但在搭建环境时踩了不少坑,特别是CUDA和cuDNN的版…...

51单片机入门-直流电机(十五)

目录:1.直流电机驱动(PWM)2.LED呼吸灯&直流电机调速1.直流电机驱动(PWM)让他转的快一些让他转2us停1us2.LED呼吸灯&直流电机调速点亮一个LED:在循环里:点亮熄灭显示暗一些:让…...

Hunyuan模型如何降本增效?1.8B边缘部署实战案例分享

Hunyuan模型如何降本增效?1.8B边缘部署实战案例分享 1. 模型介绍与核心优势 混元翻译模型1.5版本带来了两个重要更新:18亿参数的HY-MT1.5-1.8B和70亿参数的HY-MT1.5-7B。这两个模型都专注于支持33种语言之间的互译,特别包含了5种民族语言及…...

800元打造你的第一个自平衡机器人:Cubli Mini终极搭建指南

800元打造你的第一个自平衡机器人:Cubli Mini终极搭建指南 【免费下载链接】Cubli_Mini 项目地址: https://gitcode.com/gh_mirrors/cu/Cubli_Mini 想要亲手制作一个炫酷的自平衡机器人,但又担心成本太高、技术太难?Cubli Mini正是为…...

Qwen3-14B镜像部署避坑指南:RTX 4090D驱动/CUDA/内存精准匹配

Qwen3-14B镜像部署避坑指南:RTX 4090D驱动/CUDA/内存精准匹配 1. 镜像概述与核心优势 Qwen3-14B私有部署镜像是一款专为RTX 4090D显卡优化的开箱即用解决方案。这个镜像最大的特点就是解决了大模型部署中最让人头疼的环境配置问题。 想象一下,你拿到一…...

Deep-Live-Cam性能优化指南:从环境配置到实时换脸全流程解决方案

Deep-Live-Cam性能优化指南:从环境配置到实时换脸全流程解决方案 【免费下载链接】Deep-Live-Cam real time face swap and one-click video deepfake with only a single image 项目地址: https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam Deep-Live-…...

VS Code 效率技巧:符号导航快速定位代码

推荐阅读 技术总监悄悄秀了一把 VS Code 神技,被我狠狠学到了! VS Code 又发布了一个 Agent 新玩具! VS Code 1.110 官宣 AI 新特性:AI 直接调试浏览器! VS Code 2026 效率秘籍:学完无敌&#xff01…...

ESLint代码规范(二)

通过配置文件来忽略对指定文件的代码检查ESLint低于7.0.0.eslintignore/config src/utils/**.prettierignore(避免代码被 Prettier 的通用规则修改).eslintcache *.lock yarn-error.log src/utils/**ESLint大于7.0.0.eslintrc.js"ignorePatterns&qu…...

一开口就聊到客户心坎里的沟通话术

先把人聊顺,事自然就顺了一位资深顾问,老客户复购和转介绍特别多。她的秘诀很简单:先聊人,再聊事。有次对接一位态度疏离的客户,她没直接问方案,而是看到客户朋友圈刚出去玩,便说:“…...

别再只会用中断了!用状态机查表法搞定AB相编码器,STM32代码实测(附防抖技巧)

状态机查表法在AB相编码器中的工程实践与优化 记得第一次在电机控制项目中使用旋转编码器时,我整整花了三天时间调试中断服务程序。每当电机转速提高,计数器就会莫名其妙地漏脉冲或跳变。直到发现状态机查表法这个"神器",才真正解决…...

Python并发安全性重构白皮书(GIL禁用场景下的原子操作黄金标准)

第一章:Python并发安全性重构白皮书(GIL禁用场景下的原子操作黄金标准)当通过 PyPy、Cython(启用 nogil)、或 Python 3.12 的实验性子解释器(PEP 684)等路径绕过全局解释器锁(GIL&am…...

C++ 网络服务端主线:从线程池到 Reactor 的完整路线图

一、为什么要写这个系列? 前面我已经把 C 并发基础和线程池完整走了一遍: std::threadstd::mutexstd::condition_variablestd::atomic手写线程池future / 拒绝策略 / 优雅关闭 但到这里,其实还只停留在: 并发组件层 也就是说&a…...

告别重复造轮子:用快马AI一键生成可配置的魔鬼面具UI组件库

作为一个经常需要处理各种UI组件的前端开发者,最近在做一个万圣节主题项目时,遇到了一个有趣的挑战:需要快速开发一套可配置的魔鬼面具组件库。传统手动编码方式不仅耗时,而且难以应对多风格需求。幸运的是,我发现了In…...