主题
本指南将向您展示如何部署独立的 智能体服务器,而无需 LangSmith UI 或控制平面。这是运行一个或少数几个智能体作为独立服务的最轻量级自托管选项。
此部署选项提供了灵活性,但需要您自行管理基础设施和配置。
对于生产工作负载,请考虑自托管完整的 LangSmith 平台 或使用控制平面进行部署,它们提供了标准化的部署模式和基于 UI 的管理。
这是直接部署智能体服务器(无需 LangSmith 平台)的设置页面。
请查看自托管选项 以了解:
- 独立服务器:本指南涵盖的内容(无 UI,仅服务器)。
- LangSmith:用于包含 UI 的完整 LangSmith 平台。
- LangSmith 部署:用于基于 UI 的部署管理。
在继续之前,请查看独立服务器概述。
先决条件
- 使用 LangGraph CLI 在本地测试您的应用程序。
- 使用 LangGraph CLI 构建 Docker 镜像(即
langgraph build)。 - 数据平面部署需要以下环境变量。
REDIS_URI:连接到 Redis 实例的详细信息。Redis 将用作发布-订阅代理,以实现从后台运行流式传输实时输出。REDIS_URI的值必须是有效的 Redis 连接 URI。
共享 Redis 实例 多个自托管部署可以共享同一个 Redis 实例。例如,对于 部署 A,REDIS_URI 可以设置为 redis://<hostname_1>:<port>/1;对于 部署 B,REDIS_URI 可以设置为 redis://<hostname_1>:<port>/2。
1 和 2 是同一实例中的不同数据库编号,但 <hostname_1> 是共享的。不能将相同的数据库编号用于不同的部署。
2. `DATABASE_URI`:Postgres 连接详细信息。Postgres 将用于存储助手、线程、运行、持久化线程状态和长期记忆,并使用“恰好一次”语义管理后台任务队列的状态。`DATABASE_URI` 的值必须是有效的 [Postgres 连接 URI](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS)。
共享 Postgres 实例 多个自托管部署可以共享同一个 Postgres 实例。例如,对于 部署 A,DATABASE_URI 可以设置为 postgres://<user>:<password>@/<database_name_1>?host=<hostname_1>;对于 部署 B,DATABASE_URI 可以设置为 postgres://<user>:<password>@/<database_name_2>?host=<hostname_1>。
<database_name_1> 和 database_name_2 是同一实例中的不同数据库,但 <hostname_1> 是共享的。不能将相同的数据库用于不同的部署。
3. `LANGSMITH_API_KEY`:LangSmith API 密钥。
4. `LANGGRAPH_CLOUD_LICENSE_KEY`:LangSmith 许可证密钥。这将在服务器启动时用于一次性身份验证。
5. `LANGSMITH_ENDPOINT`:要将追踪发送到[自托管的 LangSmith](/langsmith/self-hosted) 实例,请将 `LANGSMITH_ENDPOINT` 设置为自托管 LangSmith 实例的主机名。
- 从您的网络可以访问
https://beacon.langchain.com。如果未在隔离模式下运行,则许可证验证和使用情况报告需要此访问。有关更多详细信息,请参阅出口访问文档。
Kubernetes
使用此 Helm chart 将智能体服务器部署到 Kubernetes 集群。
Docker
运行以下 docker 命令:
shell
docker run \
--env-file .env \
-p 8123:8000 \
-e REDIS_URI="foo" \
-e DATABASE_URI="bar" \
-e LANGSMITH_API_KEY="baz" \
my-image- 您需要将
my-image替换为先决条件步骤中构建的镜像名称(来自langgraph build),并且应为REDIS_URI、DATABASE_URI和LANGSMITH_API_KEY提供适当的值。 - 如果您的应用程序需要额外的环境变量,可以以类似的方式传递它们。
Docker Compose
Docker Compose YAML 文件:
yml
volumes:
langgraph-data:
driver: local
services:
langgraph-redis:
image: redis:6
healthcheck:
test: redis-cli ping
interval: 5s
timeout: 1s
retries: 5
langgraph-postgres:
image: postgres:16
ports:
- "5432:5432"
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- langgraph-data:/var/lib/postgresql/data
healthcheck:
test: pg_isready -U postgres
start_period: 10s
timeout: 1s
retries: 5
interval: 5s
langgraph-api:
image: ${IMAGE_NAME}
ports:
- "8123:8000"
depends_on:
langgraph-redis:
condition: service_healthy
langgraph-postgres:
condition: service_healthy
env_file:
- .env
environment:
REDIS_URI: redis://langgraph-redis:6379
LANGSMITH_API_KEY: ${LANGSMITH_API_KEY}
DATABASE_URI: postgres://postgres:postgres@langgraph-postgres:5432/postgres?sslmode=disable您可以在同一文件夹中使用此 Docker Compose 文件运行命令 docker compose up。
这将在端口 8123 上启动一个智能体服务器(如果您想更改此端口,可以通过更改 langgraph-api 服务中的端口映射来实现)。您可以通过运行以下命令来测试应用程序是否健康:
shell
curl --request GET --url 0.0.0.0:8123/ok假设一切运行正常,您应该会看到类似以下的响应:
shell
{"ok":true}