本文将向你展示如何在不使用LangSmith用户界面(UI)或控制面板(control plane)的情况下,部署独立的智能体服务器(Agent Servers)。对于将一个或多个智能体(Agent)作为独立服务运行的场景而言,这是最轻量的自托管方案。
准备
- 使用 LangGraph 命令行工具(CLI)在本地测试应用程序。
- 使用 LangGraph 命令行工具(CLI)构建 Docker 镜像(例如执行命令 langgraph build)。
- 数据面板部署需要配置以下环境变量:
- REDIS_URI:Redis实例的连接信息。Redis 将用作发布 - 订阅代理,以支持从后台运行任务中流式输出实时结果。REDIS_URI 的值必须是有效的 Redis 连接 URI。
- DATABASE_URI:Postgres数据库的连接信息。Postgres将用于存储智能助手、对话线程(threads)、任务运行记录,持久化对话线程状态与长期记忆,并以 “恰好一次”(exactly once)语义管理后台任务队列的状态。DATABASE_URI 的值必须是有效的 Postgres 连接 URI。
- LANGSMITH_API_KEY:LangSmith 的 API 密钥。
- LANGGRAPH_CLOUD_LICENSE_KEY:LangSmith的许可证密钥。服务器启动时将使用该密钥执行一次身份验证。
- LANGSMITH_ENDPOINT:若需将调用轨迹(traces)发送至自托管的LangSmith实例,需将LANGSMITH_ENDPOINT设置为该自托管LangSmith实例的主机名。
- 需从你的网络访问(Egress)beacon.langchain.com。若未在 “隔离模式”(air-gapped mode,指与公网完全断开的环境)下运行,此配置是许可证验证与使用情况上报的必需项。更多详情请参考 “网络访问(Egress)” 相关文档。
Kubernetes
使用此Helm图表将智能体服务器(Agent Server)部署到 Kubernetes 集群中。
Docker
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
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 端口启动智能体服务器(Agent Server)(若需修改端口,可通过修改 langgraph-api 服务的端口映射配置实现)。你可通过执行以下命令,验证应用是否正常运行(健康状态):
curl --request GET --url 0.0.0.0:8123/ok
若所有组件均正常运行,你应会看到类似如下的响应信息:
{"ok":true}