LangGraph 服务器¶
概述¶
LangGraph 服务器提供了一个用于创建和管理基于代理的应用程序的 API。它基于助手的概念构建,这些助手是为特定任务配置的代理,并且包括内置的持久性和一个**任务队列**。这个多功能的 API 支持广泛的基于代理的应用程序使用案例,从后台处理到实时交互。
主要功能¶
LangGraph 平台融合了代理部署的最佳实践,因此您可以专注于构建代理逻辑。
- 流式端点:暴露多种不同流模式的端点。我们已经让这些端点即使在长时间运行的代理之间也能正常工作,这些代理可能在连续流事件之间相隔几分钟。
- 后台运行:LangGraph 服务器支持在后台启动助手,并提供用于轮询助手运行状态的端点以及监控运行状态的有效 webhook。
- 支持长时间运行:我们的阻塞端点用于运行助手时会定期发送心跳信号,防止处理长时间请求时意外关闭连接。
- 任务队列:我们添加了一个任务队列,以确保如果请求突发到达也不会丢失任何请求。
- 水平可扩展基础架构:LangGraph 服务器设计为可以水平扩展,允许您根据需要增加或减少使用量。
- 双消息支持:很多时候用户可能会以非预期的方式与您的图互动。例如,一个用户可能会发送一条消息,在图尚未完成运行之前又发送第二条消息。我们将这种情况称为"双消息",并为此增加了四种不同的处理方式。
- 优化检查点器:LangGraph 平台自带一个针对 LangGraph 应用程序进行了优化的检查点器。
- 人机交互端点:我们公开了所有支持人机交互功能所需的端点。
- 内存存储:除了线程级持久化(已在上面由检查点器覆盖)之外,LangGraph 平台还自带一个内存存储。
- 定时任务:内置支持调度任务,使您能够自动化诸如数据清理或批量处理等常规操作。
- webhook:允许您的应用程序向外部系统发送实时通知和数据更新,从而轻松集成第三方服务并在特定事件触发动作。
- 监控:LangGraph 服务器无缝集成了LangSmith监控平台,提供了对应用性能和健康状况的实时洞察。
你在部署什么?¶
当你使用LangGraph Server部署时,你实际上是在部署一个或多个图谱,一个用于持久化的数据库,以及一个任务队列。
图谱¶
当你使用LangGraph Server部署一个图谱时,你实际上是在部署一个“蓝图”,用于创建一个助手。
一个助手是由一个图谱与特定配置设置组合而成的。你可以为每个图谱创建多个助手,每个助手都有独特的设置以适应不同的应用场景,这些场景可以由同一个图谱来服务。
在部署过程中,LangGraph Server会自动为每个图谱创建一个默认助手,使用该图谱的默认配置设置。
你可以通过LangGraph Server API与助手进行交互。
Note
我们常常认为一个图谱实现了一个代理,但实际上图谱并不一定需要实现一个代理。例如,一个图谱可以实现一个简单的聊天机器人,它只支持来回对话,而没有影响任何应用程序控制流的能力。实际上,随着应用变得越来越复杂,一个图谱通常会实现更复杂的流程,可能涉及多个代理协同工作。
持久化和任务队列¶
LangGraph Server利用一个数据库来进行持久化和一个任务队列。
目前,只有Postgres被支持作为LangGraph Server的数据库,以及Redis作为任务队列。
如果你是通过LangGraph Cloud进行部署,这些组件将为你管理。如果你是在自己的基础设施上部署LangGraph Server,你需要自己设置并管理这些组件。
请参阅部署选项指南,了解有关这些组件如何设置和管理的更多信息。
应用结构¶
要部署一个LangGraph Server应用,你需要指定你想要部署的图(可以是多个),以及任何相关的配置设置,如依赖项和环境变量。
阅读应用结构指南以了解如何为部署构建你的LangGraph应用。
LangGraph服务器API¶
LangGraph服务器API允许您创建和管理助手、线程、运行、计划任务等。
LangGraph云API参考提供了关于API端点和数据模型的详细信息。
助手¶
可以将助手视为保存的代理配置。
在构建代理时,快速更改而不改变图逻辑的情况相当常见。例如,仅仅改变提示或LLM选择就可以显著影响代理的行为。助手提供了一种简单的方式来制作和保存这些类型的代理配置更改。
线程¶
一个线程包含一系列运行的累积状态。如果在一个线程上执行一个运行,则助手底层图的状态将被持久化到该线程中。
线程的当前和历史状态可以被检索。为了持久化状态,在执行运行之前必须先创建一个线程。
在某个时间点的线程状态称为检查点。检查点可用于在稍后的时间恢复线程状态。
有关线程和检查点的更多信息,请参阅LangGraph概念指南中的相应部分。
LangGraph云API提供了几个用于创建和管理线程及其状态的端点。更多细节请参阅API参考。
运行¶
一个运行是调用一个助手的实例。每个运行可能有自己的输入、配置和元数据,这可能会影响底层图的执行和输出。运行可以选择在线程上执行。
LangGraph云API提供了几个用于创建和管理运行的端点。更多细节请参阅API参考。
存储¶
存储是一种用于管理持久键值存储的API,可以从任何线程访问。
存储在实现LangGraph应用程序中的记忆方面非常有用。
计划任务¶
有许多情况下,按计划运行助手是有用的。
例如,假设您正在构建一个每天运行并发送当天新闻摘要邮件的助手。您可以使用计划任务来每天晚上8点运行该助手。
LangGraph云支持按用户定义的计划运行的计划任务。用户指定一个计划、一个助手以及一些输入。之后,按照指定的计划,服务器将:
- 使用指定的助手创建一个新的线程
- 将指定的输入发送到该线程
请注意,这会每次都将相同的输入发送到线程。有关创建计划任务的更多信息,请参阅操作指南。
LangGraph云API提供了几个用于创建和管理计划任务的端点。更多细节请参阅API参考。
Webhook¶
Webhook使您的LangGraph云应用能够与外部服务进行事件驱动的通信。例如,您可能希望在对LangGraph云的API调用完成后向另一个服务发出更新。
许多LangGraph云端点接受一个webhook
参数。如果此参数由可以接受POST请求的端点指定,LangGraph云将在运行完成时发送一个请求。
有关更多细节,请参阅相应的操作指南。
相关链接¶
- LangGraph 应用结构指南解释了如何为部署构建LangGraph应用程序。
- LangGraph平台操作指南。
- LangGraph云API参考提供了关于API端点和数据模型的详细信息。