pregel loop
1. PregelLoop
|
|
1.1 PregelLoop 语义
PregelLoop 是 LangGraph 中实现 Pregel 模式的核心类之一,承担了图执行调度器的角色。它负责以超步(superstep)方式逐步调度图中的节点(PregelNode),并在每个 tick 中处理任务的生成、执行、中断判断、检查点记录、流写入以及缓存等一系列关键操作。PregelLoop 应该是 LangGraph 中最复杂的类,也是最核心的类。
|
|
PregelLoop 是 LangGraph 中实现 Pregel 模式的核心类之一,承担了图执行调度器的角色。它负责以超步(superstep)方式逐步调度图中的节点(PregelNode),并在每个 tick 中处理任务的生成、执行、中断判断、检查点记录、流写入以及缓存等一系列关键操作。PregelLoop 应该是 LangGraph 中最复杂的类,也是最核心的类。
这个 PregelRunner 类是 LangGraph 中 Pregel 模式的一部分,用于并发执行节点任务、提交写入数据、处理中断与输出流。
它不是图的核心结构(如 PregelLoop、PregelNode),但作为执行调度器,用于运行单个“超级步(superstep)”中的节点任务并控制其生命周期。
stream_mode="messages"当图中某个节点调用了 LLM(如 OpenAI Chat API),你可能希望 逐 token 地将 LLM 回复 stream 给前端。LangGraph 提供 messages 模式实现这一点:
|
|
StreamMessagesHandler;stream.put();
|
|
或者如果启用了子图:
|
|
LangGraph 中的 Runtime 类是一个用于封装运行时上下文与工具的便利类,通常会在每个图执行期间作为第二个参数注入节点函数中(第一个是 state,第二个是 runtime),以提供更强大的能力,比如:
前面我们了解到 langgraph cache 类似于 @functools.lru_cache,可以缓存函数的返回值,避免重复计算。这一节我们来看 Cache 的具体实现细节。
cache 如实现由 BaseCache 抽象基类约定。
前面我们了解到 Store 是一种 通用的 key-value 存储系统,可以将 store 看作 LangGraph 中的共享缓存 / 状态仓库。这一节我们来看 Store 的具体实现细节。
Store 如实现由 BaseStore 抽象基类约定。
|
|
下面是 TTLConfig 几个配置项的含义: