跳转至

LangGraph 数据平面

术语"数据平面"广泛用于指 LangGraph 服务器(部署)、每个服务器的相应基础设施,以及持续轮询来自 LangGraph 控制平面的更新的"监听器"应用程序。

服务器基础设施

除了 LangGraph 服务器本身之外,以下每个服务器的基础设施组件也包含在"数据平面"的广泛定义中:

  • Postgres
  • Redis
  • 密钥存储
  • 自动扩展器

"监听器"应用程序

数据平面"监听器"应用程序定期调用控制平面 API以:

  • 确定是否应创建新部署。
  • 确定是否应更新现有部署(即新修订)。
  • 确定是否应删除现有部署。

换句话说,数据平面"监听器"读取控制平面的最新状态(期望状态)并采取行动来协调未完成的部署(当前状态)以匹配最新状态。

Postgres

Postgres 是 LangGraph 服务器中所有用户、运行和长期记忆数据的持久化层。它存储检查点(有关更多信息,请参阅此处)、服务器资源(线程、运行、助手和定时任务),以及保存在长期记忆存储中的项目(有关更多信息,请参阅此处)。

Redis

Redis 在每个 LangGraph 服务器中用作服务器和队列工作器通信的方式,并存储临时元数据。用户或运行数据不存储在 Redis 中。

通信

LangGraph 服务器中的所有运行都由每个部署中的后台工作器池执行。为了启用这些运行的某些功能(例如取消和输出流式传输),我们需要服务器和处理特定运行的工作器之间的双向通信通道。我们使用 Redis 来组织该通信。

  1. Redis 列表用作一种机制,在创建新运行时立即唤醒工作器。此列表中仅存储哨兵值,没有实际的运行信息。然后工作器从 Postgres 检索运行信息。
  2. Redis 字符串和 Redis PubSub 通道的组合用于服务器向适当的工作器传达运行取消请求。
  3. 工作器使用 Redis PubSub 通道在处理运行时从智能代理广播流式输出。服务器中任何打开的 /stream 请求都将订阅该通道,并在事件到达时将其转发到响应。任何时候都不会在 Redis 中存储任何事件。

临时元数据

LangGraph 服务器中的运行可能会因特定故障而重试(目前仅针对运行期间遇到的瞬时 Postgres 错误)。为了限制重试次数(目前每次运行限制为 3 次尝试),我们在拾取运行时将尝试次数记录在 Redis 字符串中。除了其 ID 之外,它不包含任何特定于运行的信息,并在短暂的延迟后过期。

数据平面功能

本节描述数据平面的各种功能。

数据区域

仅适用于 Cloud SaaS

数据区域仅适用于 Cloud SaaS 部署。

部署可以在 2 个数据区域中创建:美国和欧盟

部署的数据区域由创建部署的 LangSmith 组织的数据区域决定。部署和部署的底层数据库无法在数据区域之间迁移。

自动扩展

生产版类型部署会自动扩展到 10 个容器。扩展基于 3 个指标:

  1. CPU 利用率
  2. 内存利用率
  3. 待处理(进行中)的运行数量

对于 CPU 利用率,自动扩展器的目标是 75% 的利用率。这意味着自动扩展器将向上或向下扩展容器数量,以确保 CPU 利用率达到或接近 75%。对于内存利用率,自动扩展器的目标同样是 75% 的利用率。

对于待处理运行的数量,自动扩展器的目标是 10 个待处理运行。例如,如果当前容器数量为 1,但待处理运行数量为 20,自动扩展器将把部署扩展到 2 个容器(20 个待处理运行 / 2 个容器 = 每个容器 10 个待处理运行)。

每个指标独立计算,自动扩展器将根据导致最大容器数量的指标来确定扩展操作。

缩减操作在采取任何行动之前会延迟 30 分钟。换句话说,如果自动扩展器决定缩减部署,它将首先等待 30 分钟,然后再缩减。30 分钟后,将重新计算指标,如果重新计算的指标导致的容器数量低于当前数量,则部署将缩减。否则,部署将保持扩展状态。这个"冷却"期确保部署不会过于频繁地扩展和缩减。

静态 IP 地址

仅适用于 Cloud SaaS

静态 IP 地址仅适用于 Cloud SaaS 部署。

2025 年 1 月 6 日之后创建的部署的所有流量都将通过 NAT 网关。此 NAT 网关将根据数据区域拥有多个静态 IP 地址。有关静态 IP 地址列表,请参阅下表:

美国 欧盟
35.197.29.146 34.13.192.67
34.145.102.123 34.147.105.64
34.169.45.153 34.90.22.166
34.82.222.17 34.147.36.213
35.227.171.135 34.32.137.113
34.169.88.30 34.91.238.184
34.19.93.202 35.204.101.241
34.19.34.50 35.204.48.32

自定义 Postgres

Info

自定义 Postgres 实例仅适用于自托管数据平面自托管控制平面部署。

可以使用自定义 Postgres 实例,而不是控制平面自动创建的实例。指定 POSTGRES_URI_CUSTOM 环境变量以使用自定义 Postgres 实例。

多个部署可以共享同一个 Postgres 实例。例如,对于部署 APOSTGRES_URI_CUSTOM 可以设置为 postgres://<user>:<password>@/<database_name_1>?host=<hostname_1>,对于部署 BPOSTGRES_URI_CUSTOM 可以设置为 postgres://<user>:<password>@/<database_name_2>?host=<hostname_1><database_name_1>database_name_2 是同一实例中的不同数据库,但 <hostname_1> 是共享的。同一个数据库不能用于不同的部署

自定义 Redis

Info

自定义 Redis 实例仅适用于自托管数据平面自托管控制平面部署。

可以使用自定义 Redis 实例,而不是控制平面自动创建的实例。指定 REDIS_URI_CUSTOM 环境变量以使用自定义 Redis 实例。

多个部署可以共享同一个 Redis 实例。例如,对于部署 AREDIS_URI_CUSTOM 可以设置为 redis://<hostname_1>:<port>/1,对于部署 BREDIS_URI_CUSTOM 可以设置为 redis://<hostname_1>:<port>/212 是同一实例中的不同数据库编号,但 <hostname_1> 是共享的。同一个数据库编号不能用于不同的部署

LangSmith 跟踪

LangGraph 服务器自动配置为向 LangSmith 发送跟踪。有关每个部署选项的详细信息,请参阅下表。

Cloud SaaS 自托管数据平面 自托管控制平面 独立容器
必需

跟踪到 LangSmith SaaS。
可选

禁用跟踪或跟踪到 LangSmith SaaS。
可选

禁用跟踪或跟踪到自托管 LangSmith。
可选

禁用跟踪、跟踪到 LangSmith SaaS 或跟踪到自托管 LangSmith。

遥测

LangGraph 服务器自动配置为报告用于计费目的的遥测元数据。有关每个部署选项的详细信息,请参阅下表。

Cloud SaaS 自托管数据平面 自托管控制平面 独立容器
遥测发送到 LangSmith SaaS。 遥测发送到 LangSmith SaaS。 气隙许可证密钥的自报告使用(审计)。

LangGraph Platform 许可证密钥的遥测发送到 LangSmith SaaS。
气隙许可证密钥的自报告使用(审计)。

LangGraph Platform 许可证密钥的遥测发送到 LangSmith SaaS。

许可

LangGraph 服务器自动配置为执行许可证密钥验证。有关每个部署选项的详细信息,请参阅下表。

Cloud SaaS 自托管数据平面 自托管控制平面 独立容器
针对 LangSmith SaaS 验证 LangSmith API 密钥。 针对 LangSmith SaaS 验证 LangSmith API 密钥。 气隙许可证密钥或针对 LangSmith SaaS 验证的 LangGraph Platform 许可证密钥。 气隙许可证密钥或针对 LangSmith SaaS 验证的 LangGraph Platform 许可证密钥。