开启左侧

LangGraph教程4:LangGraph核心组件

[复制链接]
AI小编 发表于 昨天 21:00 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:Cachel wood
文章目录




          主要特性LangGraph 平台Graph(图)StateGraph




LangGraph 是一个用于构建有状态的多参与者应用程序的库,利用 LLM 创建代理和多代理工作流。与其他 LLM 框架相比,它提供了以下核心优势:循环性、可控性和持久性。LangGraph 允许您定义涉及循环的流程,这对于大多数代理架构至关重要,使其与基于 DAG 的解决方案区别开来。作为一个非常底层的框架,它提供了对应用程序流和状态的细粒度控制,这对于创建可靠的代理至关重要。此外,LangGraph 包含内置的持久性,支持先进的人机协作和记忆特性。
LangGraph 的灵感来源于 Pregel 和 Apache Beam。公共接口受 NetworkX 的启发。LangGraph 是由 LangChain Inc 开发的,它是 LangChain 的创建者,但可以在不使用 LangChain 的情况下使用。
LangGraph 平台 是用于部署 LangGraph 代理的基础设施。它是一个商业解决方案,用于将代理应用程序部署到生产环境,构建于开源的 LangGraph 框架之上。LangGraph 平台由多个组件组成,这些组件协同工作以支持 LangGraph 应用程序的开发、部署、调试和监控:LangGraph 服务器(API)、LangGraph SDK(API 客户端)、LangGraph CLI(构建服务器的命令行工具)、LangGraph Studio(用户界面/调试器)。
官方文档地址:https://langchain-ai.github.io/langgraph/
中文文档地址:https://www.aidoczh.com/langgraph/
主要特性

    循环和分支:在您的应用程序中实现循环和条件。持久性:在图中的每一步自动保存状态。在任何时刻暂停和恢复图的执行,以支持错误恢复、人机协作工作流、时间旅行等。人机协作:中断图的执行以批准或编辑代理计划的下一个动作。流式支持:在每个节点产生输出时进行流式传输(包括令牌流式传输)。与 LangChain 的集成:LangGraph 与 LangChain 和 LangSmith 无缝集成(但不需要它们)。
LangGraph 平台

LangGraph 平台是一个商业解决方案,用于将代理应用程序部署到生产环境,构建于开源的 LangGraph 框架之上。 以下是一些在复杂部署中常见的问题,LangGraph 平台解决了这些问题:
    流式支持:LangGraph 服务器提供 多种流式模式,优化以满足各种应用需求后台运行:在后台异步运行代理支持长时间运行的代理:能够处理长时间运行过程的基础设施双重文本:处理用户在代理回复之前收到两条消息的情况处理突发性:任务队列以确保请求在高负载下也能始终如一地处理,不会丢失
LangGraph教程4:LangGraph核心组件-1.png


Graph(图)

LangGraph 的核心是将代理工作流建模为图。你可以使用三个关键组件来定义代理的行为
    状态:一个共享的数据结构,表示应用程序的当前快照。它可以是任何 Python 类型,但通常是 TypedDict 或 Pydantic BaseModel。节点:编码代理逻辑的 Python 函数。它们接收当前 状态 作为输入,执行一些计算,并返回一个更新的 状态。边:Python 函数,根据当前 状态 确定要执行的下一个 节点。它们可以是条件分支或固定转换。
    通过组合 节点 和 边,你可以创建复杂的循环工作流,随着时间的推移发展 状态。但是,真正的力量来自于 LangGraph 如何管理 状态。需要强调的是:节点 和 边 不过是 Python 函数——它们可以包含 LLM 或简单的 Python 代码。
    简而言之:节点完成工作。边指示下一步要做什么。
LangGraph 的底层图算法使用 消息传递 来定义一个通用程序。当一个节点完成其操作时,它会沿着一条或多条边向其他节点发送消息。这些接收节点然后执行其函数,将结果消息传递给下一组节点,并且该过程继续进行。受到 Google 的 Pregel 系统的启发,该程序以离散的“超级步骤”进行。
超级步骤可以被认为是图节点上的单个迭代。并行运行的节点属于同一个超级步骤,而顺序运行的节点则属于不同的超级步骤。在图执行开始时,所有节点都处于 inactive 状态。当节点在任何传入边(或“通道”)上收到新消息(状态)时,它将变为 active 状态。然后,活动节点运行其函数并响应更新。在每个超级步骤结束时,没有传入消息的节点通过将其标记为 inactive 来投票 halt。当所有节点都处于 inactive 状态且没有消息在传输中时,图执行终止。
StateGraph

StateGraph 类是使用的主要图类。它由用户定义的 状态 对象参数化。
  1. from langgraph.graph import StateGraph
  2. from typing_extensions import TypedDict
  3. classMyState(TypedDict)...
  4. graph = StateGraph(MyState)
复制代码
    基类:图
      一个图,其节点通过读取和写入共享状态进行通信。每个节点的签名是 State -> Partial.每个状态键可以选择性地使用一个 reducer 函数进行注释,该函数将用于聚合从多个节点接收到的该键的值。reducer 函数的签名是 (Value, Value) -> Value。
    参数
      state_schema (类型[任何], 默认值:None ) – 定义状态的模式类。config_schema (可选[类型[任何]], 默认值:None ) – 定义配置的模式类。使用此方法在您的 API 中公开可配置参数。
    示例
  1. #示例:state_graph.py# 从langgraph.graph模块导入START和StateGraphfrom langgraph.graph import START, StateGraph
  2. # 定义一个节点函数my_node,接收状态和配置,返回新的状态defmy_node(state, config):return{
  3.    
  4.    "x": state["x"]+1,"y": state["y"]+2}# 创建一个状态图构建器builder,使用字典类型作为状态类型
  5. builder = StateGraph(dict)# 向构建器中添加节点my_node,节点名称将自动设置为'my_node'
  6. builder.add_node(my_node)# node name will be 'my_node'# 添加一条边,从START到'my_node'节点
  7. builder.add_edge(START,"my_node")# 编译状态图,生成可执行的图
  8. graph = builder.compile(
复制代码
原文地址:https://blog.csdn.net/weixin_46530492/article/details/149455611
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )