AI创想
标题:
LangGraph教程4:LangGraph核心组件
[打印本页]
作者:
AI小编
时间:
昨天 21:00
标题:
LangGraph教程4:LangGraph核心组件
作者: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 服务器提供 多种流式模式,优化以满足各种应用需求后台运行:在后台异步运行代理支持长时间运行的代理:能够处理长时间运行过程的基础设施双重文本:处理用户在代理回复之前收到两条消息的情况处理突发性:任务队列以确保请求在高负载下也能始终如一地处理,不会丢失
(, 下载次数: 0)
上传
点击文件名下载附件
Graph(图)
LangGraph 的核心是将代理工作流建模为图。你可以使用三个关键组件来定义代理的行为
状态:一个共享的数据结构,表示应用程序的当前快照。它可以是任何 Python 类型,但通常是 TypedDict 或 Pydantic BaseModel。节点:编码代理逻辑的 Python 函数。它们接收当前 状态 作为输入,执行一些计算,并返回一个更新的 状态。边:Python 函数,根据当前 状态 确定要执行的下一个 节点。它们可以是条件分支或固定转换。
通过组合 节点 和 边,你可以创建复杂的循环工作流,随着时间的推移发展 状态。但是,真正的力量来自于 LangGraph 如何管理 状态。需要强调的是:节点 和 边 不过是 Python 函数——它们可以包含 LLM 或简单的 Python 代码。
简而言之:节点完成工作。边指示下一步要做什么。
LangGraph 的底层图算法使用 消息传递 来定义一个通用程序。当一个节点完成其操作时,它会沿着一条或多条边向其他节点发送消息。这些接收节点然后执行其函数,将结果消息传递给下一组节点,并且该过程继续进行。受到 Google 的 Pregel 系统的启发,该程序以离散的“超级步骤”进行。
超级步骤可以被认为是图节点上的单个迭代。并行运行的节点属于同一个超级步骤,而顺序运行的节点则属于不同的超级步骤。在图执行开始时,所有节点都处于 inactive 状态。当节点在任何传入边(或“通道”)上收到新消息(状态)时,它将变为 active 状态。然后,活动节点运行其函数并响应更新。在每个超级步骤结束时,没有传入消息的节点通过将其标记为 inactive 来投票 halt。当所有节点都处于 inactive 状态且没有消息在传输中时,图执行终止。
StateGraph
StateGraph 类是使用的主要图类。它由用户定义的 状态 对象参数化。
from langgraph.graph import StateGraph
from typing_extensions import TypedDict
classMyState(TypedDict)...
graph = StateGraph(MyState)
复制代码
基类:图
一个图,其节点通过读取和写入共享状态进行通信。每个节点的签名是 State -> Partial.每个状态键可以选择性地使用一个 reducer 函数进行注释,该函数将用于聚合从多个节点接收到的该键的值。reducer 函数的签名是 (Value, Value) -> Value。
参数
state_schema (类型[任何], 默认值:None ) – 定义状态的模式类。config_schema (可选[类型[任何]], 默认值:None ) – 定义配置的模式类。使用此方法在您的 API 中公开可配置参数。
示例
#示例:state_graph.py# 从langgraph.graph模块导入START和StateGraphfrom langgraph.graph import START, StateGraph
# 定义一个节点函数my_node,接收状态和配置,返回新的状态defmy_node(state, config):return{
"x": state["x"]+1,"y": state["y"]+2}# 创建一个状态图构建器builder,使用字典类型作为状态类型
builder = StateGraph(dict)# 向构建器中添加节点my_node,节点名称将自动设置为'my_node'
builder.add_node(my_node)# node name will be 'my_node'# 添加一条边,从START到'my_node'节点
builder.add_edge(START,"my_node")# 编译状态图,生成可执行的图
graph = builder.compile(
复制代码
原文地址:https://blog.csdn.net/weixin_46530492/article/details/149455611
欢迎光临 AI创想 (http://llms-ai.com/)
Powered by Discuz! X3.4