Agents 课程文档

LangGraph 是什么?

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

LangGraph 是什么?

LangGraph 是由 LangChain 开发的框架,用于管理集成 LLM 的应用程序的控制流

LangGraph 与 LangChain 有什么不同?

LangChain 提供了一个标准接口,用于与模型和其他组件交互,这对于检索、LLM 调用和工具调用非常有用。LangChain 中的类可能会在 LangGraph 中使用,但并非必须使用。

这些包是不同的,可以单独使用,但最终,您在网上找到的所有资源都将这两个包结合使用。

我应该何时使用 LangGraph?

控制与自由

在设计 AI 应用程序时,您会面临控制自由之间的基本权衡

  • 自由让您的 LLM 有更多空间发挥创造力并解决意外问题。
  • 控制使您能够确保可预测的行为并保持护栏。

代码 Agents,例如您在 smolagents 中遇到的那些,非常自由。它们可以在单个操作步骤中调用多个工具,创建自己的工具等等。但是,这种行为会使它们比使用 JSON 的常规 Agent 更不可预测且更难以控制!

LangGraph 处于频谱的另一端,当您需要对 Agent 的执行进行“控制”时,它会大放异彩。

当您需要控制您的应用程序时,LangGraph 特别有价值。它为您提供了构建应用程序的工具,该应用程序遵循可预测的流程,同时仍能利用 LLM 的强大功能。

简而言之,如果您的应用程序涉及一系列需要以特定方式编排的步骤,并在每个交汇点做出决策,那么 LangGraph 提供了您需要的结构

例如,假设我们想构建一个 LLM 助手,它可以回答有关某些文档的一些问题。

由于 LLM 最了解文本,因此在能够回答问题之前,您需要将其他复杂的模态(图表、表格)转换为文本。但是,这种选择取决于您拥有的文档类型!

这是一个分支,我选择如下表示

Control flow

💡 提示: 左侧部分不是 agent,因为这里不涉及工具调用。但右侧部分将需要编写一些代码来查询 xls(转换为 pandas 并对其进行操作)。

虽然此分支是确定性的,但您也可以设计取决于 LLM 输出的分支,从而使其不确定。

LangGraph 擅长的关键场景包括

  • 需要显式控制流程的多步骤推理过程
  • 需要在步骤之间持久化状态的应用程序
  • 将确定性逻辑与 AI 功能相结合的系统
  • 需要人机环路干预的工作流程
  • 具有多个组件协同工作的复杂 agent 架构

本质上,只要有可能,作为人类,根据每个操作的输出设计操作流程,并决定接下来执行什么。在这种情况下,LangGraph 是适合您的框架!

在我看来,LangGraph 是市场上最适合生产的 agent 框架。

LangGraph 如何工作?

LangGraph 的核心是使用有向图结构来定义应用程序的流程

  • 节点表示单独的处理步骤(例如调用 LLM、使用工具或做出决策)。
  • 定义了步骤之间可能的转换。
  • 状态是用户定义的,在执行期间维护并在节点之间传递。在决定下一个目标节点时,我们会查看当前状态。

我们将在下一章中更深入地探讨这些基本模块!

它与常规 Python 有什么不同?为什么我需要 LangGraph?

您可能会想:“我可以直接编写带有 if-else 语句的常规 Python 代码来处理所有这些流程,对吧?”

虽然从技术上讲是正确的,但 LangGraph 在构建复杂系统方面比普通 Python 提供了一些优势。您可以在没有 LangGraph 的情况下构建相同的应用程序,但它为您构建了更易于使用的工具和抽象。

它包括状态、可视化、日志记录(跟踪)、内置人机环路等等。

< > GitHub 上更新