news 2026/4/18 11:01:32

AI开发-python-langchain框架(1-8-2 缓存机制——验证缓存的效果)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI开发-python-langchain框架(1-8-2 缓存机制——验证缓存的效果)

在AI应用中,缓存机制的经济价值不仅节省Token成本,还能消除用户等待焦虑、提升系统吞吐量、保障服务稳定性——这才是企业级应用的真正痛点。
当用户提出一个常见问题时,首次调用大模型需要经历网络传输、排队等待、模型推理等完整链路,响应时间通常在1至3秒。这个时长已超过人类对“流畅交互”的心理阈值(200毫秒),用户会明显感知到“卡顿”和“等待焦虑”。而启用缓存后,相同问题的后续请求直接从本地数据库读取结果,响应时间骤降至10毫秒以内——这种“无感秒回”的体验,让用户感觉系统始终在线、反应迅捷,极大提升了产品专业度和信任感。

下面看看这段代码,就能清晰的体现使用缓存后能提升的用户体验。(同一个问题问大模型三次,第一次没有缓存,后两次有缓存)

import os import time from langchain_community.cache import SQLiteCache from langchain_openai import ChatOpenAI from langchain.globals import set_llm_cache, get_llm_cache # ========== 1. 清理旧缓存(确保演示纯净)========== CACHE_DB = "langchain_demo.db" if os.path.exists(CACHE_DB): os.remove(CACHE_DB) print(f" 已清理旧缓存: {CACHE_DB}") # ========== 2. 启用缓存 ========== set_llm_cache(SQLiteCache(database_path=CACHE_DB)) print(f" 缓存已启用: {get_llm_cache()}\n") # ========== 3. 配置 LLM ========== llm = ChatOpenAI( api_key=os.getenv("DEEPSEEK_API_KEY"), base_url=os.getenv("DEEP_URL"), # Deepseek 的 API 基础地址 model="deepseek-v3:671b", # Deepseek 对话模型(可选:deepseek-chat-pro 等高级模型) temperature=0.7, # 温度参数(0-1,越低越稳定) max_tokens=1024 # 最大生成 tokens ) # ========== 4. 核心演示函数 ========== def demonstrate_cache_effect(query: str, repeat: int = 3): """ 演示缓存效果:首次调用(慢) vs 后续调用(快) Args: query: 要提问的问题 repeat: 重复调用次数(第1次未缓存,后续应命中缓存) """ print("=" * 60) print(f" 测试问题: \"{query}\"") print(f" 将重复调用 {repeat} 次(第1次无缓存,后续应命中缓存)") print("=" * 60 + "\n") durations = [] for i in range(repeat): print(f"\n[第 {i + 1} 次调用]") start = time.perf_counter() # 高精度计时 # 关键:使用完全相同的输入触发缓存 response = llm.invoke(query) duration = (time.perf_counter() - start) * 1000 # 转为毫秒 durations.append(duration) # 判断是否命中缓存(通过耗时阈值粗略判断) is_cached = i > 0 # 首次通常 >500ms,缓存通常 <50ms if i > 0: print('缓存命中,耗时:'+str(duration)) else: print('真实请求,耗时:'+str(duration)) print(f" 回答: {response.content[:60]}...") # ========== 5. 执行演示 ========== if __name__ == "__main__": # 测试标准问题(确保完全相同的字符串) demonstrate_cache_effect("太阳系哪个行星最大?", repeat=3)

运行结果:


已清理旧缓存: langchain_demo.db
缓存已启用: <langchain_community.cache.SQLiteCache object at 0x000001D668B50410>

============================================================
测试问题: "太阳系哪个行星最大?"
将重复调用 3 次(第1次无缓存,后续应命中缓存)
============================================================


[第 1 次调用]
真实请求,耗时:17445.118000000093
回答: 太阳系中最大的行星是**木星**。以下是关于木星的一些关键信息:

### 木星的基本特征:
1. **体积与质量** ...

[第 2 次调用]
缓存命中,耗时:410.93799999998737
回答: 太阳系中最大的行星是**木星**。以下是关于木星的一些关键信息:

### 木星的基本特征:
1. **体积与质量** ...

[第 3 次调用]
缓存命中,耗时:1.475199999731558
回答: 太阳系中最大的行星是**木星**。以下是关于木星的一些关键信息:

### 木星的基本特征:
1. **体积与质量** ...


结论:从时间消耗上看,缓存命中几何倍数的缩短了用户等待时间,提升了用户的使用体验。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 14:19:19

2026高职大数据管理与应用专业应届生学数据分析的技术价值分析

行业需求与就业前景数据分析在各行业的渗透率持续上升&#xff0c;金融、电商、医疗等领域对数据分析人才需求旺盛。2026年预计数据分析岗位缺口将进一步扩大&#xff0c;高职专业学生掌握技能后可覆盖初级分析师、数据运营等岗位。企业招聘数据显示&#xff0c;大数据管理与应…

作者头像 李华
网站建设 2026/4/17 22:12:28

Java语言提供了八种基本类型。六种数字类型

Java 语言提供了 八种基本数据类型&#xff08;primitive types&#xff09;&#xff0c;它们是 Java 中最基础、最直接的数值/逻辑表示方式&#xff0c;不依赖于对象&#xff08;不像包装类 Integer、Double 等&#xff09;。 官方标准表述&#xff08;来自 Oracle Java 文档…

作者头像 李华
网站建设 2026/4/18 6:25:08

(9-1)电源管理与能源系统:电池选择与安全

本章内容围绕人形机器人电源管理与能源系统展开&#xff0c;系统介绍了人形机器人的整机能源方案的设计思路与工程实现。首先从电池选型与安全出发&#xff0c;分析不同锂电池类型的性能特点&#xff0c;介绍了电池保护电路与热管理在保障系统可靠性中的关键作用。随后讲解了机…

作者头像 李华
网站建设 2026/4/18 6:25:56

告别CLIP局限!SSVP框架实现零样本异常检测,刷新7大数据集SOTA

工业视觉检测一直是智能制造领域的关键技术&#xff0c;而零样本异常检测&#xff08;ZSAD&#xff09;更是被视为行业的“圣杯”——无需针对特定产线进行训练&#xff0c;即可直接投入使用的理想解决方案。然而&#xff0c;现有基于视觉语言模型&#xff08;如CLIP&#xff0…

作者头像 李华
网站建设 2026/4/18 6:25:13

金手指PCB不同污染类型的对症处理与禁忌

金手指表面污染是引发接触不良的第二大原因&#xff0c;灰尘、油脂、汗液、氧化层、焊剂残留、水汽凝结等污染物&#xff0c;都会增大接触电阻&#xff0c;导致设备不识别、传输异常。但很多用户的清洁方式存在严重误区&#xff0c;用橡皮大力擦拭、酒精反复浸泡、刀片刮除氧化…

作者头像 李华
网站建设 2026/4/18 6:36:17

【小程序毕设全套源码+文档】基于微信小程序的书洞图书阅读设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华