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,
    )
相关推荐
xiaogai_gai2 分钟前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
benchmark_cc28 分钟前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
const_qiu41 分钟前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
估值探索者1 小时前
【Python量化选股流水线 #04】选股器好不好用?「昨日候选→今日表现」回看验收
开发语言·python·股票数据·股票数据api接口
田里的水稻2 小时前
PyTorch_Dataloader\TensorBoard---数据加载与可视化
人工智能·pytorch·python·神经网络·机器学习
Dmz丶2 小时前
前端转 AI 100 天 Day 27:Docker 容器化——从“我电脑能跑“到“到处能跑“
python
卿卿的产品经理日记2 小时前
【AI产品经理实战】Day 38|try-except 踩坑实录:报错是数据
人工智能·笔记·python·学习·产品经理
全栈练习生2 小时前
文档智能与实践
python·ai
隐擎fox3 小时前
深入 Android 移动端风控与协议层对抗:内核级虚拟环境检测、网络堆栈特征伪装与住宅 IP 协同实战
android·网络·python·网络协议·tcp/ip
“AI国潮设计-小江”3 小时前
【AIGC实战】Python+SDXL批量生成「潮汕英歌舞冰淇淋蛋糕&红桃粿咖啡」IP,固定角色形象批量出甜品商业效果图
开发语言·人工智能·python·prompt·aigc