跳到内容

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 应用交互的方式。
  • 远程图:远程图允许您像与本地运行的 LangGraph 应用一样与任何已部署的 LangGraph 应用进行交互。

LangGraph 平台提供了一些不同的部署选项,详见部署选项指南

为何使用 LangGraph 平台?

LangGraph 平台旨在使代理应用的部署无缝且适用于生产环境。

对于更简单的应用,部署 LangGraph 代理可以像使用自己的服务器逻辑一样直接——例如,设置一个 FastAPI 端点并直接调用 LangGraph。

选项 1:使用自定义服务器逻辑进行部署

对于基础的 LangGraph 应用,您可以选择使用自定义服务器基础设施来处理部署。使用像 Hono 这样的框架设置端点,可以快速部署并运行 LangGraph,就像您部署任何其他 JavaScript 应用一样

// 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 平台能够解决这些问题

  • 流式传输支持:随着代理变得越来越复杂,它们通常受益于将 token 输出和中间状态流式传输回用户。如果没有这一点,用户将不得不等待可能很长的操作,且没有反馈。LangGraph 服务器提供多种针对不同应用需求优化的流式传输模式

  • 后台运行:对于处理时间较长的代理(例如,数小时),保持开放连接可能不切实际。LangGraph 服务器支持在后台启动代理运行,并提供轮询端点和 webhook,以有效监控运行状态。

  • 支持长时间运行:普通服务器设置在处理需要长时间完成的请求时,经常会遇到超时或中断。LangGraph 服务器的 API 通过发送定期心跳信号,为这些任务提供了强大的支持,防止在长时间处理过程中出现意外连接关闭。

  • 处理突发流量:某些应用,尤其是那些具有实时用户交互的应用,可能会遇到“突发”请求负载,即大量请求同时到达服务器。LangGraph 服务器包含一个任务队列,即使在高负载下也能确保请求被一致处理而不会丢失。

  • 重复发送消息:在用户驱动的应用中,用户快速发送多条消息是很常见的。如果处理不当,这种“重复发送消息”可能会扰乱代理流程。LangGraph 服务器提供内置策略来处理和管理此类交互。

  • 检查点和内存管理:对于需要持久性(例如,对话内存)的代理,部署一个强大的存储解决方案可能很复杂。LangGraph 平台包括优化的检查点内存存储,无需自定义解决方案即可管理跨会话的状态。

  • 人工干预支持:在许多应用中,用户需要一种方法来干预代理过程。LangGraph 服务器提供专门的人工干预场景端点,简化了将人工监督整合到代理工作流程中的过程。

通过使用 LangGraph 平台,您可以获得一个强大且可扩展的部署解决方案,该解决方案缓解了这些挑战,为您节省了手动实现和维护它们的工作。这使您可以更多地关注构建有效的代理行为,而更少地关注解决部署基础设施问题。