详细内容或原文请订阅后点击阅览
LangChain 与 LangGraph:4 个主要差异以及何时使用每个差异
为您的代理工作流程和系统选择合适工具的实用指南LangChain 与 LangGraph:4 个关键差异以及何时使用每个差异首先出现在 Towards Data Science 上。
来源:走向数据科学我们的生活早在 LangGraph 之前。这清楚地表明 LangGraph 缩小了差距。换句话说,LangGraph 做了一些更复杂或者 LangChain 做不到的事情。
在本文中,我们将讨论 LangChain 和 LangGraph 之间的 4 个关键区别,以及它们如何影响我们为构建代理工作流程而编写的代码。
首先我们要提一下,这些不是竞争工具。 LangGraph是LangChain生态系统的一部分。它是一种建立在 LangChain 之上的扩展。
1. 管道与循环
LangChain是一个有明确方向的管道:
我们将组件链接在一起,但朝一个方向,代码如下所示:
链 = 提示 |型号|解析器
输出 = chain.invoke(输入)
我们仍然可以分支、并行运行步骤以及构建 DAG,但默认抽象是通过管道向前移动数据。
总结文本,然后对其进行分类
然而,当涉及到向后发送时,我们需要编写一个外部Python循环。因此,应用程序会处理其余的事情,而不是 LangChain。
条件边决定下一步去哪里。
由于正常边缘和条件边缘,我们可以毫不费力地路由回较早的节点。这是我用 LangGraph 构建的客户服务代理的图:
Customer代表输入节点,AI Agent是模型,价格和预订引擎是其他节点。我们可以在节点之间来回移动。
2. 无状态与有状态
LangChain 管道本身不保存状态。每个可运行对象通常接收一个输入并返回一个输出。状态以字典、消息或自定义对象的形式向前传递。LangGraph 然后将该更新合并到现有状态中。
