服务器基础架构
除了 Agent Server 本身之外,每个服务器的以下基础架构组件也包含在”数据平面”的广泛定义中:- PostgreSQL:用户、运行和内存数据的持久层。
- Redis:工作器的通信和临时元数据。
- 密钥存储:环境密钥的安全管理。
- 自动缩放器:基于负载缩放服务器容器。
“监听器”应用程序
数据平面”监听器”应用程序定期调用控制平面 API以:- 确定是否应创建新部署。
- 确定是否应更新现有部署(即新修订版)。
- 确定是否应删除现有部署。
PostgreSQL
PostgreSQL 是智能体服务器中所有用户、运行和长期内存数据的持久层。这存储检查点(更多信息请参见此处)、服务器资源(线程、运行、助手和定时任务),以及保存在长期内存存储中的项目(更多信息请参见此处)。Redis
Redis 在每个智能体服务器中用作服务器和队列工作器之间通信的方式,以及存储临时元数据。Redis 中不存储用户或运行数据。通信
智能体服务器中的所有运行都由作为每个部署一部分的后台工作器池执行。为了为这些运行启用某些功能(例如取消和输出流),我们需要服务器和处理特定运行的工作器之间的双向通信通道。我们使用 Redis 来组织该通信。- Redis 列表用作一种机制,一旦创建新运行就唤醒工作器。此列表中只存储哨兵值,没有实际的运行信息。然后由工作器从 PostgreSQL 检索运行信息。
- Redis 字符串和 Redis PubSub 通道的组合用于服务器向适当的工作器传达运行取消请求。
- Redis PubSub 通道由工作器用于在处理运行时广播来自智能体的流输出。服务器中任何打开的
/stream请求都将订阅该通道并在事件到达时将其转发到响应。Redis 中不会存储任何事件。
临时元数据
智能体服务器中的运行可能会因特定故障重试(目前仅针对运行期间遇到的瞬态 PostgreSQL 错误)。为了限制重试次数(目前限制为每次运行 3 次尝试),我们在拾取时在 Redis 字符串中记录尝试编号。除了其 ID 之外,这不包含特定于运行的信息,并在短暂延迟后过期。数据平面功能
本节描述数据平面的各种功能。数据区域
仅适用于云
数据区域仅适用于云部署。
自动扩展
Production 类型部署自动扩展到最多 10 个容器。扩展基于 3 个指标:
- CPU 利用率
- 内存利用率
- 待处理(进行中)运行的数量
静态 IP 地址
仅适用于云
静态 IP 地址仅适用于云部署。
| US | EU |
|---|---|
| 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 |
| 34.59.244.194 | |
| 34.9.99.224 | |
| 34.68.27.146 | |
| 34.41.178.137 | |
| 34.123.151.210 | |
| 34.135.61.140 | |
| 34.121.166.52 | |
| 34.31.121.70 |
自定义 PostgreSQL
可以使用自定义 PostgreSQL 实例而不是控制平面自动创建的实例。指定POSTGRES_URI_CUSTOM 环境变量以使用自定义 PostgreSQL 实例。
多个部署可以共享同一个 PostgreSQL 实例。例如,对于 Deployment A,POSTGRES_URI_CUSTOM 可以设置为 postgres://<user>:<password>@/<database_name_1>?host=<hostname_1>,对于 Deployment B,POSTGRES_URI_CUSTOM 可以设置为 postgres://<user>:<password>@/<database_name_2>?host=<hostname_1>。<database_name_1> 和 database_name_2 是同一实例中的不同数据库,但 <hostname_1> 是共享的。同一数据库不能用于单独的部署。
自定义 Redis
可以使用自定义 Redis 实例而不是控制平面自动创建的实例。指定 REDIS_URI_CUSTOM 环境变量以使用自定义 Redis 实例。 多个部署可以共享同一个 Redis 实例。例如,对于Deployment A,REDIS_URI_CUSTOM 可以设置为 redis://<hostname_1>:<port>/1,对于 Deployment B,REDIS_URI_CUSTOM 可以设置为 redis://<hostname_1>:<port>/2。1 和 2 是同一实例中的不同数据库编号,但 <hostname_1> 是共享的。同一数据库编号不能用于单独的部署。
LangSmith 跟踪
Agent Server 自动配置为向 LangSmith 发送跟踪。有关每个部署选项的详细信息,请参阅下表。| 云 | 混合 | 自托管 |
|---|---|---|
| 必需 跟踪到 LangSmith SaaS。 | 可选 禁用跟踪或跟踪到 LangSmith SaaS。 | 可选 禁用跟踪、跟踪到 LangSmith SaaS 或跟踪到自托管 LangSmith。 |
遥测
Agent Server 自动配置为报告遥测元数据以用于计费目的。有关每个部署选项的详细信息,请参阅下表。| 云 | 混合 | 自托管 |
|---|---|---|
| 遥测发送到 LangSmith SaaS。 | 遥测发送到 LangSmith SaaS。 | 用于气隙许可证密钥的自报告使用情况(审计)。 用于 LangSmith 许可证密钥的遥测发送到 LangSmith SaaS。 |
许可
Agent Server 自动配置为执行许可证密钥验证。有关每个部署选项的详细信息,请参阅下表。| 云 | 混合 | 自托管 |
|---|---|---|
| LangSmith API 密钥针对 LangSmith SaaS 验证。 | LangSmith API 密钥针对 LangSmith SaaS 验证。 | 气隙许可证密钥或平台许可证密钥针对 LangSmith SaaS 验证。 |