LangGraph CLI 是一个用于在本地构建和运行 Agent Server 的命令行工具。生成的服务器会公开用于运行、线程、助手等功能的所有 API 端点,并包含检查点和存储所需的托管数据库等支持服务。

安装

  1. 确保已安装 Docker(例如:docker --version)。
  2. 安装 CLI:
  3. 验证安装

快速命令

对于 JS,请使用 npx @langchain/langgraph-cli <command>(如果已全局安装,也可以使用 langgraphjs)。

配置文件

要构建和运行有效的应用程序,LangGraph CLI 需要一个符合此架构的 JSON 配置文件。该文件包含以下属性:
LangGraph CLI 默认使用当前目录中名为 langgraph.json 的配置文件。

示例

基本配置

使用 Wolfi 基础镜像

可以使用 image_distro 字段指定基础镜像的 Linux 发行版。有效选项包括 debian、wolfi、bookworm 和 bullseye。推荐使用 Wolfi,因为它可以提供更小、更安全的镜像。此功能适用于 langgraph-cli>=0.2.11。

向存储添加语义搜索

所有部署都自带由数据库支持的 BaseStore。在 langgraph.json 中添加 "index" 配置,即可在部署的 BaseStore 中启用语义搜索。index.fields 配置决定要嵌入文档中的哪些部分:
  • 如果省略或设置为 ["$"],则会嵌入整个文档
  • 若要嵌入特定字段,请使用 JSON 路径表示法:["metadata.title", "content.text"]
  • 缺少指定字段的文档仍会被存储,但这些字段不会生成嵌入
  • 在调用 put 时,仍可以通过 index 参数覆盖特定条目要嵌入的字段
常见模型维度
  • openai:text-embedding-3-large:3072
  • openai:text-embedding-3-small:1536
  • openai:text-embedding-ada-002:1536
  • cohere:embed-english-v3.0:1024
  • cohere:embed-english-light-v3.0:384
  • cohere:embed-multilingual-v3.0:1024
  • cohere:embed-multilingual-light-v3.0:384

使用自定义嵌入函数进行语义搜索

如果希望使用自定义嵌入函数进行语义搜索,可以传入自定义嵌入函数的路径:
存储配置中的 embed 字段可以引用一个自定义函数,该函数接收字符串列表并返回嵌入列表。实现示例:

添加自定义身份验证

详情请参阅身份验证概念指南,实际操作流程请参阅设置自定义身份验证指南。

配置存储条目的生存时间

可以使用 store.ttl 键配置 BaseStore 中条目/记忆的默认数据过期时间。该设置决定条目在最后一次访问后保留多长时间(读取操作是否刷新计时器取决于 refresh_on_read)。请注意,可以通过修改 get、search 等操作中的相应参数,针对每次调用覆盖这些默认值。ttl 配置是一个包含以下可选字段的对象:
  • refresh_on_read:如果为 true(默认值),通过 get 或 search 访问条目时会重置其过期计时器。设置为 false 后,只有写入操作(put)会刷新 TTL。
  • default_ttl:条目的默认生命周期,单位为分钟。仅应用于新创建的条目;现有条目不会被修改。如果未设置,条目默认不会过期。
  • sweep_interval_minutes:系统运行后台进程删除过期条目的频率,单位为分钟。如果未设置,则不会自动执行清理。
以下示例启用了 7 天 TTL(10080 分钟),在读取时刷新,并每小时执行一次清理:

配置检查点生存时间

可以使用 checkpointer 键配置检查点的生存时间(TTL)。该设置决定检查点数据在根据指定策略(例如删除)自动处理前保留多长时间。支持以下两个可选子对象:
  • ttl:包含 strategy、sweep_interval_minutes、default_ttl 和 sweep_limit(Agent server v0.8+),这些字段共同决定检查点的过期方式。
  • serde (Agent server v0.5+):用于控制检查点负载的反序列化行为。
以下示例将默认 TTL 设置为 30 天(43200 分钟):
在此示例中,超过 30 天的检查点将被删除,并且每 10 分钟检查一次。

配置检查点器 serde

checkpointer.serde 对象用于调整反序列化行为:
  • allowed_json_modules 定义一个允许列表,指定服务器可以从以 “json” 模式保存的负载中反序列化的自定义 Python 对象。这是一个由 [path, to, module, file, symbol] 序列组成的列表。如果省略,则只允许 LangChain 安全默认值。也可以不安全地将其设置为 true,允许反序列化任何模块。
  • pickle_fallback:JSON 解码失败时是否回退到 pickle 反序列化。

自定义 HTTP 中间件和标头

http 块用于精细调整请求处理:
  • middleware_order:选择 "auth_first",先运行身份验证,再运行中间件;或者选择 "middleware_first"(默认值),反转这一顺序。
  • enable_custom_route_auth:将身份验证扩展到通过 http.app 挂载的路由。
  • configurable_headers / logging_headers:每项都接受一个包含可选 includes 和 excludes 数组的对象;支持通配符,并且会先处理排除项,再处理包含项。
  • cors:自定义服务器的 CORS(跨域资源共享)配置。以下是用于配置 CORS 的 langgraph.json 文件示例:
    自定义服务器的 CORS 配置会覆盖设置 CORS_ALLOW_ORIGINS 环境变量的功能。

配置 Webhook

可以为出站 Webhook 请求配置自定义标头和 URL 限制:
有关标头配置、环境变量模板和 URL 限制的详情,请参阅使用 Webhook。

固定 API 版本

(在 v0.3.7 中添加)可以使用 api_version 键固定 Agent Server 的 API 版本。如果希望确保服务器使用特定版本的 API,这会很有用。 默认情况下,Cloud 部署中的构建使用服务器的最新稳定版本。可以将 api_version 键设置为特定版本来固定版本。

禁用内置路由

可以使用 http 配置块中的布尔标志,按需禁用内置 HTTP 路由组。这对于希望尽量减少服务器公开接口范围的生产部署非常有用。例如,要禁用系统信息和文档路由:
将 disable_meta 设置为 true 会禁用以下路由:
  • / — 根健康检查
  • /info — 服务器版本和配置信息
  • /metrics — Prometheus 和 JSON 指标
  • /docs — API 文档 UI
  • /openapi.json — OpenAPI 规范
即使设置了 disable_meta,/ok 健康检查端点仍然可用,因此 Kubernetes 等编排器仍可以执行存活性和就绪性探测。其他路由禁用标志包括 disable_assistants、disable_runs、disable_threads、disable_store 和 disable_ui。有关 MCP、A2A 和 Webhook,请参阅相应指南:禁用 MCP、禁用 A2A、禁用 Webhook。

命令

用法
LangGraph CLI 的基础命令是 langgraph。

dev

以开发模式运行 LangGraph API 服务器,支持热重载和调试功能。此轻量级服务器无需安装 Docker,适合开发和测试。状态会持久化到本地目录。
目前,CLI 仅支持 Python >= 3.11。
如需了解何时使用 langgraph dev 或 langgraph up,请参阅本地开发与测试指南,其中包含详细对比。
安装此命令要求安装 "inmem" extra:
用法
选项

build

构建 LangSmith API 服务器 Docker 镜像。用法
选项*仅 JS 部署支持,对 Python 部署没有影响。

deploy

此命令处于测试阶段,仍在积极开发中。预计会频繁更新和改进。
将 LangGraph 镜像直接构建并部署到 LangSmith Deployments。此命令会在本地构建 Docker 镜像,将其推送到托管注册表,然后创建或更新部署,一步完成。如果未安装 Docker,则会触发远程构建。前置条件
仅适用于 LangSmith Cloud。
用法
此命令还接受所有 langgraph build 标志(--platform、-t、--pull、--no-pull、-c)。详情请参阅 langgraph build --help。选项
对于新的按使用量计费方式,请传递 --deployment-type serverless 或 --deployment-type dedicated。在 2026 年 10 月 1 日之前仍使用旧版定价的组织,请传递 --deployment-type dev 或 --deployment-type prod,以创建开发或生产部署。有关过渡时间表,请参阅管理账单。
示例
通过其他方式(例如 LangSmith UI 或 GitHub 集成)创建的部署,也可以使用 langgraph deploy 命令进行更新。

deploy list

列出 LangSmith 部署。用法
选项

deploy revisions

[Beta] 管理部署修订版本。用法
选项命令

deploy revisions list

[Beta] 列出 LangSmith 部署的修订版本。使用 deploy list 列出部署 ID。用法
选项

deploy delete

删除 LangSmith 部署。使用 deploy list 查找要删除的部署 ID。用法
选项

deploy logs

获取 LangSmith 部署日志。使用 deploy 获取代理运行时日志,或使用 build 获取远程构建日志。用法
选项

up

启动 LangGraph API 服务器。进行本地测试时,需要具有 LangSmith 访问权限的 LangSmith API 密钥。用于生产环境时,需要许可证密钥。
如果需要了解何时使用 langgraph dev 与 langgraph up,请参阅本地开发与测试指南,其中提供了详细比较。
用法
选项

dockerfile

生成用于构建 LangSmith API 服务器 Docker 镜像的 Dockerfile。用法
选项示例:
这会生成一个类似如下内容的 Dockerfile:
langgraph dockerfile 命令会将 langgraph.json 文件中的所有配置转换为 Dockerfile 命令。使用此命令时,每次更新 langgraph.json 文件后都必须重新运行该命令。否则,在构建或运行 Dockerfile 时不会反映这些更改。