LangGraph节点缓存-CachePolicy

当我们使用相同的参数 反复调用同一个节点 时,会浪费大量的资源,这时我们就可以将第一次调用该节点的结果保存起来,也就是cache_policy(缓存策略),当下一次使用相同参数调用该节点时,我们就不需要真正的去执行该节点,只需要去cache中去查询。

关键代码:

python 复制代码
builder.add_node(
                 "node_a",
                 node_a,
                 cache_policy=CachePolicy(ttl=10),
                 )

我们需要在将节点加入时配置 cache_policy 。

ttl=10:表示该节点输出结果保存时间为10s,超时后需要重新执行该节点。

python 复制代码
graph = builder.compile(
    cache=InMemoryCache()
)

同时,编译图时还需要添加缓存后端,表示设置缓存的存储方式

CachePolicy()核心参数:

复制代码
key_func:生成一个cache的Key,用于查询时使用,默认是使用 input 参数来生成一个对应的Key
复制代码
ttl:设置缓存存活时间

其中key_func一般不需要配置,默认使用所有input参数生成Key。当然某些情况下我们也可以自定义一个key_func,示例如下:

python 复制代码
略.................

class State(TypedDict):
    user: str
    request_id: str
    weather: str


def user_cache_key(state: State) -> str:
    """
    state 是节点本次收到的输入。
    只使用 user 生成缓存键,忽略 request_id。
    """
    return state['user']

略.................

builder.add_node(
    "get_weather",
    get_weather,
    cache_policy=CachePolicy(
        ttl=60,
        key_func=user_cache_key,
    ),
)

略.................

result1 = graph.invoke({
    "user": "小明",
    "request_id": "request-001",
})

通过自定义key_func,我们生成Key时只用"user"来生成Key

CachePolicy()基本原理:

1.创建节点任务时生成缓存键:

复制代码
cache_policy = proc.cache_policy or cache_policy

if cache_policy:
    args_key = cache_policy.key_func(val)

    cache_key = CacheKey(
        namespace=(
            CACHE_NS_WRITES,
            identifier(proc) or "__dynamic__",
            name,
        ),
        key=xxh3_128_hexdigest(args_key),
        ttl=cache_policy.ttl,
    )
相关推荐
quantdash_cc1 小时前
如何设计高效率的批量股票数据获取程序?QuantDash Python SDK 全市场行情拉取实战指南
开发语言·python·数据分析·量化交易·股票数据·quantdash
砚底藏山河2 小时前
拉数管道设计:从一次性脚本到可重启的数据流水线(魔码量化实战 #01)
java·数据库·python·金融·maven
东莞市云毅网络有限公司2 小时前
企业非结构化资料拆分成可引用片段:一套能跑通的预处理流水线
python·数据清洗·rag·企业知识库·文档解析
淼澄研学2 小时前
Sonos空间音频技术解析与Python本地API控制实操
开发语言·python·音视频
孤狼warrior2 小时前
SCTR 五次失败的安全 BN 路由器
人工智能·python·深度学习·算法·安全·yolo
tryxr2 小时前
Redis 的背景知识
数据库·redis·缓存
天赐范式2 小时前
天赐范式第159天:让广播走出本机——HTTP通道发出第一声
python·broadcast·urllib·http.server·天赐范式·动态运行时·http通道
keke.shengfengpolang2 小时前
2026秋招信用风险分析岗面试:SQL和Python到底要学到什么程度才能过?
python
莫得感情 o3 小时前
Redis 08 · 主从复制:全量同步、增量同步与复制延迟
redis·缓存