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

📅 2026/8/24 10:00:30
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/litellmLiteLLM 是统一调用 100 LLM API 的网关其缓存机制在请求发往模型前先查历史结果命中直接返回未命中再调用并写入。本文沿一条重复请求的路径讲命中逻辑、后端选型、TTL 与阈值调参以及上线后怎么算账。请求进来先查哪里命中与未命中的判定缓存不是“存了再说”。每次completion()调用LiteLLM 缓存会先构造一个缓存键键由模型名、请求参数temperature、max_tokens 等与消息内容共同决定任一参数不同即视为不同请求键做 SHA256 哈希后拼接命名空间前缀多业务共用同一后端时互不污染查不到才真正调用上游模型响应回来后再写回缓存。缓存默认开启也可设为default_off改为默认不缓存、由请求显式声明开启单次调用想跳过传cache{no-cache: True}即可。各后端的实现集中在源码目录litellm/caching/下排查问题可以按文件名直接定位到对应存储。️ 三步启用 Redis 缓存初始化、命名空间与 TTL单进程开发用typelocal的内存缓存即可多实例部署必须上 Redis否则每个进程的缓存各自为政命中率会明显偏低。import litellm from litellm import Cache litellm.cache Cache( typeredis, hostlocalhost, port6379, namespacemy-project, # 不同命名空间的键互不共享 default_in_redis_ttl86400, # 默认 1 天过期秒 )三步要点初始化一行Cache()挂到litellm.cache全进程生效命名空间按项目或租户划分键空间后续做隔离与清理不用动数据TTL全局默认值用default_in_redis_ttlRedis或default_in_memory_ttl内存单个键的过期时间可在请求级覆盖。对象存储也能当缓存types3配桶名与 regionAzure Blob、GCS 同理适合要和现有存储对齐权限与合规体系的场景代价是对象存储延迟高于 Redis高频热数据不建议放这里。语义缓存阈值如何取值精确匹配要求消息一字不差而 LiteLLM 语义缓存会把消息向量化后做相似度检索措辞不同也能命中litellm.cache Cache( typeredis-semantic, hostlocalhost, port6379, similarity_threshold0.95, # 余弦相似度低于该值视为未命中 redis_semantic_cache_embedding_modeltext-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避免污染线上缓存。四个落地注意事项先用小流量命名空间灰度观察命中率与误命中再全量放开TTL 跟着数据时效走知识类按周行情新闻类按分钟甚至不缓存语义缓存阈值上线后要抽检命中样本不能只看命中率数字给命名空间级 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),仅供参考