LiteLLM 缓存:4 步把重复 LLM 调用的成本打下来
【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100+ LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm
LiteLLM 是一个统一接入 100+ LLM API 的开源 AI 网关,它的响应缓存是其中性价比最高的一项优化:对重复请求直接返回已存的结果,不再二次调用上游模型,延迟和账单同时下降。本文按 4 步带你从零用起来 LiteLLM 缓存。
什么时候需要响应缓存
先判断你的场景值不值得做。假设一个客服机器人,「什么时候发货」一天被问 3000 次,答案却永远一样——每次都打模型,等于为同一答案付费 3000 遍。规则很简单:输入相同、输出稳定的请求,就该走缓存;而创意写作这类生成任务,缓存意义有限。记住一句话:问答靠缓存,创作别硬套。
最快开启 LiteLLM 缓存的方式
最快路径就是两行代码:给litellm.cache赋一个 Cache 对象,然后照常发起调用:
import litellm from litellm import Cache litellm.cache = Cache(type="local") response = litellm.completion( model="gpt-4o", messages=[{"role": "user", "content": "我的订单什么时候发货?"}], )第一次调用会命中模型并存档,第二次同样的请求直接从缓存返回,延迟从几百毫秒掉到毫秒级 ⚡。type="local"表示内存缓存,零依赖、即开即用,但进程重启就清空,适合开发调试。生产环境换成 Redis 即可:
litellm.cache = Cache(type="redis", host="localhost", port=6379)缓存后端怎么选
各种后端实现都放在 litellm/caching/ 目录里,选型只看一个问题:你跑几台机器、数据放哪?
- local:内存缓存,最快,单机器开发首选。
- redis:生产标配,多实例共享同一份缓存。
- disk:写入本地磁盘,重启不丢,适合单机长期任务。
- s3:对象存储,分布式部署和跨机房场景顺手。
- dual:同时写内存和 Redis,内存命中最快,Redis 兜底不丢。
结论:单进程开发用 local,多实例生产用 redis 或 dual,不用纠结。
语义缓存:不只抓相同文字,还抓相近意思
精确匹配有个硬伤:「旗舰款卖多少钱」和「新品价格是多少」文字不同、意图相同,却都不会命中缓存。语义缓存的做法是把问题转成向量(一组能代表语义的数字)再和历史问题比对,similarity_threshold参数控制严格程度,设 0.95 表示语义相似度达到 95% 才返回缓存。启用前需要配一个嵌入(embedding)模型。对问答类应用,语义缓存能明显抬高命中率;阈值越高风险越低,建议从 0.95 起步,边观察边调。
缓存有效期怎么控制
一条缓存活多久,由 TTL(time-to-live,存活时间)决定。如果问题的答案会随时间变化——比如价格调整、活动结束——旧缓存反而会误导用户。初始化时把ttl设成秒数,例如 3600,到期自动失效、重新计算。结论:变动内容必须显式设 TTL;相对静态的知识可以放宽甚至不设。
LiteLLM 缓存命中率怎么看
开启后盯三个数:命中率(多少请求被缓存直接拦下)、避免的调用次数(大致等于省下的钱)、延迟下降幅度。网关的管理后台还提供审计日志与费用记录,可以对照核对每次请求的来源与花费:
收尾:4 步落地路径
第 1 步,开 local 缓存验证场景是否值得;第 2 步,切到 Redis 让多实例共享;第 3 步,问答产品加语义缓存,把命中率再抬一截;第 4 步,按内容时效设好 TTL,持续盯命中率。缓存本质是在新鲜度和成本之间做取舍,把这两头守住,账单自然会稳定降下来。
【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100+ LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考