LangGraph 初学者指南理解状态节点和边  第 1 部分

LangGraph 初学者指南理解状态节点和边 第 1 部分

Barry Lv6

LangGraph — 状态、节点和边的解释

在本文中,我们将讨论 LangGraph 的基础知识。主要关注 LangGraph 的各种组件:状态、节点和边,以及如何从这些组件构建完整的图。一旦我们理解了这些组件,就能够构建相对复杂的基于 LangGraph 的代理。

综合 LangGraph 指南可在 此处 获取。

与本文相关的所有示例代码可在此 笔记本 中找到。

首先,让我们理解各种组件,然后利用它们构建一个完整的图。

节点:节点是图的基本构建块。每个节点代表一个特定的功能或操作,用于处理当前状态。节点可以执行计算、修改状态或根据接收到的输入生成输出。它们通常被定义为 Python 函数或类,接受当前状态作为输入并返回更新后的状态。

:边定义了节点之间的连接,决定了图中的执行流程。它们指定了一个节点的输出如何作为输入传递给另一个节点。边可以是普通的(直接连接一个节点到另一个节点)或条件的(根据某些标准路由到不同的节点)。它们在控制操作顺序和节点之间的交互中起着至关重要的作用。

状态:在 LangGraph 中,状态是一个共享的数据结构,捕获我们应用程序的当前快照。它可以是任何 Python 类型,通常是 TypedDict 或 Pydantic BaseModel。状态在 LangGraph 的功能中起着关键作用,使节点能够通信和交换数据。LangGraph 图中的每个节点都有能力访问、读取和写入状态当一个节点修改状态时,它实际上将此信息广播给图中的所有其他节点。这种广播机制允许其他节点对状态的变化做出响应,并相应地调整其行为。

LangGraph:它是一个用于构建和运行节点图的 Python 库,这些节点通过读取和写入共享状态进行通信。LangGraph 旨在简化创建复杂的多代理工作流,以用于各种应用程序

StateGraph:LangGraph 中的 StateGraph 是一个类,允许我们创建节点通过读取和写入共享状态进行通信的图。StateGraph 类由用户定义的 State 对象参数化,该对象表示图中节点将通过其进行通信的共享数据结构。

让我们探索各种场景,在这些场景中我们以不同的方式定义状态,并将不同的 Python 函数和类包含到节点中,以构建一个简单的图。根据我们的状态模式,我们应该相应地调整输入。以下示例将帮助我们理解这些组件在图中的交互。

示例 1:字典作为状态

在这里,我们直接使用 builder = StateGraph(dict) 定义状态图,其中状态仅仅是一个 Python 字典。

使用字典作为状态是直接的,但管理起来可能会有挑战。由于没有预定义的模式,节点可以在没有严格类型约束的情况下读取和写入状态。这种灵活性使动态数据处理成为可能;然而,它也要求开发人员确保在图的执行过程中键和值的一致管理。

总体而言,这个图设置了一个简单的工作流,其中一个值被递增(由第一个节点 — add 函数)然后被加倍(由第二个节点 — multiply 函数),演示了节点如何通过共享状态在图中进行交互。重要的是要注意,状态一次只包含来自一个节点的信息。这意味着当一个节点处理状态时,它只能访问与其特定操作相关的数据,从而确保每个节点的逻辑是隔离和专注的

示例 2:定义模式的状态

在这个图中,状态被定义为一个结构化字典,其中包含一个名为 messages 的键,该键保存一个字符串列表。这个状态用于管理节点在执行过程中将处理的数据。状态的模式使用一个名为 StateTypedDict 定义,指定 messages 是一个注释的字符串列表。注释包括 operator.add,表示可以通过将新消息与现有消息结合使用加法操作来更新列表。这个模式确保状态结构一致,并允许在图的执行过程中进行适当的类型检查。

示例 3:定义节点类

ReturnNodeValue 类用于创建在调用时返回特定消息的节点。该类的每个实例代表图中的一个节点,其 __call__ 方法定义了当该节点被执行时发生的事情。在这种情况下,它输出一个消息,该消息被添加到状态中的 messages 列表中。当图被执行时,它按顺序处理节点,从 “Hello“ 开始,然后移动到 “World“。

示例 4:使用 LLM

这个示例说明了如何将 LLM 集成到 LangGraph 工作流中,允许动态消息处理和与模型的交互。其余组件与之前定义的图相同。在这里,第一个节点调用 llm 并生成输出,这只是一个 AIMessage。第二个节点则简单地将来自前一个节点的 AIMessage 转换为 HumanMessage。

本文介绍了 LangGraph 的基本元素 — 节点、边和状态 — 并展示了如何构建一个简单的图。我们探讨了节点如何执行操作,边如何控制流程,以及状态如何促进节点之间的通信。通过示例,我们展示了 LangGraph 在构建动态系统中的实际应用。在未来的文章中,我们将深入探讨更复杂的场景,以进一步扩展我们对 LangGraph 的使用。

  • 标题: LangGraph 初学者指南理解状态节点和边 第 1 部分
  • 作者: Barry
  • 创建于 : 2024-07-27 20:56:48
  • 更新于 : 2024-08-31 06:59:45
  • 链接: https://wx.role.fun/2024/07/27/33182e3f69a045998dbea57f5465a631/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
此页目录
LangGraph 初学者指南理解状态节点和边 第 1 部分