微信扫码
添加专属顾问
我要投稿
LangGraph是Langchain生态中基于图结构的一个框架,使用它可以很方便地构建多智能体。
今天我们借助这个框架,来构建一个作家和读者的多Agent对话系统,尝试让作家构思一部小说,然后由读者提出反馈意见,他们之间通过多轮对话的形式完成任务。其实由此可以扩展出很多类似应用,例如使用LLM合成数据,一个数据构造者,一个批判者来评价构造的质量或者存在的问题,由两个Agent共同构造高质量的数据等等。这种思想在整个机器学习领域也有诸多应用,例如强化学习中的Actor-Critic算法,以及衍生的A2C、A3C等。
使用LangGraph构建多智能体系统,核心是定义节点和边,节点可以理解为完成特定任务的一个智能体,边定义了智能体之间的流转关系,举个简答的例子,比如本文定义的作家和读者,这两个就是LangGraph中的两个节点,他们分别承担各自的任务——提供小说思路和给出反馈,而他们之间的边,定义了什么情况下,话题可以从作家转移给读者,什么情况下可以结束话题。
2 代码
本文对应完整代码已开源,地址在:
https://github.com/Steven-Luo/LLM-Tutorials/blob/main/Langchain/Agent/LangGraph%20Writer%20and%20Reader.ipynb
访问Ollama官方网站,下载并安装即可,本文所使用的LLM是Qwen2.5 7B Instruct模型,运行时需要的内存/现存大约是5.5GB,使用如下命令拉取模型:
主要是Langchain相关的一些包:
小说构思也让LLM生成
下面的代码创建了一个LangGraph工作流来运行模拟。主要组件是:
两个节点:一个用于模拟用户,另一个用于聊天机器人。
图本身,具有条件停止标准。
阅读下面代码中的注释以获取更多信息。
节点
首先,我们定义图中的节点。这些应该接收消息列表并将消息列表返回给ADD到状态。这些将是我们上面的聊天机器人和模拟用户的东西包装器。
注意:这里有一个棘手的问题是哪些消息是ChatBot,那些是模拟用户。因为聊天机器人和我们的模拟用户都是LLM,他们都将重新发送AI消息。我们的状态将是交替的人类和人工智能消息列表。这意味着对于其中一个节点,需要一些逻辑来翻转人工智能和人类角色。在这个例子中,我们将假设人类消息是来自模拟用户的消息。这意味着我们需要模拟用户节点中的一些逻辑来交换人工智能和人类消息。
接下来,定义模拟用户节点,这将涉及一些逻辑来交换消息的角色。
现在开始添加边的逻辑。主逻辑发生在模拟用户开始后,并且应该引导到下面两种情况之一:
回话继续,调用客服机器人
或者当回话完成时停止
回话完成的逻辑是什么呢?我们将定义为人类chatbot回复FINISHED
(查看之前的系统提示),或者回话长度超过6(可以是任意值,只是为了让例子剪短一些)
现在我们可以评估我们的聊天机器人!我们可以使用空消息来调用它(这将模拟让聊天机器人启动初始对话)
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-08-16
关于Langchain/Langgraph框架的流式与非流式返回——invoke/ainvoke/stream/astream
2025-08-12
LangChain+BAML:打造99.4%成功率的知识图谱构建方案
2025-08-09
基于LangChain+LangGraph+LangSmith+Streamlit开发带Web页面交互的Agent
2025-08-06
LangChain 的「记忆压缩术」:聊聊大模型的上下文工程设计之道
2025-08-05
LangChain与LlamaIndex对比
2025-08-05
使用 LangSmith 实现 12 种 AI 智能体评估技术
2025-08-04
基于上下文工程的LangChain人工智能智能体应用
2025-08-03
万字讲透Dify、Coze、LangChain竞品分析
2025-06-05
2025-05-28
2025-07-14
2025-05-28
2025-05-19
2025-06-26
2025-07-14
2025-05-19
2025-05-30
2025-07-16
2025-07-14
2025-07-13
2025-07-05
2025-06-26
2025-06-13
2025-05-21
2025-05-19
2025-05-08