登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
[拆解LangChain执行引擎]梳理Agent的执行流程 ...
[拆解LangChain执行引擎]梳理Agent的执行流程
[ 复制链接 ]
映各
4 天前
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
到目前为止,我们已经大体了解Pregel的invoke/ainvoke方法在背后都做了什么。接下来我们分两种情况简单梳理一下Pregel对象的执行的大体流程,这也是我们创建的Agent的执行流程。具体执行场景分两种, 一种是指定输入从头开始的常规调用,另一种是针对某个Checkpoint的恢复调用。
1. 常规调用
对于常规调用(这里假设Pregel设置了Checkpointer),我们针对输入Channel提供对应的输入参数调用invoke/ainvoke方法,并且利用RunnableConfig对Thread ID进行设置,此后便进入了基于Superstep的循环迭代。Pregel会根据提供的参数创建一个PregelLoop对象来实施迭代。
首次迭代的第一个Superstep(Superstep -1)相对特殊一些,执行引擎在将输入写入Channel后,它会根据Node针对Channel的订阅关系确定下一步该执行的Node,并生成对应可执行任务。这个可执行任务不是状态快照中的PregelTask对象,其类型为PregelExecutableTask对象。如果设置的持久化模式不是exit,引擎会针对当前的Channel状态生成一个Checkpoint,并调用Checkpointer的put/aput方法实施持久化。从上面的实例模拟的输出结果来看,这里的持久化应该是异步调用的。后续迭代基本采用这样的模式。
创建的任务将在新的Superstep中执行,但在并指执行这些PregelExecutableTask对象之前,一个PregelScratchpad对象会被创建出来。PregelScratchpad提供当前和最大允许的Superstep编号(由设置的迭代限制决定,默认为10000),同时还提供Resume Value列表(来源于持久化的基于Resume的Pending Write,这里为空)和一组分别服务于恢复调用和子图调用的计数器。
执行任务所需的输入具有两种来源,一种是常规Channel,另一种是ManagedValue,后者是基于当前的PregelScratchpad的实时计算的结果。任务在执行过程中只能读取Channel在上一个Superstep固化的数据,并且它们在执行过程中也不运行直接改变Channel的值,双重保障确保了数据的一致性,每个并发执行的任务看到的数据都是一致的。每个任务完成执行后会将针对Channel的更新诉求封装成Pending Write提交给执行引擎,后者对对其进行缓存。如果没有将持久化模式设置为exit,Checkpointer的put_writers/aput_writers方法会被调用其持久化。
当所有任务成功执行后,整个流程进入一个同步屏障。对于执行引擎之前收集到的所有针对Channel的写入(包括面向业务的常规Channel和用于存储Push任务的名为__pregel_tasks的Channel),在此同步屏障中被统一应用。随后,需要在下一Superstep执行的任务被解析出来,其中包括借助Channel订阅驱动的Pull任务,和利用__pregel_tasks通道存储的Send对象创建的Push任务。如果没有将持久化模式设置为exit,此时针对当前状态的Checkpoint被创建出来。对于sync持久化模式,下一Superstep的执行会却确保在Checkpoint被成功持久化之后开启,否则两者就是一个并行执行的过程。
如果采用exit持久化模式,执行引擎只会在整个流程结束后对最终的状态创建一个Checkpoint,并对它进行全程唯一的持久化。如果流程中发生中断,之前累计的Pending Writes在这个时候被统一持久化。不论中断与否,输出Channel的值都会被读取出来组合成字典作为返回值。如果迭代超出限制,执行就此中止,对于sync或者async持久化模式,之前的Checkpoint持久化已经实施了,但是对于exit模式,则会根据当前状态实施持久化。
2. 恢复调用
对于恢复执行,我们必须利用RunnableConfig配置提供Thread ID。如果同时指定了Checkpoint ID,意味着试图从它对应的历史时刻开始执行,相当于在那里重建了一个分支,开启了一个平行世界;否则则是行为从上次中断地方继续前行。恢复调用还可以利用Command的resume字段为对应的中断提供Resume Value。
执行引擎针对恢复调用会忽略提供的输入,转而调用Checkpointer的get_tuple/aget_tuple方法得到对应的CheckpointTuple元组。CheckpointTuple元组携带的Checkpoint、Pending Writes以及其他先相关的元数据和配置会用来创建上面介绍的PregelLoop对象。 Checkpoint随后被提取出来写入对应的Channel,并按照上面介绍的方式解析出接下来应该执行的任务。
对于利用PregelLoop实施的第一个迭代于后续迭代有所不同。首先,Resume类型的Pending Write会被提取用于填充PregelScratchpad的resume列表;其次,对于重建的任务,如果在Pending Write中有对应的条目,且状态为执行成功,它将不会重复执行,但是此Pending Write会提交给引擎。后续的步骤就与常规执行没有什么区别了。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
执行
拆解
LangChain
引擎
梳理
相关帖子
[拆解LangChain执行引擎]回到过去,开启平行世界[下篇]
AI Agent框架探秘:拆解 OpenHands(8)--- CodeActAgent
[拆解LangChain执行引擎]一个实例理解LangChain的几种流模式
[拆解LangChain执行引擎]支持自然语言查询的长期存储
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
[拆解LangChain执行引擎]回到过去,开启平行世界[下篇]
1
477
讣丢
2026-02-25
业界
AI Agent框架探秘:拆解 OpenHands(8)--- CodeActAgent
1
832
倡粤
2026-02-25
业界
[拆解LangChain执行引擎]一个实例理解LangChain的几种流模式
0
565
常士
2026-02-26
业界
[拆解LangChain执行引擎]支持自然语言查询的长期存储
0
597
遗憩
2026-02-27
回复
(1)
印萍
前天 03:16
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢,下载保存了
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
映各
前天 03:16
关注
0
粉丝关注
27
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
宋子
9890
6
韶又彤
9913
7
闰咄阅
9993
8
刎唇
9995
9
蓬森莉
9877
10
遗憩
10006
查看更多
今日好文热榜
595
[拆解LangChain执行引擎]支持自然语言查询
780
深入理解 Java Deque 的设计哲学
1
流量精灵
880
Kite:两种方式实现动态表名
314
Ubuntu Linux 上 固定P/E 核混合架构CPU频
483
【FAQ】HarmonyOS SDK 闭源开放能力 — Loc
22
见证数智力量,甄知科技再获客户感谢信
910
TikTok小店上架产品发布新流程怎么操作?超
774
Apache SeaTunnel实战:MongoDB到Doris数据
733
行情系统为什么越做越慢?
970
JAVA WEB学习13
692
【实战】用 AI 吃透 Git Commit:从代码修
2
【实战】用 AI 吃透 Git Commit:从代码修
264
MAF快速入门(17)用户智能体交互协议AG-UI
195
从零开始构建实时客服系统(.NET架构系列)
157
一款基于 .NET Avalonia 开源、功能强大、
513
使用语义化版本管理工程:告别版本混乱
797
AI Compose Commit:用 AI 智能重构 Git 提
858
AI Compose Commit:用 AI 智能重构 Git 提
21
AI Compose Commit:用 AI 智能重构 Git 提