![[Bug]: Prompt caching broken for Bedrock Application Inference Profiles via /v1/messages endpoint](https://www.chat-gpts.plus/wp-content/uploads/2026/07/26625-4d39e2a9.jpg)
[Bug]: Prompt caching broken for Bedrock Application Inference Profiles via /v1/messages endpoint
快速结论:当使用 Bedrock Application Inference Profiles(ARN 格式)通过 LiteLLM 的 /v1/messages 端点(Anthropic 协议)时,cache_control 指令会被静默丢弃,导致 prompt caching 无法触发。优先排查 is_anthropic_claude_model() 函数是否对 ARN 模型字符串返回 False。
问题场景
用户在 LiteLLM 中配置了 Bedrock App Inference Profile(ARN 格式,如 bedrock/converse/arn:aws:bedrock:us-east-1:ACCOUNT:application-inference-profile/PROFILE_ID),并通过 Claude Code 或其他工具调用 /v1/messages(Anthropic 端点)发送带有 cache_control 指令的请求。prompt caching 从未激活,但同样的模型通过 /v1/chat/completions(OpenAI 端点)可以正常工作。
报错原文
# 没有显式报错,但缓存 token 数为零:
# Response 中无 cache_creation_input_tokens 或 cache_read_input_tokens
# Bedrock CloudWatch 日志确认请求中没有 cachePoint 块
原因分析
核心问题出在 litellm/llms/anthropic/experimental_pass_through/adapters/transformation.py 中的 is_anthropic_claude_model() 函数(约第719行)。该函数通过检查模型字符串中是否包含 "anthropic" 或 "claude" 来判断是否为 Claude 模型:
return "anthropic" in model_lower or "claude" in model_lower
对于 Bedrock Application Inference Profiles,模型字符串是 ARN 格式,如 converse/arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abcdef123456,其中既不包含 "anthropic" 也不包含 "claude"。因此,_add_cache_control_if_applicable() 会跳过保留 cache_control 的操作,导致下游 Bedrock Converse API 永远收不到 cachePoint 块。
环境排查
- LiteLLM 版本:v1.83.7-stable 至 v1.83.13-nightly 均受影响(用户测试到 v1.92.0-dev 仍未修复)
- 模型配置:使用
bedrock/converse/arn:aws:bedrock:...:application-inference-profile/...格式 - 请求端点:
/v1/messages(Anthropic 协议,如 Claude Code 使用)与/v1/chat/completions(OpenAI 协议)对比
解决步骤
- (可优先尝试)修改
is_anthropic_claude_model()函数,增加对 Bedrock ARN 的检测。将原来的return "anthropic" in model_lower or "claude" in model_lower改为:return "anthropic" in model_lower or "claude" in model_lower or ( "arn:" in model_lower and "bedrock" in model_lower )注意:该修复在 Issue #26627 中提交,但截至 v1.92.0-dev 仍未合并入主线。
- 临时规避方案:如果可能,改用
/v1/chat/completions(OpenAI 端点)发送请求,该路径不受此 Bug 影响,可正常触发 prompt caching。 - 监控确认:使用 Bedrock CloudWatch 检查模型调用日志,确认请求中是否包含
cachePoint块。
验证方法
发送一个带 cache_control 的请求到 /v1/messages 端点,检查响应中是否出现 cache_creation_input_tokens 和 cache_read_input_tokens 字段。也可以通过 Bedrock CloudWatch 日志确认请求 body 中是否包含 cachePoint 块。同样的请求通过 /v1/chat/completions 端点应能正确返回缓存 token 数。



