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,
    )
相关推荐
杨杨杨大侠2 小时前
Jev、Kev、Laya:决策模型怎么选,什么时候需要微调?
人工智能·python·agent
LOVE️YOU3 小时前
Python 在定义函数时,究竟定义的是什么?
python
段一凡-华北理工大学3 小时前
大模型应用开发 100 天:Python + LLM 从入门到精通 day26~Prompt 调试与优化——A/B 测试与效果评估
windows·python·大模型·prompt·智能体·提示词工程·高炉智能化
Minecraft红客3 小时前
以撒的结合
python·游戏·电脑·娱乐
Circ.3 小时前
Python 调试 Litellm 本地大模型接口:模型列表与对话接口实操踩坑记录
开发语言·python
风早爽太4 小时前
用 ‌Render‌ 快速部署网站和常见问题解决
python·fastapi
李航19835 小时前
给自己的图形引擎,配上了AI渲染,做设计真是太方便了
人工智能·python·计算机视觉·ai·ai编程
L@ncor5 小时前
第六章 框架开发实践 · 学习笔记(AutoGen / AgentScope / CAMEL / LangGraph)
python·框架·autogen·langgraph·agentscope
Zhou1411365 小时前
SpringSecurity_02_授权与高级功能
开发语言·python
摇滚侠7 小时前
《On Java 中文版 基础卷》阅读笔记 对象无处不在 03
java·笔记·python