本系列前七篇文章:
- 深入浅出LangGraph AI Agent智能体开发教程(一)—全面认识LangGraph
- 深入浅出LangGraph AI Agent智能体开发教程(二)—LangGraph预构建图API快速创建Agent
- 深入浅出LangGraph AI Agent智能体开发教程(三)—LangGraph工具调用实战
- 深入浅出LangGraph AI Agent智能体开发教程(四)—LangGraph全生态开发工具使用与智能体部署
- 深入浅出LangGraph AI Agent智能体开发教程(五)—LangGraph 数据分析助手智能体项目实战
- 深入浅出LangGraph AI Agent智能体开发教程(六)—LangGraph 底层API入门
- 深入浅出LangGraph AI Agent智能体开发教程(七)—构建条件分支图和循环图
通过上期分享我们掌握了利用LangGraph搭建条件分支图、条件循环图等复杂图的能力,本期分享我们深入利用LangGraph底层API实现多轮问答机器人,并复现方法的ReACT图结构智能体。
本系列分享是笔者结合自己学习工作中使用LangChain&LangGraph经验倾心编写的,力求帮助大家体系化快速掌握LangChain&LangGraph Agent 智能体 AI Agent智能体开发的技能!笔者的LangChain系列教程暂时更完,后面也会实时补充工作实践中的额外知识点,建议大家在学习LangGraph分享前先学习LangChain的基本使用技巧。大家感兴趣可以关注笔者掘金账号和系列专栏。更可关注笔者同名微信公众号: 大模型真好玩, 每期分享涉及的代码均可在公众号私信: LangChain智能体开发获得。
首先通过使用LangGraph底层API搭建多轮对话机器人来学习如何将大语言模型作为节点加入到LangGraph图中。
- 构建图的第一步首先要定义图的结构化状态,代码如下。使用创建具有特定键值类型的字典类来规范状态结构,其中键是一个列表,我们通过注解指定使用函数来处理消息的累积更新。
大家可能对这里使用的函数感到好奇,这个函数有什么作用呢? 为什么不用直接向消息列表中增加消息呢?因为LangGraph图运行时有一套单独的逻辑,直接使用有可能产生bug, 且不易调试。是LangGraph预定义的一个函数,核心逻辑是合并两个消息列表,默认状态为仅附加。函数接收两个参数,一个是消息的基本列表(比如上述的),另一个是要合并到基本列表中的消息列表(或单个消息)。值得注意的是: LangGraph对每条消息都使用ID进行编号,如果合并的列表中包含ID相同的消息,默认行为是使用要合并列表中的新消息替换掉基本列表中相同ID的消息。
- 第二步要添加一个大模型节点,我们命名为,同时定义边连接开始节点与大模型节点。这里初始化大模型使用我们之前讲到的方法,大家不熟悉可参考系列文章深入浅出LangGraph AI Agent智能体开发教程(二)—LangGraph预构建图API快速创建Agent
以上代码构造的图结构如下,是不是非常简单:

- 第三步编译创建好的图,并通过向图结构发送请求,图结构运行完成后返回最终的, 我们可以通过获取本次图运行的消息列表,也可通过得到图结构最后的输出:

- 单轮对话的例子我们已经完成,多轮对话也不在话下。LangGraph多轮对话的原理和LangChain一样,也是通过构造消息列表实现多轮对话的功能,大家可参考文章深入浅出LangChain AI Agent智能体开发教程(四)—LangChain记忆存储与多轮对话机器人搭建, 这里不再赘述, 修改代码如下:

上述分享我们掌握了将大模型接入LangGraph底层图结构的方法,对今天的分享来说以上内容只是开胃小菜,本期分享的终极目标是使用LangGraph 底层 API 复现高级API 预构建ReACT图。

- 定义图状态: 第一步还是定义图状态,它同样只包含一个消息列表,需要用到方法。
- 定义模型和工具: 智能体构建的三大要素:提示词,模型和工具,我们这里先准备模型和工具函数, 模型同样使用, 工具函数访问心知天气API获得当前城市的天气情况。注意需要手动调用方法绑定大模型和工具函数。LangGraph定义工具函数并绑定模型的方法与LangChain一致,前面内容已经详细分享过。大家不熟悉可参考深入浅出LangChain AI Agent智能体开发教程(五)—LangChain接入工具基本流程
- 定义节点和边: ReACT图结构包含两个节点, 一个用于调用模型,一个用于使用工具。节点函数中给大模型提供提示词,使其具备调用天气函数的能力。函数我们首次利用LangGraph三层结构中中间层的节点。大家可以看结构图进行定位:

ReACT图结构除了两个节点外,还需要大模型来判断是直接输出结果还是调用工具函数,很显然需要一个判断条件来构造条件分支图。这里还需要定义方法返回条件来判断结束还是调用工具,如果大模型节点返回结果中包含键,则说明要调用相关函数,否则结束。添加代码如下:
- 定义图: 定义好所有的节点和判断条件后,我们参考ReACT图来定义并编译图。将和节点加入图中并关联相应边,随后调用方法编译可执行图。
- 执行ReACT代理: 这部分代码简单不加赘述,执行结果如下,我们可以看到图成功调用了工具函数并返回结果,一个自定义的ReACT图就完成啦!

本期内容分享如何使用底层API构建多轮对话机器人和复现ReACT图结构智能体。通过定义状态、添加模型节点和工具节点,结合条件分支图实现ReACT图的工具调用与决策循环,并通过天气助手实例演示完整的开发流程,帮助大家掌握LangGraph的灵活性与强大功能。目前的图结构还有很多需要优化的点,例如如何让智能体优雅的保存记忆,如何实现智能体的流式调用提升交互体验等等,我们下期内容继续分享,大家期待一下吧~
本系列分享预计会有20节左右的规模,保证大家看完一定能够掌握LangChain&LangGraph的开发能力,大家感兴趣可关注笔者掘金账号和专栏,更可关注笔者的同名微信公众号:大模型真好玩, 本系列分享的全部代码均可在微信公众号私信笔者: LangChain智能体开发 免费获得。
发布者:Ai探索者,转载请注明出处:https://javaforall.net/243502.html原文链接:https://javaforall.net
