Skip to main content
本指南介绍如何在本地开发和测试代理服务器应用程序。LangGraph CLI 提供了两个用于本地开发的命令,每个命令针对工作流的不同阶段进行了优化:
  • langgraph dev:用于快速迭代的轻量级开发服务器。
  • langgraph up:用于验证的类生产环境测试环境。
功能langgraph devlanggraph up
需要 Docker
安装pip install langgraph-cli[inmem]pip install langgraph-cli
主要用例快速开发与测试类生产环境验证
状态持久化内存中并序列化到本地目录PostgreSQL
热重载是(默认)可选(--watch 标志)
默认端口20248123
资源使用轻量级较重(为服务器、PostgreSQL 和 Redis 构建并运行独立的 Docker 容器)
IDE 调试内置 DAP 支持常规容器调试
自定义认证是(需要许可证密钥)
有关完整的参考详情,请参阅 LangGraph CLI 参考 页面。

开发

以下是构建应用程序时的典型工作流:
阶段工具目的
开发与本地测试langgraph dev使用热重载编写和迭代您的图
验证langgraph up使用完整堆栈测试类生产环境行为
部署langgraph deploy自信地部署到生产环境

推荐工作流

  1. 日常开发:使用 langgraph dev 进行快速迭代。
  2. 定期验证:使用 langgraph up 测试重大更改。
  3. 部署前检查:运行 langgraph up --recreate 进行全新构建。
  4. 部署:通过 LangSmith UI控制平面 API 推送到生产环境。

langgraph dev

langgraph dev 命令直接在您的环境中运行一个轻量级服务器,专为活跃开发期间的速度和便利性而设计。主要功能包括:
  • 无需 Docker:直接在您的环境中运行。
  • 热重载:更改代码时自动重新加载。
  • 快速启动:几秒钟内准备就绪。
  • 内置 调试适配器协议 支持:将您的 IDE 调试器附加到服务器,进行行级断点和调试。
  • 本地存储:状态持久化到本地目录。
dev 服务器使用与生产环境相同的集成测试套件进行测试,以确保其在开发期间的行为相同,同时使用最少的资源。
在开始之前,请确保您已具备:
  • LangSmith 的 API 密钥(免费注册)。
  • 用于 Python 的 uv 或用于 TypeScript 的 npx
1

创建 LangGraph 应用

new-langgraph-project-python 模板new-langgraph-project-js 模板 创建一个新应用。此模板演示了一个单节点应用程序,您可以使用自己的逻辑进行扩展。
uvx --from langgraph-cli@latest langgraph new path/to/your/app --template new-langgraph-project-python
其他模板
如果您使用 langgraph new 而未指定模板,您将看到一个交互式菜单,允许您从可用模板列表中进行选择。
2

安装依赖

cd path/to/your/app
uv sync --dev -U
3

启动代理服务器

uv run langgraph dev
示例输出:
>    Ready!
>
>    - API: [http://localhost:2024](http://localhost:2024/)
>
>    - Docs: http://localhost:2024/docs
>
>    - Studio Web UI: https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024
4

测试 API

  1. 安装 LangGraph Python SDK:
pip install langgraph-sdk
  1. 向助手发送消息(无线程运行):
from langgraph_sdk import get_client
import asyncio

client = get_client(url="http://localhost:2024")

async def main():
    async for chunk in client.runs.stream(
        None,  # 无线程运行
        "agent", # 助手名称。在 langgraph.json 中定义。
        input={
        "messages": [{
            "role": "human",
            "content": "What is LangGraph?",
            }],
        },
    ):
        print(f"Receiving new event of type: {chunk.event}...")
        print(chunk.data)
        print("\n\n")

asyncio.run(main())

用例

langgraph dev 作为您的主要开发工具,用于:
  • 日常功能开发:更改代码,服务器自动重新加载。无需重建容器即可立即测试——非常适合快速迭代周期。
  • 快速原型设计和实验:在几秒钟内启动服务器以测试想法,无需 Docker 设置开销。
  • 没有 Docker 的环境:在 CI/CD 管道或没有 Docker 的轻量级虚拟机中:
    langgraph dev --no-browser
    
  • 调试器附加:使用 --debug-port 将 IDE 调试器附加到服务器,以便在开发期间进行单步调试。

langgraph up

langgraph up 命令编排一个完整的基于 Docker 的堆栈,该堆栈镜像生产基础设施,有助于在生产环境之前发现部署问题。主要功能包括:
  • 验证构建和依赖项:测试您的构建过程和依赖项。
  • 隔离网络:真实的容器网络。
  • 生产验证:验证部署就绪性。
# 确保 Docker 正在运行
docker ps

# 启动类生产环境堆栈
langgraph up
您的服务器在 http://localhost:8123 启动,具有完整的持久化存储。

用例

使用 langgraph up 进行验证和生产就绪性测试:
  • 部署前验证:在部署到生产环境之前,您可以使用全新构建运行最终检查,以确保所有依赖项都已正确指定。
    langgraph up --recreate
    
    这可以捕获与容器中依赖项解析相关的任何问题以及其他构建过程问题。
  • 重大功能验证:在实现重大更改后,定期使用完整的生产堆栈进行测试,以确保一切在容器化环境中正常工作。
  • Docker 故障排除:调试仅在生产环境中出现的容器特定问题、网络问题或环境变量配置时。

部署前检查清单

在部署应用程序之前,请使用 langgraph up 验证以下内容:

依赖项配置

langgraph devlanggraph up 都从您的配置文件中读取应用程序的依赖项,但它们在不同的环境中运行:
  • langgraph dev 直接在您的本地环境(Python 或 Node.js)中运行代码,无需 Docker。
  • langgraph up 构建一个 Docker 容器并在该隔离容器中运行您的代码。
正确配置依赖项可确保两个命令正常工作,并且您在本地测试的内容与部署到生产环境的内容相匹配。

langgraph.json 文件

dependencies 字段告诉 CLI 在哪里查找您的应用程序代码。dependencies 字段可以指向:
  • 包含包配置的目录(包含 pyproject.tomlsetup.pyrequirements.txtpackage.json
  • 特定子目录"dependencies": ["./my_agent"]
  • 特定包"dependencies": ["my-package==1.0.0"](Python)或 "dependencies": ["my-package@1.0.0"](JavaScript)
{
  "dependencies": ["."],
  "graphs": {
    "my_agent": "./my_agent/agent.py:graph"
  },
  "env": "./.env"
}

包依赖文件

这些文件定义了您的应用程序需要哪些包:
pyproject.toml 示例:
[project]
name = "my-agent"
version = "0.1.0"
dependencies = [
    "langchain-openai",
    "langchain-anthropic",
    "langgraph",
]
requirements.txt 示例:
langchain-openai
langchain-anthropic
langgraph

依赖项解析过程

当您运行 langgraph up 时,CLI 遵循以下步骤来安装应用程序的依赖项:
  1. langgraph.json 告诉 CLI 在哪里查找您的应用程序代码。dependencies: ["."] 字段指向当前目录。
  2. 查找包配置:CLI 在该目录中查找包配置文件(pyproject.tomlrequirements.txtpackage.json)。
  3. 读取依赖项列表:CLI 从配置文件中读取包列表。
  4. 安装包:CLI 使用适合您语言的包管理器(Python 使用 uvpip,JavaScript 使用 npm)安装所有包。
这种双文件方法分离了关注点:langgraph.json 处理应用程序结构和位置,而包配置文件处理特定于语言的包依赖项。 有关安装程序的更多信息,请参阅 CLI 配置文件

故障排除

如果遇到依赖项安装问题,请尝试切换到 pip
{
  "dependencies": ["."],
  "pip_installer": "pip"
}
然后重新构建:
langgraph up --recreate

调试本地 Docker 设置

即使 langgraph up 在您的本地机器上失败,生产部署也可能成功。这是因为生产使用托管基础设施,而 langgraph up 在您的计算机上本地运行完整堆栈。 以下是不影响生产的常见本地环境问题。

Docker 配置问题

langgraph up 需要本地 Docker:
# 检查 Docker 是否正在运行
docker ps
云部署不使用您的本地 Docker。 解决方案:安装 Docker,或使用 langgraph dev 进行本地测试。

端口冲突

langgraph up 使用的端口 812354326379 可能已被占用:
# 检查冲突
lsof -i :8123  # API 服务器
lsof -i :5432  # PostgreSQL
lsof -i :6379  # Redis
解决方案:停止冲突的服务或使用 --port 标志。

资源限制

langgraph up 需要更多 RAM 和磁盘空间用于:
  • PostgreSQL 容器
  • Redis 容器
  • API 服务器容器
解决方案:释放资源或使用 langgraph dev

网络配置

VPN 连接、防火墙规则或公司代理设置可能会影响本地 Docker 网络。 解决方案:使用 langgraph dev 进行测试,或暂时禁用 VPN/防火墙以隔离问题。

后续步骤

现在您已经在本地运行了 LangGraph 应用程序,可以准备部署它了: 为 LangSmith 选择托管选项:
  • :最快设置,完全托管(推荐)。
  • 混合在您的云中,由 LangChain 管理。
  • 自托管:在您的基础设施中完全控制。
有关更多详细信息,请参阅平台设置比较 然后部署您的应用程序: 探索功能:

相关资源