先解释两个词,后面都用得上:
我们的场景:三个模型(DeepSeek V4 Flash、V4 Pro、GLM-5.3)都走腾讯 Copilot 官方 API 通道,日常写代码。某天查账发现 GLM-5.3 只占了 4.5% 的请求数,却烧掉了 98.8% 的积分,我怀疑缓存没生效。于是做了四组专项实验。
用最小客户端直连官方端点(绕过一切中间层,排除框架干扰),模拟真实请求形态:长系统提示 + 4 个工具定义。同一请求体连发两次,读取命中数(hit)和本次扣费(credit):
模型 | 第1次 hit/扣费 | 第2次 hit/扣费 |
|---|---|---|
GLM-5.3 | 0 / 0.46 | 0 / 0.46 |
DeepSeek V4 Flash | 0 / 0.12 | 2560(命中96%)/ 0.01 |
DeepSeek V4 Pro | 0 / 0.38 | 2688(命中98%)/ 0.04 |
同样条件下,Flash 和 Pro 第二次就命中 96-98% 的缓存,扣费降了 89-92%;GLM-5.3 第二次依然 0 命中、扣费分文不减。第一反应:腾讯是不是根本不缓存 GLM?
把 GLM-5.3 同一请求改成零间隔连发两次:
第1次: hit=0 扣费 0.45
第2次: hit=2286 扣费 0.16 ← 命中90%,降价64%第二次命中了,扣费也真降了。说明 GLM-5.3 支持缓存,只是不稳定——第一次实验的"完全不缓存"是运气不好。
给请求加上 prompt_cache_key(很多教程说这是开启缓存的参数)连发两次:
第1次: hit=0 扣费 0.45
第2次: hit=0 扣费 0.46带了这个参数,两次全部 miss。这个参数对 GLM-5.3 不但没用,反而彻底破坏了缓存。
固定同一请求(4 个工具 + 2540 tokens 系统提示),连发 10 次,间隔 0.5 秒:
#1 hit=2496 扣费 0.13 HIT
#2 hit=0 扣费 0.46 MISS
#3 hit=2286 扣费 0.18 HIT
#4 hit=0 扣费 0.46 MISS
#5 hit=2496 扣费 0.14 HIT
#6 hit=0 扣费 0.46 MISS
#7 hit=2336 扣费 0.21 HIT
#8 hit=0 扣费 0.46 MISS
#9 hit=0 扣费 0.46 MISS
#10 hit=0 扣费 0.45 MISS命中率 4/10。注意这个规律:HIT 和 MISS 几乎是交替出现的(#1H #2M #3H #4M #5H #6M #7H #8M……),不是随机,是轮询。
这基本可以解释一切:GLM-5.3 在腾讯侧是多个服务副本轮流接请求,但各副本的缓存不共享。请求被轮流分发——轮到"已经算过这个前缀"的副本,命中,便宜(0.13-0.21);轮到"还没算过"的副本,全价重算(0.45-0.46)。相当于两个客服轮流接你的电话,只有其中一个记得你上次说过什么,而系统每次都随机分配。
prompt_cache_key:实测对 GLM 是反效果,会彻底关掉缓存。POST https://copilot.tencent.com/v2/chat/completions,Authorization: Bearer <官方key>,stream: true + stream_options.include_usage: true(非流式返回 400),max_tokens: 150,GLM 组 reasoning_effort: "low"usage.prompt_cache_hit_tokens(命中)、usage.prompt_cache_miss_tokens(未命中)、usage.credit(本次扣费)原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。