LangGraph 平台¶
概览¶
LangGraph 平台是一个商业解决方案,用于将代理应用程序部署到生产环境,它基于开源的 LangGraph 框架构建。
LangGraph 平台由多个组件组成,这些组件协同工作,以支持 LangGraph 应用程序的开发、部署、调试和监控
- LangGraph 服务器:该服务器定义了一个规范的 API 和架构,其中融入了部署代理应用程序的最佳实践,使您可以专注于构建您的代理逻辑,而不是开发服务器基础设施。
- LangGraph Studio:LangGraph Studio 是一个专门的 IDE,可以连接到 LangGraph 服务器,以实现应用程序的本地可视化、交互和调试。
- LangGraph CLI:LangGraph CLI 是一个命令行界面,可帮助与本地 LangGraph 进行交互
- Python/JS SDK:Python/JS SDK 提供了一种以编程方式与已部署的 LangGraph 应用程序进行交互的方法。
- 远程图:RemoteGraph 允许您与任何已部署的 LangGraph 应用程序进行交互,就像它在本地运行一样。
LangGraph 平台提供了几种不同的部署选项,在部署选项指南中进行了描述。
为什么使用 LangGraph 平台?¶
LangGraph 平台旨在使部署代理应用程序变得无缝且可用于生产环境。
对于更简单的应用程序,部署 LangGraph 代理可以像使用您自己的服务器逻辑一样简单——例如,设置一个 FastAPI 端点并直接调用 LangGraph。
选项 1:使用自定义服务器逻辑部署¶
对于基本的 LangGraph 应用程序,您可以选择使用自定义服务器基础设施来处理部署。使用诸如 Hono 之类的框架设置端点,使您可以像部署任何其他 JavaScript 应用程序一样快速部署和运行 LangGraph
// index.ts
import { Hono } from "hono";
import { StateGraph } from "@langchain/langgraph";
const graph = new StateGraph(...)
const app = new Hono();
app.get("/foo", (c) => {
const res = await graph.invoke(...);
return c.json(res);
});
这种方法适用于需求简单的应用程序,并为您提供对部署设置的完全控制。例如,您可能会将其用于不需要长时间运行会话或持久内存的单助手应用程序。
选项 2:利用 LangGraph 平台进行复杂部署¶
随着您的应用程序规模扩大或添加复杂功能,部署要求通常会随之发展。运行具有更多节点、更长处理时间或需要持久内存的应用程序可能会引入一些挑战,这些挑战很快就会变得耗时且难以手动管理。LangGraph 平台旨在无缝处理这些挑战,使您可以专注于代理逻辑而不是服务器基础设施。
以下是在复杂部署中出现的一些常见问题,LangGraph 平台可以解决这些问题
-
流式传输支持:随着代理变得越来越复杂,它们通常会从将令牌输出和中间状态流式传输回用户中受益。如果没有这个,用户将被迫等待可能很长的操作,而没有反馈。LangGraph 服务器提供了针对各种应用程序需求优化的多种流式传输模式。
-
后台运行:对于需要较长时间处理的代理(例如,数小时),保持打开的连接可能是不切实际的。LangGraph 服务器支持在后台启动代理运行,并提供轮询端点和 Webhook 以有效地监控运行状态。
-
支持长时间运行:当处理需要很长时间才能完成的请求时,原始服务器设置通常会遇到超时或中断。LangGraph 服务器的 API 通过发送定期的心跳信号为这些任务提供强大的支持,从而防止在长时间运行过程中意外关闭连接。
-
处理突发性:某些应用程序,尤其是那些具有实时用户交互的应用程序,可能会遇到“突发”请求负载,其中大量请求同时冲击服务器。LangGraph 服务器包含一个任务队列,即使在重负载下,也能确保一致地处理请求而不会丢失。
-
双重文本:在用户驱动的应用程序中,用户快速发送多条消息是很常见的。如果不正确处理,这种“双重文本”可能会中断代理流程。LangGraph 服务器提供了内置策略来解决和管理此类交互。
-
检查点和内存管理:对于需要持久性的代理(例如,对话内存),部署可靠的存储解决方案可能很复杂。LangGraph 平台包括优化的检查点和内存存储,无需自定义解决方案即可跨会话管理状态。
-
人机环路支持:在许多应用程序中,用户需要一种干预代理过程的方法。LangGraph 服务器为人机环路场景提供了专门的端点,简化了将人工监督集成到代理工作流程中的过程。
通过使用 LangGraph 平台,您可以访问一个强大、可扩展的部署解决方案,该解决方案可以缓解这些挑战,从而节省您手动实施和维护它们的工作。这使您可以更多地专注于构建有效的代理行为,而更少地关注解决部署基础设施问题。