news 2026/8/24 10:00:29

LiteLLM 缓存配置指南:4 类后端怎么选,重复请求的账单能省多少

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LiteLLM 缓存配置指南:4 类后端怎么选,重复请求的账单能省多少

LiteLLM 缓存配置指南:4 类后端怎么选,重复请求的账单能省多少

【免费下载链接】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 的网关,其缓存机制在请求发往模型前先查历史结果:命中直接返回,未命中再调用并写入。本文沿一条重复请求的路径,讲命中逻辑、后端选型、TTL 与阈值调参,以及上线后怎么算账。

请求进来先查哪里:命中与未命中的判定

缓存不是“存了再说”。每次completion()调用,LiteLLM 缓存会先构造一个缓存键:

  • 键由模型名、请求参数(temperature、max_tokens 等)与消息内容共同决定,任一参数不同即视为不同请求;
  • 键做 SHA256 哈希后拼接命名空间前缀,多业务共用同一后端时互不污染;
  • 查不到才真正调用上游模型,响应回来后再写回缓存。

缓存默认开启,也可设为default_off改为默认不缓存、由请求显式声明开启;单次调用想跳过,传cache={"no-cache": True}即可。各后端的实现集中在源码目录litellm/caching/下,排查问题可以按文件名直接定位到对应存储。

🗂️ 三步启用 Redis 缓存:初始化、命名空间与 TTL

单进程开发用type="local"的内存缓存即可;多实例部署必须上 Redis,否则每个进程的缓存各自为政,命中率会明显偏低。

import litellm from litellm import Cache litellm.cache = Cache( type="redis", host="localhost", port=6379, namespace="my-project", # 不同命名空间的键互不共享 default_in_redis_ttl=86400, # 默认 1 天过期(秒) )

三步要点:

  1. 初始化:一行Cache()挂到litellm.cache,全进程生效;
  2. 命名空间:按项目或租户划分键空间,后续做隔离与清理不用动数据;
  3. TTL:全局默认值用default_in_redis_ttl(Redis)或default_in_memory_ttl(内存),单个键的过期时间可在请求级覆盖。

对象存储也能当缓存:type="s3"配桶名与 region,Azure Blob、GCS 同理,适合要和现有存储对齐权限与合规体系的场景;代价是对象存储延迟高于 Redis,高频热数据不建议放这里。

语义缓存阈值如何取值

精确匹配要求消息一字不差;而 LiteLLM 语义缓存会把消息向量化后做相似度检索,措辞不同也能命中:

litellm.cache = Cache( type="redis-semantic", host="localhost", port=6379, similarity_threshold=0.95, # 余弦相似度低于该值视为未命中 redis_semantic_cache_embedding_model="text-embedding-3-small", )

similarity_threshold是这套机制里最敏感的参数:

  • 取高(0.97 以上):只命中几乎同义的请求,安全但收益小;
  • 取低(0.9 以下):“怎么退订”和“怎么退款”可能互相命中,返回错误答案;
  • 建议从 0.95 起步,拿真实流量看一周命中样本:误命中多就上调,命中率上不去且请求高度重复再下调。

语义缓存每次请求多一次 embedding 调用,请求量低或对延迟敏感时,精确匹配反而更划算。

caching_groups 跨模型复用与请求级动态控制

两个进阶能力都作用在“缓存键怎么算”上:

  • caching_groups:在metadata里传caching_groups=[["gpt-4o", "claude-3-5-sonnet"]],同组模型共用一个缓存键。主模型限流切到备用模型时能直接复用结果,也方便在切换模型时做 LLM API 降本对比;
  • 请求级覆盖:completion()cache参数可对单次调用指定过期时间与空间,如cache={"s-maxage": 3600, "namespace": "user_123"},表示这条结果只缓存一小时且归属独立用户空间。

这套粒度适合“大部分请求走默认缓存、个别实时接口例外”的系统,不用为少数请求牺牲全局配置。

📊 上线后如何核算:命中率、成本与响应时间

缓存值不值,看四个数:

指标含义获取位置
命中率直接由缓存返回的请求占比代理访问日志
成本节省命中次数 × 单次调用均价代理成本统计
响应时间命中 / 未命中两组 P50、P95 对比APM 或日志
存储占用Redis 内存或对象存储用量后端自身监控

接入日志后端后可逐条看到每次调用的耗时与花费,把命中流量和真实上游流量分开统计。做缓存命中率优化的一般经验:低于 20% 先查键是否因参数漂移频繁变化(例如请求里带了时间戳);高于 60% 则可以考虑放宽 TTL,进一步压上游调用量。

聊天机器人与批量请求的落地方式

  • 聊天机器人:FAQ 复用率最高,用命名空间分“全局知识 / 会话级”两层,全局问答共用缓存,带个人上下文的消息单独空间或不缓存;
  • 批量请求:离线任务先对输入去重,同批任务统一命名空间、跑完整批失效;批量中间结果挂no-cache,避免污染线上缓存。

四个落地注意事项

  1. 先用小流量命名空间灰度,观察命中率与误命中,再全量放开;
  2. TTL 跟着数据时效走:知识类按周,行情新闻类按分钟甚至不缓存;
  3. 语义缓存阈值上线后要抽检命中样本,不能只看命中率数字;
  4. 给命名空间级 TTL 兜底,定期清理长尾键,防止存储无限增长。

把上面的 Redis 配置和命名空间策略套到现有部署上,先跑一周命中率与成本数据,再回填 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),仅供参考

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

本地部署离线翻译服务:MTranServer 50ms 实战指南

本地部署离线翻译服务:MTranServer 50ms 实战指南 【免费下载链接】MTranServer Offline translation model server with low resource consumption, fast speed, and private deployment capability. 低资源占用速度快可私有部署的离线翻译模型服务器 项目地址: …

作者头像 李华
网站建设 2026/8/24 9:55:12

SAP第二代增强:从函数模块到可配置架构的演进与实践

1. 项目缘起:从“打补丁”到“搭积木”的演进在ERP这类大型企业应用软件的定制化开发中,我们经常会遇到一个经典难题:标准功能无法完全满足某个特定客户的独特业务流程。十多年前,当我第一次接触SAP系统时,面对这种需求…

作者头像 李华
网站建设 2026/8/24 9:54:27

LeetCode面试经典150题高效刷题指南与实战技巧

1. LeetCode面试经典150题的价值与定位在程序员求职的竞技场上,LeetCode就像一把双刃剑——用得好能劈开大厂offer的大门,用不好反而会陷入无效刷题的泥潭。我花了三个月时间系统攻克这150道高频面试题,最大的收获不是刷题数量,而…

作者头像 李华
网站建设 2026/8/24 9:51:19

泛素化修饰:如何精准调控蛋白质命运与细胞信号网络?

简述: 泛素化作为一种动态、可逆的蛋白质翻译后修饰,通过E1-E2-E3级联酶促反应将泛素分子共价连接至底物蛋白,调控蛋白质降解、信号转导、DNA修复及免疫应答等关键生命过程。泛素链的连接多样性(同型/异型、直链/分支)…

作者头像 李华