LangGraph 项目部署知识点总结

1. 部署概述

LangGraph 应用基于 LangSmith Deployment 构建,它建立在开源的 LangGraph 框架之上,用于开发有状态的应用程序。

  • LangGraph 提供核心抽象和执行模型
  • LangSmith 支持从开发到生产的整个生命周期,包括托管基础设施、可观察性、部署选项、助手和并发控制等。

整个流程将 Agent 应用打包、构建为 Agent Server,并进行部署。


2. 自托管部署的核心组件

组件 角色 功能
Agent Server 核心运行时环境 提供标准化 API,处理执行、状态管理和持久化
LangGraph CLI 命令行工具 本地构建、打包图,并为部署做准备
Studio 集成开发环境 可视化、交互和调试图,可连接本地 Agent Server
Python SDK(自行了解) 开发工具包 编程接口,与已部署的图和 Agent Server 交互
RemoteGraph(自行了解) 本地代理包装器 像调用本地图一样调用远程部署的图
Control Plane(自行了解) 管理和配置层 创建、更新和管理 Agent Server 部署的 UI/API
Data plane(自行了解) 执行层 实际运行图的运行时层,包含 Agent Server 实例及后端(PostgreSQL、Redis 等)

开发者使用 CLI 和 Studio 在本地开发测试图,然后部署为 Agent Server。应用程序通过 SDK、RemoteGraph 或 Agent Server 提供的 API 调用服务。


3. 本地启动与测试

3.1 修改 langgraph.json 配置文件

在配置文件中添加新增的图:

json 复制代码
{
  "$schema": "https://langgra.ph/schema.json",
  "dependencies": ["."],
  "graphs": {
    "house_agent": "./src/agent/graph.py:graph",
    "recommend_agent": "./src/agent/recommend.py:recommended_graph",
    "reserve_agent": "./src/agent/reserve.py:reserve_graph",
    "extend_agent": "./src/agent/extend.py:extend_graph"
  },
  "env": ".env",
  "image_distro": "wolfi"
}

3.2 启动本地开发服务器

bash 复制代码
langgraph dev
  • 该命令以内存模式启动 Agent Server,适合开发和测试。
  • 启动后会提供 API 和 Studio UI 的访问地址。

3.3 测试 Graph

通过 Studio 或 API 发送测试问题,例如:

text 复制代码
在西安,我的预算是1000-2000一个月,帮我推荐4套房子。要求在雁塔区。
我想在北京海淀租个1室1厅1卫,预算5000以内,最好近地铁。
帮我推荐几套房子   # 会触发信息收集中断

4. LangSmith 部署方式

Agent Server 可根据基础设施采用不同部署方式:

方式 说明
云部署(自行研究) 完全托管模式,LangChain 负责基础设施、更新、扩展;从 GitHub 部署;自动 CI/CD;全面访问 LangSmith UI
带 Control Plane 的混合/自托管(自行研究) 本地构建 Docker 镜像,推送到注册表,通过 LangSmith UI 部署到 Kubernetes
独立服务器(本文重点) 直接部署 Agent Server,不通过 Control Plane 和 LangSmith UI,作为独立服务运行

5. 独立部署 Agent Server(详细步骤)

5.1 工作流程

  1. 使用 CLI 或 Studio 在本地定义和测试图
  2. 将应用服务打包为 Docker 镜像
  3. 将 Agent Server 部署到平台:
    • Kubernetes:使用 LangSmith Helm 图表(生产推荐)
    • Docker:在本地开发机、VM、ECS 等运行(适合开发或小规模)

5.2 部署前准备工作

Agent Server 部署时需要以下组件:

  • PostgreSQL:作为数据库,存储所有持久化数据(检查点、助手等)
  • Redis:作为任务队列,用于发布/订阅连接,实现事件实时流传输

若使用 LangSmith 云部署,这些组件自动管理;独立部署需自行搭建。

启动 Redis 容器(示例)
bash 复制代码
sudo docker run -d \
  --name redis-6380 \
  -p 6380:6379 \
  -v redis-data:/data \
  redis:7-alpine \
  redis-server --appendonly yes --requirepass "your_password"
启动 PostgreSQL 容器(示例)
bash 复制代码
docker pull postgres:latest
docker run --name postgres-sql -e POSTGRES_PASSWORD=bit -p 5432:5432 -d postgres
配置 .env 文件
env 复制代码
# DOCKER 必须
DATABASE_URI=postgresql://postgres:bit@192.168.100.233:5432/postgres
REDIS_URI=redis://:bite%40123@192.168.100.233:6380

5.3 部署姿势 1:构建 Docker 镜像并运行

使用 langgraph build 命令构建镜像。

bash 复制代码
sudo langgraph build -t house-agent-image

查看镜像:

bash 复制代码
sudo docker image list
# REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
# house-agent-image   latest    7884c6e8d937   39 minutes ago 626MB

运行容器(指定 .env 文件,映射端口):

bash 复制代码
sudo docker run --env-file .env -p 8001:8000 house-agent-image
# Starting API server
  • 默认端口为 8000
  • 必须设置 REDIS_URIDATABASE_URI

5.4 部署姿势 2:生成 Dockerfile 并组合 Docker Compose

生成 Dockerfile
bash 复制代码
sudo langgraph dockerfile -c langgraph.json Dockerfile

该命令将 langgraph.json 中的配置转换成 Dockerfile 命令。每次更新 langgraph.json 后需重新运行。

编写 Docker Compose 文件

方案一:仅包含服务(使用已有的 Redis 和 PostgreSQL)

yaml 复制代码
volumes:
  langgraph-data:
    driver: local
services:
  langgraph-api:
    build: .
    ports:
      - "8002:8000"
    env_file:
      - .env

方案二:完整包含 Redis + PostgreSQL + Agent Server

yaml 复制代码
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
启动服务
bash 复制代码
sudo docker compose up
# 源代码更新后可重新构建
sudo docker compose up --build 服务名

5.5 部署姿势 3:使用 langgraph up 命令

bash 复制代码
sudo langgraph up -p 8000
  • 该命令依赖 Docker,会构建并启动 LangGraph API 服务
  • 查看镜像:
bash 复制代码
sudo docker image list
# REPOSITORY              TAG       IMAGE ID       CREATED        SIZE
# house-langgraph-api     latest    90ae2bcbab92   39 minutes ago 626MB
可能遇到的问题
  • .envDATABASE_URI 指向与之前本地使用的 PostgreSQL 同一库,可能导致数据库迁移失败
    原因:checkpoints 表的 thread_idtext 类型,而 thread 表的 thread_iduuid 类型,类型不一致无法建立外键关系。
    解决方案:新建一个数据库,实现环境隔离。

6. 配置文件关键说明

6.1 langgraph.json 主要字段(总结)

字段 必需 描述
$schema Schema 验证 URL
dependencies 依赖项(如 . 表示本地包,或路径、包名)
graphs 图定义映射,格式 {"图ID": "文件路径:导出对象"}
auth 自定义认证配置
base_image 基础 Docker 镜像
image_distro Linux 发行版(debian/wolfi/bookworm/bullseye
env 环境变量(文件路径或键值对)
store 存储配置(语义搜索索引、TTL)
checkpointer 检查点配置(TTL、序列化)
http HTTP 服务器配置(CORS、中间件等)
webhooks 出站 Webhook 配置
python_version Python 版本(3.11/3.12/3.13)
node_version Node.js 版本
pip_installer 包安装器(auto/pip/uv
api_version LangGraph API 服务器语义版本

6.2 .env 环境变量(示例)

env 复制代码
LANGSMITH_PROJECT=new-agent2
LANGSMITH_API_KEY=lsv2...
LANGSMITH_TRACING=true
OPENAI_API_KEY=...
DATABASE_URI=postgresql://...
REDIS_URI=redis://...

7. 项目扩展(自行研究,简要提及)

PDF 最后列举了可进一步探索的方向:

  1. 主图中进行消息管理:在适当位置进行历史会话修剪、总结,避免消息过多导致 LLM 调用错误。
  2. 结构化输出用户期望信息:与数据库表字段映射,生成更准确的 SQL。
  3. 执行 SQL 前加入中断:人工审核 SQL 准确性。
  4. 自定义流式输出:前端展示更详细、流式的执行过程。

8. 总结

  • LangGraph 项目部署依赖 Agent Server + PostgreSQL + Redis
  • 本地开发使用 langgraph dev 快速测试。
  • 独立部署可通过构建 Docker 镜像并运行,或使用 dockerfile + docker compose,或 langgraph up 命令。
  • 必须正确配置 langgraph.json.env,注意数据库迁移时的类型兼容问题。
  • 部署后可通过 API 或 Studio 与 Agent Server 交互,实现完整的智能应用生命周期管理。
相关推荐
云烟成雨TD3 小时前
LlamaIndex 系列【31】检索增强策略:命名实体识别(NER)
ai·agent·rag·llamaindex
2601_954811824 小时前
AI科学实验室自律系统:闭环自动化与智能实验设计技术路径 — 自动化技术
ai
2601_954811825 小时前
AI智能教育多智能体协同:备教辅全链路架构实现 — 技术架构
ai
Java后端的Ai之路5 小时前
Python进阶探索17 - Python中的深拷贝与浅拷贝
人工智能·python·ai·浅拷贝·深拷贝
龙智DevSecOps解决方案6 小时前
AI驱动的知识管理指南:基于Atlassian Intelligence、Rovo、Teamwork Collection打造团队知识引擎
ai·atlassian·需求管理·团队协作·知识管理
李燚6 小时前
Agent 要用 API key,但明文一次都不能进模型——Secret Runtime 落地实录(第110篇)
ai·agent·credential·secret·eino·deepflux·secret runtime
奇牙coding6 小时前
gpt-5.6-luna 接入踩坑实录:model_not_found 排查与 reasoning_summary 字段使用说明
ai
霸道流氓气质7 小时前
Prompt 工程最佳实践与企业级模板库建设
ai
海带紫菜菠萝汤7 小时前
本周 AI 观察:嘴上喊着降速,手上全踩油门
人工智能·深度学习·ai·开源·大模型
全栈技术负责人7 小时前
让 Agent 动手前先“听懂人话”:意图识别插件的设计与实践
ai·ai编程