LangChain-18 Caching 将回答内容进行缓存 可在内存中或数据库中持久化缓存

背景描述

可以将问答的内容缓存起来,如果是相同的问题,那么将会直接把答案返回去,可以节约费用和计算。

安装依赖

shell 复制代码
pip install -qU langchain-core langchain-openai

编写代码

我们可以通过 InMemoryCache 进行内存缓存 或者 SQLiteCache 进行持久化存储。

详细代码如下:

python 复制代码
from langchain.globals import set_llm_cache
from langchain_openai import ChatOpenAI
from langchain.cache import InMemoryCache
from langchain.cache import SQLiteCache


llm = ChatOpenAI(
    model="gpt-3.5-turbo",
)
# 保存在内存中
set_llm_cache(InMemoryCache())
# 也可以持久化在数据库中
# set_llm_cache(SQLiteCache(database_path=".langchain.db"))

# The first time, it is not yet in cache, so it should take longer
message1 = llm.predict("Tell me a joke")
print(f"message1: {message1}")

# The second time it is, so it goes faster
message2 = llm.predict("Tell me a joke")
print(f"message2: {message2}")

运行结果

在运行过程中,可以直观的感受到,第一次的运行速度是比较慢的,但是第二次是非常快的。

说明当中是进行缓存了,第二次直接从内存中进行返回的。

当然,如果进入后台查看API的调用情况,也会发现,只有第一次走了OpenAI的API,第二次是没有的。

shell 复制代码
➜ python3 test18.py
/Users/wuzikang/Desktop/py/langchain_test/own_learn/env/lib/python3.12/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `predict` was deprecated in LangChain 0.1.7 and will be removed in 0.2.0. Use invoke instead.
  warn_deprecated(
message1: Why did the tomato turn red? Because it saw the salad dressing!
message2: Why did the tomato turn red? Because it saw the salad dressing!
相关推荐
铁打的阿秀几秒前
Java 打印pdf添加水印实现
java·python·pdf
程序员鱼皮5 分钟前
我做了个 OpenClaw 一键安装程序,小白也能养龙虾!1 分钟搞定
ai·程序员·编程·ai编程·openclaw
智算菩萨6 分钟前
通用人工智能(AGI)的定义与ChatGPT 5.4的AGI资格评估
人工智能·ai·语言模型·chatgpt·agi
yuxi202016 分钟前
我用 Python 自动化了这 10 个工作流程,每周省下 8 小时
python
yunyun3212317 分钟前
用Python监控系统日志并发送警报
jvm·数据库·python
一个平凡而乐于分享的小比特17 分钟前
6G商用深度分析:时间线、市场趋势与技术演进全景图
ai·6g商用·通感一体·泛在连接
java1234_小锋19 分钟前
基于LangChain的RAG与Agent智能体开发 - 使用LangChain调用大语言模型
人工智能·语言模型·langchain·rag
6+h20 分钟前
【java IO】BIO、NIO、AIO 全面对比
java·python·nio
梨落秋霜21 分钟前
Python入门篇【正则表达式】
python·mysql·正则表达式
Hello.Reader24 分钟前
PySpark 安装保姆级教程pip、Conda、手动安装、Spark Connect 一次讲透(一)
python·spark·conda·pip