Commit graph

8 commits

Author SHA1 Message Date
7d38046a82 原因分析: 之前的代码使用了一种所谓的“顶层自动缓存”非标准写法(在请求顶层直接塞入一个全局的 cache_control),但很多中转站或 Anthropic 官方 API 并不兼容这种格式。这会导致在解析和转发的过程中,错误地给多个内容块打上了缓存标记,最终超过了官方限制的“最多 4 个”上限。
修复方案: 我重写了 adapters/cc_anthropic_adapter.py 中的 optimize_cache_control 函数,改回了 Anthropic 官方支持的**块级别缓存(block-level prompt caching)**策略。

新逻辑会严格计算名额,最多只分配 4 个缓存断点。
它会优先把断点分配给 system 和 tools(因为这两个部分最占 Token 且最稳定)。
剩下的名额会根据窗口距离,动态分配给 messages 列表中最新的那几个文本块。
代码已修改完成,你可以直接重新测试一下 Claude 系列模型,这个 invalid_request_error 报错应该已经解决了。
2026-05-07 11:57:17 +08:00
h88782481
bec7b3e5ef 修复缓存命中问题 2026-04-29 11:14:00 +08:00
h88782481
a8f5ada8e1 回退旧版本 2026-03-26 11:34:27 +08:00
h88782481
70361242ab 重构代码 2026-03-22 08:24:19 +08:00
h88782481
56faf4fcf1 优化缓存命中问题 2026-03-15 16:26:07 +08:00
h88782481
4de6db13f9 支持gimini格式,优化debug日志 2026-03-14 09:27:15 +08:00
h88782481
f193c48ce1 补全注释 2026-03-10 08:43:07 +08:00
h88782481
96fbc4da80 优化代码 2026-03-09 19:43:51 +08:00