随着GPT-5和Gemini 2.5 Pro等强大人工智能模型的兴起,利用这些模型的智能体框架也日益增多。这些框架通过抽象化工具调用、智能体状态管理以及人机协作等诸多挑战,简化了与AI模型协同工作的过程。
因此,本文将深入探讨LangGraph,一个备受关注的智能体AI框架。文章将利用LangGraph开发一个简单的智能体应用程序,并通过几个关键步骤突出智能体AI软件包的优势。此外,还将探讨使用LangGraph及其他类似智能体框架的优缺点。
本文并非由LangGraph赞助创作。选择此框架仅仅因为它目前是市场上最主流的选项之一。当然,还有许多其他优秀的替代方案,例如:
- LangChain
- LlamaIndex
- CrewAI

此图展示了一个可以使用LangGraph实现的高级AI工作流示例。该工作流包含多个路由步骤,每个步骤都导向不同的功能处理器,以有效响应用户请求。图片由作者提供。
为什么需要智能体框架?
市面上有许多宣称能简化应用程序编程的软件包。在许多情况下,这些软件包反而可能带来反效果,因为它们可能会使代码变得晦涩难懂,在生产环境中表现不佳,有时甚至使调试变得更加困难。
然而,关键在于找到那些通过抽象化样板代码来简化应用程序的软件包。这一原则在创业领域常被以下引言所强调:
专注于解决您正在尝试解决的精确问题。所有其他(此前已解决的问题)都应外包给其他应用程序。
智能体框架之所以必要,是因为它抽象了许多开发者不愿处理的复杂性:
- **状态维护**:不仅包括消息历史,还包括在执行RAG(检索增强生成)等任务时收集到的所有其他信息。
- **工具使用**:开发者无需自行设置执行工具的逻辑。相反,只需简单定义工具,让智能体框架来处理如何调用这些工具。(这对于并行和异步工具调用尤其重要)
因此,使用智能体框架可以抽象掉诸多复杂环节,从而使开发者能够专注于产品的核心部分。
LangGraph基础
为了开始LangGraph的实现,首先建议查阅其官方文档,内容涵盖:
- 基本聊天机器人实现
- 工具使用
- 状态的维护与更新
顾名思义,LangGraph基于构建图(Graph)并在每次请求时执行该图的理念。在一个图中,可以定义:
- **状态(State)**:当前内存中保留的信息。
- **节点(Nodes)**:通常是大型语言模型(LLM)或工具调用,例如对用户意图进行分类,或回答用户的问题。
- **边(Edges)**:条件逻辑,用于决定下一步应访问哪个节点。
所有这些都源于基本的图论概念。
实现工作流

本文将创建一个如图所示的智能体工作流,其中用户查询将作为起点。此查询随后被路由到三个选项之一:向数据库添加新文档、从数据库删除文档,或查询数据库中的文档。图片由作者提供。
实践被认为是最佳学习方式之一。因此,本文将利用LangGraph实现一个简单的工作流。关于构建此类工作流的详细信息,可以查阅其工作流文档,该文档基于Anthropic的《构建高效智能体》博客文章(一篇备受推崇的智能体文章,此前已在多篇文章中提及,强烈推荐阅读)。
将构建一个简单的文档处理工作流,其中用户可以:
- 创建带文本的文档
- 删除文档
- 搜索文档
为此,将创建以下工作流:
- **检测用户意图**:用户是想创建文档、删除文档还是搜索文档?
- **处理不同意图**:根据第一步的结果,将有不同的流程来处理每种意图。
当然,也可以简单地定义所有工具,并赋予智能体创建/删除/搜索文档的权限。然而,如果希望根据意图执行更多操作,首先进行意图分类路由步骤是更推荐的方法。
加载导入库和语言模型
首先,需要加载所需的导入库和语言模型。示例中将使用AWS Bedrock,但也可以使用其他提供商,具体可参考此教程的第三步。
