跳到内容

如何为 LangGraph 应用程序添加 TTL

先决条件

本指南假定您熟悉 LangGraph 平台、持久性 和 跨线程持久性 概念。

仅限 LangGraph 平台

TTL 仅支持 LangGraph 平台部署。本指南不适用于 LangGraph OSS。

LangGraph 平台同时持久化检查点(线程状态)和跨线程内存(存储项)。在 langgraph.json 中配置生存时间(TTL)策略,以自动管理这些数据的生命周期,防止无限积累。

配置检查点 TTL

检查点捕获对话线程的状态。设置 TTL 可确保旧的检查点和线程被自动删除。

在您的 langgraph.json 文件中添加 checkpointer.ttl 配置

{
  "dependencies": ["."],
  "graphs": {
    "agent": "./agent.py:graph"
  },
  "checkpointer": {
    "ttl": {
      "strategy": "delete",
      "sweep_interval_minutes": 60,
      "default_ttl": 43200 
    }
  }
}
  • strategy: 指定过期时采取的操作。目前,仅支持 "delete",它会在过期时删除线程中的所有检查点。
  • sweep_interval_minutes: 定义系统检查过期检查点的频率,以分钟为单位。
  • default_ttl: 设置检查点的默认生命周期,以分钟为单位(例如,43200 分钟 = 30 天)。

配置存储项 TTL

存储项允许跨线程数据持久化。为存储项配置 TTL 有助于通过删除陈旧数据来管理内存。

在您的 langgraph.json 文件中添加 store.ttl 配置

{
  "dependencies": ["."],
  "graphs": {
    "agent": "./agent.py:graph"
  },
  "store": {
    "ttl": {
      "refresh_on_read": true,
      "sweep_interval_minutes": 120,
      "default_ttl": 10080
    }
  }
}
  • refresh_on_read: (可选,默认为 true)如果为 true,通过 get 或 search 访问项会重置其过期计时器。如果为 false,TTL 仅在 put 时刷新。
  • sweep_interval_minutes: (可选)定义系统检查过期项的频率,以分钟为单位。如果省略,则不进行清理。
  • default_ttl: (可选)设置存储项的默认生命周期,以分钟为单位(例如,10080 分钟 = 7 天)。如果省略,则项默认不会过期。

结合 TTL 配置

您可以在同一个 langgraph.json 文件中同时为检查点和存储项配置 TTL,以便为每种数据类型设置不同的策略。示例如下:

{
  "dependencies": ["."],
  "graphs": {
    "agent": "./agent.py:graph"
  },
  "checkpointer": {
    "ttl": {
      "strategy": "delete",
      "sweep_interval_minutes": 60,
      "default_ttl": 43200
    }
  },
  "store": {
    "ttl": {
      "refresh_on_read": true,
      "sweep_interval_minutes": 120,
      "default_ttl": 10080
    }
  }
}

运行时覆盖

langgraph.json 中的默认 store.ttl 设置可以通过在 SDK 方法调用(如 get、put 和 search)中提供特定的 TTL 值来在运行时被覆盖。

部署过程

在 langgraph.json 中配置 TTL 后,部署或重启您的 LangGraph 应用程序以使更改生效。对于本地开发,请使用 langgraph dev;对于 Docker 部署,请使用 langgraph up。

有关其他可配置选项的更多详细信息,请参阅 langgraph.json CLI 参考。