LangSmith 会持久化 检查点 (线程状态)和 跨线程记忆 (存储项)。您可以在 langgraph.json 中配置存活时间 (TTL) 策略,以自动管理此数据的生命周期,防止无限累积。
配置线程和检查点 TTL
检查点捕获对话线程的状态。设置 TTL 可确保自动删除旧的检查点和线程元数据。
添加 checkpointer.ttl 配置到您的 langgraph.json file:
{
"dependencies": ["."],
"graphs": {
"agent": "./agent.py:graph"
},
"checkpointer": {
"ttl": {
"strategy": "delete",
"sweep_interval_minutes": 60,
"default_ttl": 43200
}
}
}
- -
strategy:指定过期时采取的操作。默认为"delete". - -
"delete":TTL 过期时删除整个线程,包括所有关联的运行和检查点数据。 - -
"keep_latest":保留线程和最新检查点,但删除后续运行不需要的旧检查点数据。 - -
sweep_interval_minutes:定义系统检查过期检查点的频率(以分钟为单位)。默认为 5 分钟。 - -
default_ttl:设置线程(及其对应检查点)的默认生命周期(以分钟为单位,例如 43200 分钟 = 30 天)。如果未设置默认 TTL,检查点默认不会过期。 - -
sweep_limit: (_Agent server v0.8+_)设置清理器在单次迭代中处理的线程数。默认为10000(Agent server v0.12+)或1000(Agent server v0.8-0.11)。
配置存储项 TTL
存储项支持跨线程数据持久化。为存储项配置 TTL 有助于通过删除过期数据来管理内存。
添加 store.ttl 配置到您的 langgraph.json file:
{
"dependencies": ["."],
"graphs": {
"agent": "./agent.py:graph"
},
"store": {
"ttl": {
"refresh_on_read": true,
"sweep_interval_minutes": 120,
"default_ttl": 10080
}
}
}
- -
refresh_on_read:(可选,默认值true) Iftrue,通过getorsearch访问项目会重置其过期计时器。如果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
}
}
}
配置按线程 TTL
您可以为每个线程应用 TTL 配置.
thread = await client.threads.create(
ttl={
"strategy": "delete",
"ttl": 43200 # 30 days in minutes
}
)
运行时覆盖
默认值 store.ttl 中的设置来自 langgraph.json 可以通过在 SDK 方法调用中提供特定的 TTL 值在运行时覆盖 get, put,以及 search.
部署流程
在中配置 TTL 后 langgraph.json,部署或重启您的 LangGraph 应用程序以使更改生效。使用 langgraph dev 用于本地开发,或 langgraph up 用于 Docker 部署。
有关其他可配置选项的详细信息,请参阅 LangGraph CLI 参考页面.