多智能体开发框架之LangGraph全面剖析实战课

okkaandw · 3天之前 · 82 次点击 · 大约8小时之前 开始浏览    置顶

/s/1W9m4Bh6K_ZATO7SfDB1wdw 提取码:ckwy

一、什么是LangGraph ‌LangGraph‌是一个基于图结构的工具库,用于创建代理和多代理智能体工作流。它是LangChainAI生态系统的一部分,旨在通过将应用逻辑组织成有向图的形式,提供一种直观和灵活的方式来构建复杂的LLM(大型语言模型)应用‌。

二、主要特性 ‌状态持久化‌:LangGraph支持状态的持久化,可以自动保存和管理状态,支持暂停和恢复执行,特别适合处理长时间运行的对话‌。 ‌循环和分支能力‌:LangGraph支持条件语句和循环结构,可以根据状态动态决定执行路径,轻松实现复杂的对话流程控制‌。 ‌多智能体开发‌:支持多智能体开发,可以在一个系统中同时运行多个智能体,实现复杂的交互逻辑‌。 ‌人机交互支持‌:可以在执行过程中插入人工审核,支持编辑和修改状态,提供灵活的交互控制机制‌。 ‌流式处理‌:支持流式输出,实时反馈执行状态,提升用户体验‌。

三、LangGraph 与 LangChain LangGraph 并不是一个独立于 LangChain 的新框架,而是在 LLM 和 LangChain 的基础之上构建的一个扩展库,可以于 LangChain 现有的链(Chain)等无缝协作

LangGraph 能够协调多个 Chain、Agent、Tool 等共同协作,实现依赖外部工具、外部数据库且带有反馈的问答任务。

四、LangGraph 重要概念 LangGraph 核心是构造一个图,通过图的方式实现对 Agent、Tool 等元素的编排,使智能体能够处理更多复杂的场景,LangGraph 中有三个核心概念分别是节点(Node)、边(Edge)、有条件边(Conditional Edge),通过这些元素 LangGraph 可以为我们构造一个流程,也就是一个智能体。 Node:节点,可以是 Agent、可以是 Tool,Agent 其实就是利用 LLM 实现的 ReAct 和 Function Call,Tool 就是实现一些业务逻辑的函数; Edge:边,Node 之间的关联,用于协助完成整个工作流的执行; Conditional Edge:条件边,可以通过设置 True 和 False 来实现工作流对于分支的支持

五、LangGraph 技术原理 在上述的流程中,我们分析一下具体的技术原理,Agent 是通过 LLM 实现的 ReAct,具体就是实现一个 Prompt,在 Prompt 中将所有的工具的方法名、方法描述、方法参数等进行描述,让 LLM 对整个问题任务进行分解,并能推荐出合适的工具进行任务处理(如模型支持 Function Call 则可以忽略 Prompt 的构建)。

然后通过 LangGraph 构造的图触发整个流程的执行,LangGraph 在拿到 Agent 推荐的工具时,会按照设置的 Edge 执行 exist,exist 判断 Agent 还有任务要执行,所以执行 action 函数,action 函数执行的入参由 Agent 负责提供,调用由 LangGraph 框架执行,在 action 函数中会具体的执行查询操作,然后再通过 edge 回到 Agent,直到推导出最后的结果。

其实我们会发现 Agent 和 LangChain 中的 Agent 甚至于说 ReAct 都没有特别实质的理念区别,核心就在于 LangGraph 框架搭建了这么一个流程式智能体研发框架,让智能体变得更灵活。

六、LangGraph 对象:图(状态、编译、节点、边) LangGraph 通过图的形式来建模代理工作流。定义代理行为的三大核心组件:

• State(状态):共享的数据结构,代表应用的当前快照。可以是任意Python 类型,但通常为TypedDict 或 Pydantic BaseModel。

• Nodes(节点):执行逻辑的Python 函数,接收当前状态作为输入,执行实际的计算,逻辑操作或副作用(side effect),并返回更新后的状态。节点可以包含LLM(大语言模型)或简单的Python 代码。

• Edges(边):决定下一个要执行的节点的函数,可以是固定的,也可以是基于条件的动态决策。

简单来说:节点干活,边决定接下来做什么。通过组合节点和边,LangGraph 可以创建复杂的循环工作流


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

82 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传