LangGraph CLI 是一个用于构建和运行 代理服务器 的命令行工具。生成的服务器会暴露所有 API 端点,用于运行、线程、助手等,并包含支持服务,如用于检查点和存储的托管数据库。
安装
- 确保已安装 Docker(例如,
docker --version). - 安装 CLI:
pip install langgraph-cli
# Use latest on demand
npx @langchain/langgraph-cli
# Or install globally (available as `langgraphjs`)
npm install -g @langchain/langgraph-cli
- 验证安装
langgraph --help
npx @langchain/langgraph-cli --help
快速命令
| 命令 | 功能 |
|---|---|
langgraph dev | 启动一个轻量级本地开发服务器(无需 Docker),适合快速测试。 |
langgraph build | 构建 LangGraph API 服务器的 Docker 镜像以便部署。 |
langgraph deploy | 一键构建并部署 LangGraph 镜像到 LangSmith Deployments。 |
langgraph dockerfile | 根据配置生成 Dockerfile 用于自定义构建。 |
langgraph up | 在 Docker 中本地启动 LangGraph API 服务器。需要 Docker 运行;本地开发需要 LangSmith API 密钥;生产环境需要许可证。 |
对于 JS,请使用 npx @langchain/langgraph-cli <command> (or langgraphjs 如果全局安装)。
配置文件
要构建和运行有效的应用程序,LangGraph CLI 需要一个遵循此 架构的 JSON 配置文件。它包含以下属性:
Python
| 键 | 描述 |
|---|---|
<span>dependencies</span> | **必填**。LangSmith API 服务器的依赖项数组。依赖项可以是以下之一: <ul><li>单个句点("."),它将查找本地 Python 包。</li><li>所在目录的路径。 pyproject.toml, setup.py or requirements.txt 。<br></br>例如,如果 requirements.txt 位于项目目录的根目录,请指定 "./"。如果位于名为 local_package的子目录中,请指定 "./local_package"。不要指定字符串 "requirements.txt" itself.</li><li>Python 包名。</li></ul> |
<span>graphs</span> | **必填**。从图 ID 到已编译图或创建图的函数所在路径的映射。示例: <ul><li>./your_package/your_file.py:variable,其中 variable 是 langgraph.graph.state.CompiledStateGraph</li><li>./your_package/your_file.py:make_graph的实例, make_graph 是接受配置字典的函数(langchain_core.runnables.RunnableConfig)并返回 langgraph.graph.state.StateGraph or langgraph.graph.state.CompiledStateGraph。参见 如何在运行时重建图 了解更多详情。</li></ul> |
<span>auth</span> | _(添加于 v0.0.11)_ Auth 配置,包含身份验证处理程序的路径。示例: ./your_package/auth.py:auth,其中 auth 是 langgraph_sdk.Auth的一个实例。参见 身份验证指南 了解更多详情。 |
<span>base_image</span> | 可选。用于 LangGraph API 服务器的基础镜像。默认为 langchain/langgraph-api or langchain/langgraphjs-api。使用此选项可将构建固定到特定版本的 langgraph API,例如 "langchain/langgraph-server:0.2". See https://hub.docker.com/r/langchain/langgraph-server/tags for more details. (added in langgraph-cli==0.2.8) |
<span>image_distro</span> | 可选。基础镜像的 Linux 发行版。必须是以下之一 "debian", "wolfi", "bookworm", or "bullseye"。如果省略,默认为 "debian"。在以下版本中可用 langgraph-cli>=0.2.11. |
<span>env</span> | 到 .env 文件的路径或从环境变量到其值的映射。 |
<span>store</span> | Configuration for adding semantic search and/or time-to-live (TTL) to the BaseStore. Contains the following fields: <ul><li>index (可选):语义搜索索引配置,包含字段 embed, dims和可选的 fields.</li><li>ttl (可选):项目过期配置。一个包含可选字段的对象: refresh_on_read (布尔值,默认为 true), default_ttl (浮点数,以 **分钟为单位的生命周期**;仅适用于新创建的项目;现有项目保持不变;默认无过期),和 sweep_interval_minutes (整数,检查过期项目的频率,默认为不清理)。</li></ul> |
<span>ui</span> | Optional. Named definitions of UI components emitted by the agent, each pointing to a JS/TS file. (added in langgraph-cli==0.1.84) |
<span>python_version</span> | 3.11, 3.12, or 3.13。默认为 3.11. |
<span>node_version</span> | 指定 node_version: 20 以使用 LangGraph.js。 |
<span>pip_config_file</span> | 到 pip 配置文件的路径。 |
<span>pip_installer</span> | _(添加于 v0.3)_ 可选。Python 包安装程序选择器。可设置为 "auto", "pip", or "uv"。从 0.3 版本开始,默认策略是运行 uv pip,这通常提供更快的构建速度,同时保持完全兼容。在不常见的情况下,如果 uv 无法处理您的依赖图或您的 pyproject.toml,请指定 "pip" 在此处恢复之前的行为。 |
<span>keep_pkg_tools</span> | _(在 v0.3.4 中添加)_ 可选。控制是否在最终镜像中保留 Python 打包工具(pip, setuptools, wheel)在最终镜像中。可接受的值: <ul><li><code>true</code> :保留所有三个工具(跳过卸载)。</li><li><code>false</code> / omitted : Uninstall all three tools (default behaviour).</li><li><code>list[str]</code> :工具名称 <strong>要保留</strong>。每个值必须是 "pip"、"setuptools"、"wheel" 之一。</li></ul>。默认情况下,所有三个工具都会被卸载。 |
<span>dockerfile_lines</span> | 从父镜像导入后,要添加到 Dockerfile 的附加行数组。 |
<span>checkpointer</span> | 检查点的配置。支持: <ul><li>backend (可选): "default", "mongo", or "custom"。默认为 "default" (PostgreSQL)。请参阅 配置检查点后端.</li><li>path (可选):自定义检查点工厂的路径(当 backend is "custom")时。请参阅 自定义检查点.</li><li>ttl (可选):包含 strategy, sweep_interval_minutes, default_ttl和 sweep_limit (代理服务器 v0.8+)的对象,用于控制检查点过期。</li><li>serde (可选,代理服务器 v0.5+):包含 allowed_json_modules 和 pickle_fallback 的对象,用于调整反序列化行为。</li></ul> |
<span>http</span> | 具有以下字段的 HTTP 服务器配置: <ul><li>app: Path to custom Starlette/FastAPI app (e.g., "./src/agent/webapp.py:app")。请参阅 自定义路由指南.</li><li>cors:CORS 配置,包含 allow_origins, allow_methods, allow_headers, allow_credentials, allow_origin_regex, expose_headers等字段。 max_age.</li><li>configurable_headers:定义哪些请求头通过 includes / excludes patterns.</li><li>logging_headers作为可配置值暴露。 configurable_headers :用于从日志中排除敏感头信息的</li><li>middleware_order镜像。 auth_first :选择自定义中间件和身份验证的交互方式。 middleware_first 在自定义中间件之前运行身份验证钩子,而</li><li>enable_custom_route_auth(默认)先运行您的中间件。 app.</li><li>:对通过以下方式添加的路由应用身份验证检查。<ul><li>disable_meta路由禁用标志 — 有选择地关闭内置端点组: / :禁用 /info, /metrics, /docs(根路由)、 /openapi.json 和 /ok 系统路由。</li><li>disable_assistants健康检查仍然可用。 /assistants/* routes.</li><li>disable_runs:禁用所有 /runs/* routes.</li><li>disable_threads:禁用所有 /threads/* routes.</li><li>disable_store:禁用所有 /store/* routes.</li><li>disable_ui:禁用所有 /ui/* routes.</li><li>disable_mcp:禁用 /mcp 端点。请参见 禁用 MCP.</li><li>disable_a2a:禁用 /a2a/* 端点。请参见 禁用 A2A.</li><li>disable_webhooks:在运行完成时禁用 webhook 传递(不是路由切换)。请参见 禁用 webhooks.</li></ul></li><li>mount_prefix: Prefix for mounted routes (e.g., "/my-deployment/api").</li></ul> |
<span>webhooks</span> | _(添加于 v0.5.36)_ 出站 webhook 传递的配置。包含: <ul><li>env_prefix:标头模板中引用的环境变量的必需前缀(默认为 LG_WEBHOOK_).</li><li>headers:包含在 webhook 请求中的静态标头。值可以包含模板,如 ${{ env.VAR }}.</li><li>url:URL 验证策略,具有 allowed_domains, allowed_ports, require_https, disable_loopback和 max_url_length.</li></ul> |
<span>api_version</span> | _(添加于 v0.3.7)_ 要使用的 LangGraph API 服务器的语义版本(例如, "0.3")。默认为最新版本。查看服务器 变更日志 了解每个版本的详细信息。 |
JS
| 键 | 描述 |
|---|---|
<span>graphs</span> | **必需**。从 graph ID 到编译后的 graph 或定义 graph 的函数的路径的映射。例如: <ul><li>./src/graph.ts:variable,其中 variable 是 CompiledStateGraph</li><li>./src/graph.ts:makeGraph的实例,其中 makeGraph 是接受配置字典(LangGraphRunnableConfig)并返回 StateGraph or CompiledStateGraph 实例的函数。请参见 如何在运行时重新构建 graph 了解更多详情。</li></ul> |
<span>env</span> | 到 .env 文件的路径或从环境变量到其值的映射。 |
<span>store</span> | Configuration for adding semantic search and/or time-to-live (TTL) to the BaseStore. Contains the following fields: <ul><li>index (可选):带字段的语义搜索索引配置 embed, dims和可选的 fields.</li><li>ttl (可选):项目过期配置。具有可选字段的对象: refresh_on_read (布尔值,默认为 true), default_ttl (浮点数,生命周期( **分钟)**;仅适用于新创建的项目;现有项目保持不变;默认为无过期),和 sweep_interval_minutes (整数,检查过期项目的频率,默认为不清理)。</li></ul> |
<span>node_version</span> | 指定 node_version: 20 使用 LangGraph.js。 |
<span>dockerfile_lines</span> | 要在从父镜像导入后添加到 Dockerfile 的附加行数组。 |
<span>checkpointer</span> | 检查点的配置。支持以下选项: <ul><li>backend (可选): "default", "mongo", or "custom"。默认为 "default" (PostgreSQL)。请参阅 配置检查点后端.</li><li>path (可选):自定义检查点工厂的路径(当 backend is "custom")。请参阅 自定义检查点.</li><li>ttl (可选):包含以下属性的对象 strategy, sweep_interval_minutes, default_ttl和 sweep_limit (代理服务器 v0.8+)控制检查点过期。</li><li>serde (可选,代理服务器 v0.5+):包含以下属性的对象 allowed_json_modules 和 pickle_fallback 用于调整反序列化行为。</li></ul> |
<span>http</span> | HTTP 服务器配置,镜像 Python 选项: <ul><li>cors 包含 allow_origins, allow_methods, allow_headers, allow_credentials, allow_origin_regex, expose_headers, max_age.</li><li>configurable_headers 和 logging_headers 模式列表。</li><li>middleware_order (auth_first or middleware_first).</li><li>enable_custom_route_auth 以及与上述相同的布尔路由开关。</li></ul> |
<span>webhooks</span> | _(在 v0.5.36 中添加)_ 出站 webhook 投递的配置。包含以下内容: <ul><li>env_prefix:标头模板中引用的环境变量所需的前缀(默认为 LG_WEBHOOK_).</li><li>headers:要包含在 webhook 请求中的静态标头。值可以包含模板,例如 ${{ env.VAR }}.</li><li>url:包含以下内容的 URL 验证策略 allowed_domains, allowed_ports, require_https, disable_loopback和 max_url_length.</li></ul> |
<span>api_version</span> | _(在 v0.3.7 中添加)_ 要使用的 LangGraph API 服务器的语义版本(例如, "0.3")。默认为最新版本。请查看服务器 更新日志 了解每个版本的详细信息。 |
示例
Python
基本配置
{
"$schema": "https://langgra.ph/schema.json",
"dependencies": ["."],
"graphs": {
"chat": "chat.graph:graph"
}
}
使用 Wolfi 基础镜像
您可以使用 image_distro 字段指定基础镜像的 Linux 发行版。有效选项为 debian, wolfi, bookworm, or bullseye。Wolfi 是推荐选项,因为它提供更小、更安全的镜像。这在 langgraph-cli>=0.2.11.
{
"$schema": "https://langgra.ph/schema.json",
"dependencies": ["."],
"graphs": {
"chat": "chat.graph:graph"
},
"image_distro": "wolfi"
}
向存储添加语义搜索
所有部署都附带一个基于数据库的 BaseStore。在您的 langgraph.json 中添加"索引"配置将启用 语义搜索 在部署的 BaseStore 中。
该 index.fields 配置决定了要嵌入文档的哪些部分:
- * 如果省略或设置为
["$"],则整个文档将被嵌入 - * 要嵌入特定字段,请使用 JSON 路径表示法:
["metadata.title", "content.text"] - * 缺少指定字段的文档仍会被存储,但这些字段不会有嵌入向量
- * 您仍然可以在特定项目上覆盖要嵌入的字段
put时间使用index参数
{
"dependencies": ["."],
"graphs": {
"memory_agent": "./agent/graph.py:graph"
},
"store": {
"index": {
"embed": "openai:text-embedding-3-small",
"dims": 1536,
"fields": ["$"]
}
}
}
使用自定义嵌入函数进行语义搜索
如果您想使用自定义嵌入函数进行语义搜索,可以传递一个自定义嵌入函数的路径:
{
"dependencies": ["."],
"graphs": {
"memory_agent": "./agent/graph.py:graph"
},
"store": {
"index": {
"embed": "./embeddings.py:embed_texts",
"dims": 768,
"fields": ["text", "summary"]
}
}
}
存储配置中的 embed 字段可以引用一个自定义函数,该函数接受字符串列表并返回嵌入向量列表。示例实现:
# embeddings.py
def embed_texts(texts: list[str]) -> list[list[float]]:
"""Custom embedding function for semantic search."""
# Implementation using your preferred embedding model
return [[0.1, 0.2, ...] for _ in texts] # dims-dimensional vectors
添加自定义身份验证
{
"$schema": "https://langgra.ph/schema.json",
"dependencies": ["."],
"graphs": {
"chat": "chat.graph:graph"
},
"auth": {
"path": "./auth.py:auth",
"openapi": {
"securitySchemes": {
"apiKeyAuth": {
"type": "apiKey",
"in": "header",
"name": "X-API-Key"
}
},
"security": [{ "apiKeyAuth": [] }]
},
"disable_studio_auth": false
}
}
请参阅 身份验证概念指南 了解更多详情,以及 设置自定义身份验证 指南,了解整个过程的实际操作步骤。
<a id="ttl"></a> #### 配置存储项目生存时间
You can configure default data expiration for items/memories in the BaseStore using the store.ttl 键。这决定了项目在最后一次访问后的保留时间(读取操作可能会根据 refresh_on_read重置计时器)。请注意,这些默认值可以通过修改 get, search等中的相应参数来按调用覆盖。
ttl 配置是一个包含可选字段的对象:
- *
refresh_on_read: Iftrue(默认),通过访问项目会getorsearch重置其过期计时器。设置为false以仅在写入时刷新 TTL(put). - *
default_ttl:项目的默认生存时间(以 **分钟为单位**)。仅适用于新创建的项目;现有项目不会被修改。如果未设置,项目默认不会过期。 - *
sweep_interval_minutes:系统应运行后台进程删除过期项目的频率(以分钟为单位)。如果未设置,清扫不会自动进行。
以下是一个启用 7 天 TTL(10080 分钟)、读取时刷新、每小时清扫的示例:
{
"$schema": "https://langgra.ph/schema.json",
"dependencies": ["."],
"graphs": {
"memory_agent": "./agent/graph.py:graph"
},
"store": {
"ttl": {
"refresh_on_read": true,
"sweep_interval_minutes": 60,
"default_ttl": 10080
}
}
}
<a id="ttl"></a> #### 配置检查点生存时间
您可以使用 checkpointer 键配置检查点的生存时间(TTL)。这决定了检查点数据在被自动处理前的保留时间。系统支持两个可选的子对象配置:
- *
ttl:包括strategy,sweep_interval_minutes,default_ttl和sweep_limit(Agent 服务器 v0.8+),它们共同设置检查点的过期方式。 - *
serde_(Agent 服务器 v0.5+)_ :让您控制检查点负载的反序列化行为。
以下是一个设置默认 TTL 为 30 天(43200 分钟)的示例:
{
"$schema": "https://langgra.ph/schema.json",
"dependencies": ["."],
"graphs": {
"chat": "chat.graph:graph"
},
"checkpointer": {
"ttl": {
"strategy": "delete",
"sweep_interval_minutes": 10,
"default_ttl": 43200
}
}
}
在此示例中,超过 30 天的检查点将被删除,并且每 10 分钟执行一次检查。
配置检查点序列化
checkpointer.serde 对象形状反序列化:
- *
allowed_json_modules定义了你希望服务器能够从保存在"json"模式的载荷中反序列化的自定义Python对象的允许列表。这是一个[path, to, module, file, symbol]序列。如果省略,则只允许LangChain安全默认值。你可以不安全地设置为true来允许任何模块被反序列化。 - *
pickle_fallback:是否在JSON解码失败时回退到pickle反序列化。
{
"checkpointer": {
"serde": {
"allowed_json_modules": [
["my_agent", "auth", "SessionState"]
]
}
}
}
自定义HTTP中间件和请求头
http 块允许你微调请求处理:
- *
middleware_order:选择"auth_first"在中间件之前运行认证,或"middleware_first"(默认)来反转该顺序。 - *
enable_custom_route_auth:将对认证的扩展应用到你通过http.app. - *
configurable_headers/logging_headers挂载的路由:每个都接受一个带有可选的includes和excludes数组的对象;支持通配符,排除规则优先于包含规则。 - *
cors:自定义服务器的CORS(跨域资源共享)配置。示例langgraph.json配置文件用于配置CORS:
{
...
"http": {
"cors": {
"allow_origins": ["https://example.com", "https://app.example.com"],
"allow_methods": ["GET", "POST"],
"allow_headers": ["Authorization", "Content-Type"],
"allow_credentials": true,
"allow_origin_regex": "^https://.*\\.example\\.com$",
"expose_headers": ["x-pagination-total", "x-pagination-next", "x-request-id"],
"max_age": 600
}
},
...
}
配置Webhook
可以为出站webhook请求配置自定义请求头和URL限制:
{
"$schema": "https://langgra.ph/schema.json",
"dependencies": ["."],
"graphs": {
"chat": "chat.graph:graph"
},
"webhooks": {
"headers": {
"Authorization": "Bearer ${{ env.LG_WEBHOOK_TOKEN }}"
},
"url": {
"allowed_domains": ["*.mycompany.com"],
"require_https": true
}
}
}
参见 使用Webhook 了解请求头配置、环境变量模板和URL限制的详细信息。
<a id="api-version"></a> #### 固定API版本
_(在v0.3.7中添加)_
可以通过使用 api_version 键来固定Agent Server的API版本。如果你想确保服务器使用特定版本的API,这很有用。 默认情况下,云部署中的构建使用服务器的最新稳定版本。可以通过将 api_version 键设置为特定版本来固定。
{
"$schema": "https://langgra.ph/schema.json",
"dependencies": ["."],
"graphs": {
"chat": "chat.graph:graph"
},
"api_version": "0.2"
}
禁用内置路由
可以使用 http 配置块中的布尔标志来选择性地禁用内置HTTP路由组。这对于你想要最小化服务器暴露面的生产部署很有用。
例如,要禁用系统信息和文档路由:
{
"$schema": "https://langgra.ph/schema.json",
"dependencies": ["."],
"graphs": {
"chat": "chat.graph:graph"
},
"http": {
"disable_meta": true
}
}
设置 disable_meta to true 会禁用以下路由:
- -
/— 根健康检查 - -
/info— 服务器版本和配置信息 - -
/metrics— Prometheus和JSON指标 - -
/docs— API文档UI - -
/openapi.json— OpenAPI规范
/ok 健康检查端点即使在 disable_meta 被设置时仍然可用,这样Kubernetes等编排工具仍然可以执行存活探针和就绪探针。
其他路由禁用标志包括 disable_assistants, disable_runs, disable_threads, disable_store、和 disable_ui。对于MCP、A2A和webhook,请参阅各自的指南: 禁用 MCP, 禁用 A2A, 禁用 Webhook.
JS
基本配置
{
"$schema": "https://langgra.ph/schema.json",
"graphs": {
"chat": "./src/graph.ts:graph"
}
}
<a id="api-version"></a> #### 固定 API 版本
_(于 v0.3.7 添加)_
您可以通过使用 api_version 密钥来固定 Agent Server 的 API 版本。如果您想确保服务器使用特定版本的 API,这会很有用。 默认情况下,Cloud 部署中的构建使用服务器的最新版稳定版本。可以通过将 api_version 密钥设置为特定版本来固定版本。
{
"$schema": "https://langgra.ph/schema.json",
"dependencies": ["."],
"graphs": {
"chat": "./src/chat/graph.ts:graph"
},
"api_version": "0.2"
}
禁用内置路由
您可以使用 http 配置块中的布尔标志来选择性地禁用内置 HTTP 路由组。这对于生产部署很有用,因为您希望最小化服务器的暴露面。
例如,要禁用系统信息和文档路由:
{
"$schema": "https://langgra.ph/schema.json",
"graphs": {
"chat": "./src/chat/graph.ts:graph"
},
"http": {
"disable_meta": true
}
}
设置 disable_meta to true 将禁用以下路由:
- -
/— 根健康检查 - -
/info— 服务器版本和配置信息 - -
/metrics— Prometheus 和 JSON 指标 - -
/docs— API 文档 UI - -
/openapi.json— OpenAPI 规范
当 /ok 设置为 true 时,健康检查端点仍然可用 disable_meta ,以便 Kubernetes 等编排工具可以继续执行存活和就绪探针。
其他路由禁用标志包括 disable_assistants, disable_runs, disable_threads, disable_store、 disable_ui。有关 MCP、A2A 和 Webhook 的更多信息,请参阅各自的指南: 禁用 MCP, 禁用 A2A, 禁用 Webhook.
命令
用法
Python
LangGraph CLI 的基础命令是 langgraph.
langgraph [OPTIONS] COMMAND [ARGS]
JS
LangGraph.js CLI 的基础命令是 langgraphjs.
npx @langchain/langgraph-cli [OPTIONS] COMMAND [ARGS]
我们建议使用 npx 以始终使用最新版本的 CLI。
dev
Python
在开发模式下运行 LangGraph API 服务器,支持热重载和调试功能。这个轻量级服务器无需安装 Docker,适用于开发和测试。状态会持久化到本地目录。
安装
此命令需要安装 "inmem" 附加组件:
pip install -U "langgraph-cli[inmem]"
用法
langgraph dev [OPTIONS]
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
-c, --config FILE | langgraph.json | 声明依赖、图和环境变量的配置文件路径 |
--host TEXT | 127.0.0.1 | 要绑定服务器的主机 |
--port INTEGER | 2024 | 要绑定服务器的端口 |
--no-reload | 禁用自动重载 | |
--n-jobs-per-worker INTEGER | 每个 worker 的作业数。默认值为 10 | |
--debug-port INTEGER | 调试器监听的端口 | |
--wait-for-client | False | 等待调试器客户端连接到调试端口后再启动服务器 |
--no-browser | 服务器启动时跳过自动打开浏览器 | |
--studio-url TEXT | URL of the Studio instance to connect to. Defaults to https://smith.langchain.com | |
--allow-blocking | False | Do not raise errors for synchronous I/O blocking operations in your code (added in 0.2.6) |
--tunnel | False | 通过公共隧道 (Cloudflare) 公开本地服务器以供远程前端访问。这可以避免 Safari 等浏览器或阻止 localhost 连接的网络出现问题 |
--help | 显示命令文档 |
JS
以热重载功能在开发模式下运行 LangGraph API 服务器。这个轻量级服务器无需安装 Docker,适合开发和测试。状态会持久化到本地目录。
用法
npx @langchain/langgraph-cli dev [OPTIONS]
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
-c, --config FILE | langgraph.json | 配置文件的路径,用于声明依赖项、图和环境变量 |
--host TEXT | 127.0.0.1 | 要绑定服务器的主机 |
--port INTEGER | 2024 | 要绑定服务器的端口 |
--no-reload | 禁用自动重载 | |
--n-jobs-per-worker INTEGER | 每个 worker 的作业数。默认值为 10 | |
--debug-port INTEGER | 调试器监听的端口 | |
--wait-for-client | False | 等待调试器客户端连接到调试端口后再启动服务器 |
--no-browser | 服务器启动时跳过自动打开浏览器 | |
--studio-url TEXT | URL of the Studio instance to connect to. Defaults to https://smith.langchain.com | |
--allow-blocking | False | Do not raise errors for synchronous I/O blocking operations in your code |
--tunnel | False | 通过公共隧道 (Cloudflare) 公开本地服务器以供远程前端访问。这可以避免浏览器或网络阻止 localhost 连接的问题 |
--help | 显示命令文档 |
build
Python
构建 LangSmith API 服务器 Docker 镜像。
用法
langgraph build [OPTIONS]
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--platform TEXT | 要构建 Docker 镜像的目标平台。示例: langgraph build --platform linux/amd64,linux/arm64 | |
-t, --tag TEXT | **必需**。Docker 镜像的标签。示例: langgraph build -t my-image | |
--pull / --no-pull | --pull | 使用最新的远程 Docker 镜像构建。使用 --no-pull 来运行带有本地构建镜像的 LangSmith API 服务器。 |
-c, --config FILE | langgraph.json | 配置文件的路径,用于声明依赖项、图和环境变量。 |
--build-command TEXT<sup>*</sup> | 要运行的构建命令。从您的目录运行 langgraph.json 文件所在目录。示例: langgraph build --build-command "yarn run turbo build" | |
--install-command TEXT<sup>*</sup> | 要运行的安装命令。从您调用它的目录运行 langgraph build 来源。示例: langgraph build --install-command "yarn install" | |
--help | 显示命令文档。 |
JS
构建 LangSmith API 服务器 Docker 镜像。
用法
npx @langchain/langgraph-cli build [OPTIONS]
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--platform TEXT | 构建 Docker 镜像的目标平台。示例: langgraph build --platform linux/amd64,linux/arm64 | |
-t, --tag TEXT | **必填**。Docker 镜像的标签。示例: langgraph build -t my-image | |
--no-pull | 使用本地构建的镜像。默认为 false 使用最新的远程 Docker 镜像构建。 | |
-c, --config FILE | langgraph.json | 配置文件的路径,用于声明依赖、图和环境变量。 |
--help | 显示命令文档。 |
deploy
Python
直接构建并部署 LangGraph 镜像到 LangSmith 部署。此命令在本地构建 Docker 镜像,将其推送到托管注册表,并创建或更新部署——所有操作一步完成。如果未安装 Docker,则会触发远程构建。
前置条件
- - A **LangSmith API 密钥** 拥有部署访问权限。
- - (可选) **Docker** 必须安装并且 Docker 守护进程必须运行才能进行本地构建。远程构建不需要此要求。 安装 Docker Desktop.
用法
langgraph deploy [OPTIONS] [DOCKER_BUILD_ARGS]
此命令还接受所有 langgraph build 标志(--platform, -t, --pull, --no-pull, -c)。有关详细信息,请参阅 langgraph build --help.
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--api-key TEXT | LangSmith 部署的 API 密钥。也可以通过 LANGGRAPH_HOST_API_KEY, LANGSMITH_API_KEY, or LANGCHAIN_API_KEY 环境变量或 .env 文件设置。 | |
--name TEXT | 当前目录名 | 部署名称。也可以通过 LANGSMITH_DEPLOYMENT_NAME 环境变量或 .env 文件设置。 |
--deployment-id TEXT | 要更新的现有部署的 ID。如果省略, --name 用于查找或创建部署。 | |
--deployment-type TEXT | dev | 部署类型(dev or prod)用于创建新部署时。 |
--remote / --no-remote | 强制进行远程或本地构建。默认情况下,如果 Docker 在本地不可用,则进行远程构建。 | |
--no-wait | False | 推送后跳过等待部署状态。 |
--verbose | False | 显示包括 Docker 构建和推送日志在内的详细输出。 |
--help | 显示命令文档。 |
示例
# Deploy with API key from .env file
langgraph deploy
# Deploy with inline API key
LANGSMITH_API_KEY=lsv2_... langgraph deploy
# Update an existing deployment
langgraph deploy --deployment-id abc123
# Deploy with inline deployment name
LANGSMITH_DEPLOYMENT_NAME=my-agent langgraph deploy
# Deploy to EU region
LANGGRAPH_HOST_URL=https://eu.api.host.langchain.com langgraph deploy
deploy list
列出 LangSmith 部署。
用法
langgraph deploy list [OPTIONS]
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--name-contains TEXT | 仅显示名称包含此值的部署。 | |
--api-key TEXT | API 密钥。也可以通过 LANGGRAPH_HOST_API_KEY, LANGSMITH_API_KEY, or LANGCHAIN_API_KEY 环境变量或 .env 文件设置。 | |
--help | 显示此消息并退出。 |
deploy revisions
[Beta] 管理部署修订版本。
用法
langgraph deploy revisions [OPTIONS] COMMAND [ARGS]...
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--help | 显示此消息并退出。 |
命令
| 命令 | 描述 |
|---|---|
list | [Beta] 列出 LangSmith 部署的修订版本。 |
deploy revisions list
[Beta] 列出 LangSmith 部署的修订版本。
使用 deploy list 列出部署 ID。
用法
langgraph deploy revisions list [OPTIONS] DEPLOYMENT_ID
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--limit INTEGER | 10 | 要返回的最大修订版本数。 |
--api-key TEXT | API 密钥。也可以通过 LANGGRAPH_HOST_API_KEY, LANGSMITH_API_KEY, or LANGCHAIN_API_KEY 环境变量或 .env 文件设置。 | |
--help | 显示此消息并退出。 |
deploy delete
删除 LangSmith 部署。
使用 deploy list 查找要删除的部署 ID。
用法
langgraph deploy delete [OPTIONS] DEPLOYMENT_ID
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--force | 无需确认提示直接删除。 | |
--api-key TEXT | API 密钥。也可以通过 LANGGRAPH_HOST_API_KEY, LANGSMITH_API_KEY, or LANGCHAIN_API_KEY 环境变量或 .env 文件设置。 | |
--help | 显示此消息并退出。 |
deploy logs
获取 LangSmith 部署日志。使用 deploy 获取代理运行时日志,或 build 获取远程构建日志。
用法
langgraph deploy logs [OPTIONS]
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
-f, --follow | False | 持续轮询新日志。 |
--end-time TEXT | ISO8601 结束时间。示例: 2026-03-08T00:00:00Z. | |
--start-time TEXT | ISO8601 开始时间。示例: 2026-03-08T00:00:00Z. | |
-q, --query TEXT | 搜索字符串过滤器。 | |
--limit INTEGER | 100 | 最大获取日志条目数。 |
| `--level [DEBUG\ | INFO\ | WARNING\ |
--revision-id TEXT | 特定修订版 ID。对于构建日志,默认为最新修订版。 | |
| `--type [deploy\ | build]` | deploy |
--deployment-id TEXT | 部署 ID。如果省略, --name 用于查找部署。 | |
--name TEXT | 当前目录名称 | 部署名称。也可通过 LANGSMITH_DEPLOYMENT_NAME 环境变量或 .env 文件。当 --deployment-id 未提供时使用。 |
--api-key TEXT | API 密钥。也可通过 LANGGRAPH_HOST_API_KEY, LANGSMITH_API_KEY, or LANGCHAIN_API_KEY 环境变量或 .env 文件。 | |
--help | 显示此消息并退出。 |
up
Python
启动 LangGraph API 服务器。本地测试需要具有 LangSmith 访问权限的 LangSmith API 密钥。生产使用需要许可证密钥。
用法
langgraph up [OPTIONS]
选项
| 选项 | 默认 | 描述 |
|---|---|---|
--wait | 在返回之前等待服务启动。隐含 --detach | |
--base-image TEXT | langchain/langgraph-api | LangGraph API 服务器使用的基础镜像。使用版本标签固定到特定版本。 |
--image TEXT | langgraph-api 服务使用的 Docker 镜像。如果指定,则跳过构建直接使用此镜像。 | |
--postgres-uri TEXT | 本地数据库 | 用于数据库的 Postgres URI。 |
--watch | 文件更改时重启 | |
--debugger-base-url TEXT | http://127.0.0.1:[PORT] | 调试器访问 LangGraph API 使用的 URL。 |
--debugger-port INTEGER | 将调试器镜像拉取到本地并在指定端口提供 UI 服务 | |
--verbose | 显示更多服务器日志输出。 | |
-c, --config FILE | langgraph.json | 声明依赖、图和环境变量的配置文件路径。 |
-d, --docker-compose FILE | 包含要启动的附加服务的 docker-compose.yml 文件路径。 | |
-p, --port INTEGER | 8123 | 公开端口。示例: langgraph up --port 8000 |
--pull / --no-pull | pull | 拉取最新镜像。使用 --no-pull 运行使用本地构建镜像的服务器。示例: langgraph up --no-pull |
--recreate / --no-recreate | no-recreate | 即使容器配置和镜像未发生变化也重新创建容器 |
--help | 显示命令文档。 |
JS
启动 LangGraph API 服务器。本地测试需要具有 LangSmith 访问权限的 LangSmith API key。生产环境使用需要许可证 key。
用法
npx @langchain/langgraph-cli up [OPTIONS]
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
<span>--wait</span> | 返回前等待服务启动。隐含 --detach | |
<span>--base-image TEXT</span> | <span>langchain/langgraph-api</span> | 用于 LangGraph API 服务器的基础镜像。使用版本标签固定到特定版本。 |
<span>--image TEXT</span> | 用于 langgraph-api 服务的 Docker 镜像。如果指定,则跳过构建直接使用此镜像。 | |
<span>--postgres-uri TEXT</span> | 本地数据库 | 用于数据库的 Postgres URI。 |
<span>--watch</span> | 文件更改时重启 | |
<span>-c, --config FILE</span> | langgraph.json | 声明依赖、图和环境变量的配置文件路径。 |
<span>-d, --docker-compose FILE</span> | 包含要启动的附加服务的 docker-compose.yml 文件路径。 | |
<span>-p, --port INTEGER</span> | 8123 | 要暴露的端口。例如: langgraph up --port 8000 |
<span>--no-pull</span> | 使用本地构建的镜像。默认为 false 使用最新远程 Docker 镜像进行构建。 | |
<span>--recreate</span> | 即使容器配置和镜像未发生变化也重新创建容器 | |
<span>--help</span> | 显示命令文档。 |
dockerfile
Python
生成用于构建 LangSmith API 服务器 Docker 镜像的 Dockerfile。
用法
langgraph dockerfile [OPTIONS] SAVE_PATH
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
-c, --config FILE | langgraph.json | 配置文件路径 声明依赖、图和环境变量的 |
--help | 显示此消息并退出。 |
Example:
langgraph dockerfile -c langgraph.json Dockerfile
这会生成一个类似如下内容的 Dockerfile:
FROM langchain/langgraph-api:3.11
ADD ./pipconf.txt /pipconfig.txt
RUN PIP_CONFIG_FILE=/pipconfig.txt PYTHONDONTWRITEBYTECODE=1 pip install --no-cache-dir -c /api/constraints.txt langchain_anthropic langchain_openai wikipedia scikit-learn
ADD ./graphs /deps/__outer_graphs/src
RUN set -ex && \
for line in '[project]' \
'name = "graphs"' \
'version = "0.1"' \
'[tool.setuptools.package-data]' \
'"*" = ["**/*"]'; do \
echo "$line" >> /deps/__outer_graphs/pyproject.toml; \
done
RUN PIP_CONFIG_FILE=/pipconfig.txt PYTHONDONTWRITEBYTECODE=1 pip install --no-cache-dir -c /api/constraints.txt -e /deps/*
ENV LANGSERVE_GRAPHS='{"agent": "/deps/__outer_graphs/src/agent.py:graph", "storm": "/deps/__outer_graphs/src/storm.py:graph"}'
JS
生成用于构建 LangSmith API 服务器 Docker 镜像的 Dockerfile。
用法
npx @langchain/langgraph-cli dockerfile [OPTIONS] SAVE_PATH
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
-c, --config FILE | langgraph.json | 路径 配置文件 声明依赖、图表和环境变量。 |
--help | 显示此消息并退出。 |
Example:
npx @langchain/langgraph-cli dockerfile -c langgraph.json Dockerfile
这会生成一个类似于以下内容的 Dockerfile:
FROM langchain/langgraphjs-api:20
ADD . /deps/agent
RUN cd /deps/agent && yarn install
ENV LANGSERVE_GRAPHS='{"agent":"./src/react_agent/graph.ts:graph"}'
WORKDIR /deps/agent
RUN (test ! -f /api/langgraph_api/js/build.mts && echo "Prebuild script not found, skipping") || tsx /api/langgraph_api/js/build.mts