LangGraph CLI¶
LangGraph 命令行界面包含用于在 Docker 中本地构建和运行 LangGraph 云 API 服务器的命令。对于开发和测试,您可以使用 CLI 部署一个本地 API 服务器,作为 Studio 桌面应用 的替代方案。
安装¶
- 确保已安装 Docker(例如,
docker --version)。 -
安装
langgraph-cli包: -
运行命令
langgraph --help确认 CLI 已安装。
配置文件¶
LangGraph CLI 需要一个 JSON 配置文件,包含以下键:
| 键 | 描述 |
|---|---|
dependencies |
必需。LangGraph 云 API 服务器的依赖项数组。依赖项可以是以下之一:(1)".",表示查找本地 Python 包;(2)在应用程序目录 "./local_package" 中的 pyproject.toml、setup.py 或 requirements.txt;或(3)一个包名称。 |
graphs |
必需。图 ID 到编译图的路径或定义图的函数的映射。示例:
|
env |
.env 文件的路径或环境变量到其值的映射。 |
store |
用于将语义搜索添加到 BaseStore 的配置。包含以下字段:
|
python_version |
3.11 或 3.12。默认为 3.11。 |
pip_config_file |
pip 配置文件的路径。 |
dockerfile_lines |
在从父镜像导入后要添加到 Dockerfile 的额外行数组。 |
注意
LangGraph CLI 默认使用当前目录中的配置文件 langgraph.json。
示例¶
基本配置¶
向存储添加语义搜索¶
所有部署都带有数据库支持的 BaseStore。在 langgraph.json 中添加“index”配置将启用您部署的 BaseStore 中的 语义搜索。
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": ["$"]
}
}
}
常见模型维度
- 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
使用自定义嵌入函数的语义搜索¶
如果您希望使用自定义嵌入函数进行语义搜索,可以传递自定义嵌入函数的路径:
{
"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]]:
"""用于语义搜索的自定义嵌入函数。"""
# 使用您首选的嵌入模型实现
return [[0.1, 0.2, ...] for _ in texts] # 维度向量
命令¶
LangGraph CLI 的基本命令是 langgraph。
用法
dev¶
以开发模式运行 LangGraph API 服务器,具有热重载和调试功能。这个轻量级服务器不需要 Docker 安装,适合开发和测试。状态保存在本地目录中。
仅支持 Python
目前,CLI 仅支持 Python >= 3.11。 JS 支持即将到来。
安装
该命令需要安装“inmem”附加功能:
用法
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
-c, --config FILE |
langgraph.json |
声明依赖项、图表和环境变量的配置文件路径 |
--host TEXT |
127.0.0.1 |
服务器绑定的主机 |
--port INTEGER |
2024 |
服务器绑定的端口 |
--no-reload |
禁用自动重载 | |
--n-jobs-per-worker INTEGER |
每个工作线程的任务数量。默认值为 10 | |
--no-browser |
禁用自动打开浏览器 | |
--debug-port INTEGER |
调试器监听的端口 | |
--help |
显示命令文档 |
build¶
构建 LangGraph Cloud API 服务器 Docker 镜像。
用法
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--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 可以运行本地构建的 LangGraph Cloud API 服务器。 |
-c, --config FILE |
langgraph.json |
声明依赖关系、图和环境变量的配置文件路径。 |
--help |
显示命令文档。 |
up¶
启动 LangGraph API 服务器。用于本地测试,需要一个具有 LangGraph Cloud 闭门测试访问权限的 LangSmith API 密钥。生产使用需许可证密钥。
用法
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--wait |
等待服务启动后再返回。暗示 --detach | |
--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 |
显示命令文档。 |
dockerfile¶
生成用于构建 LangGraph Cloud API 服务器 Docker 镜像的 Dockerfile。
用法
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
-c, --config FILE |
langgraph.json |
声明依赖关系、图和环境变量的 配置文件 的路径。 |
--help |
显示此消息并退出。 |
示例:
这将生成一个类似于以下内容的 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_community 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"}'