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

安装

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

快速命令

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

配置文件

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

示例

基本配置

使用 Wolfi 基础镜像

您可以使用 image_distro 字段指定基础镜像的 Linux 发行版。有效选项为 debianwolfibookwormbullseye。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 的设定,读取可能会刷新计时器)。请注意,可以通过修改 getsearch 等中的相应参数,在每个调用的基础上覆盖这些默认值。ttl 配置是一个包含可选字段的对象:
  • refresh_on_read:如果为 true(默认值),通过 getsearch 访问项目会重置其过期计时器。设置为 false 则仅在写入(put)时刷新 TTL。
  • default_ttl:项目的默认生命周期,以分钟为单位。仅适用于新创建的项目;现有项目不会被修改。如果未设置,项目默认永不过期。
  • sweep_interval_minutes:系统运行后台进程删除过期项目的频率(以分钟为单位)。如果未设置,不会自动进行扫描。
以下是一个启用 7 天 TTL(10080 分钟)、在读取时刷新并每小时扫描一次的示例:

配置检查点生存时间

您可以使用 checkpointer 键配置检查点的生存时间(TTL)。这决定了检查点数据在被根据指定策略(例如,删除)自动处理之前保留多长时间。支持两个可选的子对象:
  • ttl:包含 strategysweep_interval_minutesdefault_ttl,它们共同设置检查点的过期方式。
  • serde (Agent server 0.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:每个都接受一个带有可选 includesexcludes 数组的对象;支持通配符,排除在包含之前运行。
  • cors:自定义服务器的 CORS(跨域资源共享)配置。用于配置 CORS 的 langgraph.json 文件示例:
    自定义服务器的 CORS 配置将覆盖设置 CORS_ALLOW_ORIGINS 环境变量 的功能。

配置 Webhook

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

固定 API 版本

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

命令

用法
LangGraph CLI 的基本命令是 langgraph

dev

以开发模式运行 LangGraph API 服务器,支持热重载和调试功能。这个轻量级服务器不需要安装 Docker,适用于开发和测试。状态会持久化到本地目录。
目前,CLI 仅支持 Python >= 3.11。
如果您需要更多关于何时使用 langgraph devlanggraph up 的信息,请参阅本地开发与测试指南以获取详细比较。
安装此命令需要安装 “inmem” 扩展:
用法
选项

build

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