使用 LangGraph 进行代理开发¶
LangGraph 提供了低级原语和高级预构建组件,用于构建基于代理的应用程序。本节重点介绍预构建的、可重用的组件,旨在帮助您快速可靠地构建代理系统,而无需从头开始实现编排、内存或人工反馈处理。
什么是代理?¶
一个代理由三个组件组成:一个大型语言模型(LLM)、一套它可以使用的工具,以及一个提供指令的提示。
LLM 在一个循环中运行。在每次迭代中,它选择一个工具来调用,提供输入,接收结果(一个观察),并使用该观察来指导下一步行动。该循环持续进行,直到满足停止条件——通常是当代理收集了足够的信息以响应用户时。
主要特点¶
LangGraph 包含构建健壮、生产就绪的代理系统所必需的几项功能
- 内存集成:原生支持短期(基于会话)和长期(跨会话持久化)内存,从而实现聊天机器人和助手的有状态行为。
- 人机协作控制:执行可以无限期暂停以等待人工反馈——这与仅限于实时交互的基于 WebSocket 的解决方案不同。这使得在工作流的任何点进行异步批准、更正或干预成为可能。
- 流式传输支持:代理状态、模型标记、工具输出或组合流的实时流式传输。
- 部署工具:包括无基础设施部署工具。LangGraph 平台支持测试、调试和部署。
- Studio:用于检查和调试工作流的可视化 IDE。
- 支持多种用于生产的部署选项。
高级构建块¶
LangGraph 附带一套预构建组件,可实现常见的代理行为和工作流。这些抽象构建在 LangGraph 框架之上,提供更快的生产路径,同时保持高级定制的灵活性。
使用 LangGraph 进行代理开发,您可以专注于应用程序的逻辑和行为,而不是构建和维护支持状态、内存和人工反馈的基础设施。
包生态系统¶
高级组件被组织成几个包,每个包都有特定的焦点。
包 | 描述 | 安装 |
---|---|---|
langgraph |
预构建组件,用于创建代理 | npm install @langchain/langgraph @langchain/core |
langgraph-supervisor |
用于构建主管代理的工具 | npm install @langchain/langgraph-supervisor |
langgraph-swarm |
用于构建群体多代理系统的工具 | npm install @langchain/langgraph-swarm |
langchain-mcp-adapters |
与MCP 服务器的接口,用于工具和资源集成 | npm install @langchain/mcp-adapters |
agentevals |
用于评估代理性能的实用程序 | npm install agentevals |
可视化代理图¶
使用以下工具可视化由createReactAgent
生成的图,并查看相应代码的概述。它允许您探索代理的基础设施,如以下各项的存在所定义:
tools
:代理可以用来执行任务的工具列表(函数、API 或其他可调用对象)。preModelHook
:在调用模型之前调用的函数。它可以用于精简消息或执行其他预处理任务。postModelHook
:在调用模型之后调用的函数。它可以用于实现防护措施、人机协作流程或其他后处理任务。responseFormat
:用于约束最终输出类型的数据结构(通过 Zod 模式)。
功能
图
以下代码片段展示了如何使用createReactAgent
创建上述代理(和底层图)