智能体课程文档
什么是 LangGraph?
并获得增强的文档体验
开始使用
什么是 LangGraph?
LangGraph
是由 LangChain 开发的框架,用于管理集成 LLM 的应用程序的控制流。
LangGraph 与 LangChain 有何不同?
LangChain 提供了一个标准接口,用于与模型和其他组件进行交互,这对于检索、LLM 调用和工具调用很有用。LangChain 中的类可以在 LangGraph 中使用,但不是必须使用。
这些包是不同的,可以单独使用,但最终,您在网上找到的所有资源都会将这两个包一起使用。
我应该何时使用 LangGraph?
控制与自由
在设计 AI 应用程序时,您会面临控制与自由之间的根本权衡。
- 自由让您的 LLM 有更多空间进行创造性思考并解决意外问题。
- 控制让您能够确保可预测的行为并维护护栏。
代码代理,例如您在 smolagents 中遇到的那些,非常自由。它们可以在一个动作步骤中调用多个工具,创建自己的工具等等。然而,这种行为可能使它们比使用 JSON 的常规代理更难以预测和控制!
LangGraph
处于另一端,当您需要对代理的执行进行“控制”时,它会大放异彩。
当您需要控制应用程序时,LangGraph 尤其有价值。它为您提供了构建遵循可预测过程的应用程序的工具,同时仍然利用了 LLM 的强大功能。
简单来说,如果您的应用程序涉及一系列需要以特定方式协调的步骤,并且在每个连接点都需要做出决策,那么 LangGraph 提供了您所需的结构。
例如,假设我们要构建一个可以回答某些文档中问题的 LLM 助手。
由于 LLM 最擅长理解文本,因此在能够回答问题之前,您需要将其他复杂的模态(图表、表格)转换为文本。然而,这个选择取决于您拥有的文档类型!
我选择将这种分支表示如下:

💡 提示: 左侧不是代理,因为这里不涉及工具调用。但右侧需要编写一些代码来查询 xls(转换为 pandas 并操作它)。
虽然这种分支是确定性的,但您也可以设计根据 LLM 输出进行条件分支,使其成为不确定性的。
LangGraph 擅长的关键场景包括:
- 需要明确控制流程的多步骤推理过程
- 需要在步骤之间保持状态的应用程序
- 结合确定性逻辑和 AI 功能的系统
- 需要人工干预的工作流
- 具有多个组件协同工作的复杂代理架构
本质上,只要有可能,作为一个人,根据每个动作的输出设计一个动作流程,并相应地决定下一步要执行什么。在这种情况下,LangGraph 是适合您的正确框架!
在我看来,LangGraph
是市场上最成熟的代理框架。
LangGraph 如何工作?
LangGraph
的核心是使用有向图结构来定义应用程序的流程
- 节点代表单独的处理步骤(例如调用 LLM、使用工具或做出决策)。
- 边定义了步骤之间可能的转换。
- 状态由用户定义,并在执行期间在节点之间维护和传递。当决定下一个要定位的节点时,我们查看的就是当前状态。
我们将在下一章中更详细地探讨这些基本模块!
它与普通 Python 有何不同?为什么我需要 LangGraph?
您可能会想:“我可以使用带有 if-else 语句的普通 Python 代码来处理所有这些流程,对吧?”
虽然从技术上讲是这样,但 LangGraph 在构建复杂系统方面提供了一些优势,优于普通的 Python。您可以在没有 LangGraph 的情况下构建相同的应用程序,但它为您提供了更易用的工具和抽象。
它包括状态、可视化、日志(跟踪)、内置的人工干预等。
< > 在 GitHub 上更新