首页/新闻资讯/正文详情

问答机器人上线一周,token账单吓我一跳:30行缓存省掉94.5%调用,Python实战第8期

发布时间:2026/11/4 2:22:07 来源:云帆数科 栏目:资讯中心
问答机器人上线一周,token账单吓我一跳:30行缓存省掉94.5%调用,Python实战第8期
前七期下来问答机器人已经是个完整产品了50行检索引擎第2期接大模型做问答第3期健康监控第4期重试降级熔断第5期SSE流式输出第6期多轮记忆第7期令牌桶限流。上周我把它推上线跑了一周账单一出来我人傻了。调用量比我预想的高出一大截。拉日志一看气笑了排前20的问题占了总请求的一大半全是退货运费谁承担优惠券怎么叠加这种固定答案的问题。每个都要调一次大模型花钱等延迟答案还一字不差。这钱花得冤。解决办法就两个字缓存。命中缓存的问题直接返回存好的答案不调大模型。但有个细节用户问法五花八门退货运费谁承担和请问退货运费谁承担是一个问题精确匹配缓存认不出来。所以缓存之前先做一层归一化转小写、去掉标点、去掉多余空格归一化之后再算key。环境很简单Python 3标准库就够hashlib和re不用装任何第三方包。核心代码30行贴出来直接能跑importhashlibimportre calls0# 统计真实调了几次大模型deffake_llm(q):模拟大模型调用实际用的时候换成你的API调用globalcalls calls1return答案:q[:20]defnormalize(q):qq.lower()qre.sub(r[^\w\u4e00-\u9fa5],,q)# 去标点、去空格returnq cache{}defanswer_cached(q):keyhashlib.md5(normalize(q).encode()).hexdigest()ifkeyincache:returncache[key],True# 命中不调模型afake_llm(q)cache[key]areturna,False光写缓存不够得验证它真省钱。我写了个模拟流量20个高频问题每个随机加请问前缀、加问号、“怎么换如何”凑200个请求跑一遍看实际调了几次模型importrandom base[退货运费谁承担,优惠券怎么叠加使用,发票在哪里开,会员积分什么时候到账,支持哪些支付方式]*4random.seed(7)queries[]for_inrange(200):qrandom.choice(base)vrandom.random()ifv0.3:qqelifv0.5:q请问qelifv0.65:qq.replace(怎么,如何)queries.append(q)hitssum(1forqinqueriesifanswer_cached(q)[1])print(总请求:,len(queries))print(实际调大模型:,calls)print(缓存命中:,hits)我机器上真实跑出来的输出总请求: 200实际调大模型: 11缓存命中: 189200个请求只调了11次模型省掉94.5%的调用。注意这是模拟流量的结果你的业务里重复率没这么高但只要有三成重复问题缓存就值回票价。三个坑都是我真实踩过的。第一个坑缓存key千万别直接用问题原文当key。大小写、标点、全半角任何一个字符不同就是两次调用缓存形同虚设。归一化这一步不能省。第二个坑不是所有答案都适合缓存。价格、政策、库存这种会变的东西缓存久了就是在发过期答案。我的做法是问题分级高频且答案稳定的进缓存时效性强的走实时调用。简单起见也可以给缓存加TTL存的时候记个过期时间取的时候检查一下importtime store{}defcache_set(key,value,ttl3600):store[key](value,time.time()ttl)defcache_get(key):ifkeyinstore:value,expirestore[key]iftime.time()expire:returnvalue,Truedelstore[key]# 过期了删掉returnNone,FalseTTL设多长看业务客服话术这种一天变不了几次设24小时价格库存类设5分钟。别拍脑袋翻一下这类数据的历史变更频率再定。第三个坑跟第6期的多轮记忆有关。带上下文的问题不能直接缓存它多少钱里的它指什么脱离上下文根本不知道。正确做法是把上下文拼进key归一化(历史问题当前问题)再算key。key拼错了缓存会一本正经地返回牛头不对马嘴的答案。收藏这篇下次你的问答服务账单爆炸直接照着这30行加缓存半小时回本。下期预告第9期讲机器人上线后的可观测性——调用量、延迟、缓存命中率三个指标怎么埋点用50行代码搭个极简监控面板。这个系列在专栏《Python实战》里连着更新从检索引擎一路写到上线运维关注后专栏里能连着看。讨论你线上服务的重复请求占比大概有多少缓存key你是怎么拼的踩过什么坑—— Cyrus

相关推荐

AutoHotkey 鼠标自动化:3 步录下重复点击,随时自动回放
AutoHotkey 鼠标自动化:3 步录下重复点击,随时自动回放

AutoHotkey 鼠标自动化:3 步录下重复点击,随时自动回放 【免费下载链接】AutoHotkey AutoHotkey - macro-creation and automation-oriented scripting utility for Windows. 项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkey 每天重复几… · 2026/11/4 2:21:07

TA-Lib 蜡烛图形态识别实战:61 个 CDL 函数,从三态信号到实时逐根更新
TA-Lib 蜡烛图形态识别实战:61 个 CDL 函数,从三态信号到实时逐根更新

TA-Lib 蜡烛图形态识别实战:61 个 CDL 函数,从三态信号到实时逐根更新 【免费下载链接】ta-lib-python Python wrapper for TA-Lib (http://ta-lib.org/). 项目地址: https://gitcode.com/gh_mirrors/ta/ta-lib-python 策略回测里想自动捕捉底部的… · 2026/11/4 2:21:07

Dism++ 实践指南:一个绿色工具搞定 WinSxS 清理、离线集成补丁与系统备份还原三件事
Dism++ 实践指南:一个绿色工具搞定 WinSxS 清理、离线集成补丁与系统备份还原三件事

Dism 实践指南:一个绿色工具搞定 WinSxS 清理、离线集成补丁与系统备份还原三件事 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language 一次系统更新之后… · 2026/11/4 2:21:07

AI模型量化部署核心技术解析与实践
AI模型量化部署核心技术解析与实践

1. 项目概述 作为一名在AI工程化领域深耕多年的技术专家,我见证了AI模型从实验室走向生产环境的完整历程。今天要分享的是AI应用架构师必须掌握的模型量化部署核心技术,这些技术直接决定了AI服务在真实业务场景中的性能和成本效益。 模型量化部署不是简… · 2026/11/4 12:35:24

PSO优化Kmeans在电力负荷分析中的应用实践
PSO优化Kmeans在电力负荷分析中的应用实践

1. 项目背景与核心价值 电力负荷分析是智能电网建设中的关键技术环节。传统用电行为分析往往采用固定阈值或简单统计方法,难以捕捉用户用电模式的非线性特征。我们团队在电力公司实际项目中发现,居民用电数据存在明显的时段差异性和个体差异性&#xff0… · 2026/11/4 12:35:24

分布式系统Agent无状态重启与会话恢复实践
分布式系统Agent无状态重启与会话恢复实践

1. 项目背景与核心挑战 在分布式系统架构中,服务实例的异常重启是不可避免的运维场景。当运行中的Agent进程因各种原因(如版本升级、资源调度、硬件故障等)需要重启时,如何保持业务会话的连续性成为关键挑战。传统粗暴的重启方式会… · 2026/11/4 12:35:24

GEO智能推荐系统:从技术原理到商业落地
GEO智能推荐系统:从技术原理到商业落地

1. 项目背景与核心价值 上周我在测试一个新型营销工具时,发现了一个有趣的现象:当我在某地图平台搜索"咖啡厅"时,系统优先推荐了3公里内评分4.8以上的连锁品牌店。这背后其实是品牌方使用了GEO(地理定位)智能… · 2026/11/4 12:35:24

多智能体协同四大模式解析与实战技巧
多智能体协同四大模式解析与实战技巧

1. 多智能体协同的现状与挑战 当前AI领域正从单智能体向多智能体协作范式快速演进。去年我在构建一个智能客服系统时,发现单一AI模型已经无法满足复杂业务场景需求——当用户同时咨询产品参数、价格对比和售后政策时,单个AI的响应要么顾此失彼&#xff0… · 2026/11/4 12:35:24

GEO地球静止轨道技术解析与应用场景
GEO地球静止轨道技术解析与应用场景

1. GEO技术概念解析 GEO全称Geostationary Earth Orbit,中文译为地球静止轨道。这个看似高大上的航天术语,最近突然在科技圈和投资圈火了起来。作为一名跟踪空间技术发展多年的从业者,我发现大众对GEO的认知存在不少误区——有人以为它是某种… · 2026/11/4 12:34:23

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码