Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions litellm/litellm_core_utils/prompt_templates/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -4131,6 +4131,7 @@ async def _bedrock_converse_messages_pt_async( # noqa: PLR0915
OpenAIMessageContentListBlock, element
),
block_type="content_block",
model=model,
Comment thread
ZPerling marked this conversation as resolved.
)
)
if _cache_point_block is not None:
Expand All @@ -4142,7 +4143,7 @@ async def _bedrock_converse_messages_pt_async( # noqa: PLR0915
_part = BedrockContentBlock(text=messages[msg_i]["content"])
_cache_point_block = (
litellm.AmazonConverseConfig()._get_cache_point_block(
message_block, block_type="content_block"
message_block, block_type="content_block", model=model
)
)
user_content.append(_part)
Expand Down Expand Up @@ -4294,6 +4295,7 @@ async def _bedrock_converse_messages_pt_async( # noqa: PLR0915
OpenAIMessageContentListBlock, element
),
block_type="content_block",
model=model,
)
)
if _cache_point_block is not None:
Expand All @@ -4311,7 +4313,7 @@ async def _bedrock_converse_messages_pt_async( # noqa: PLR0915
# Add cache point block for assistant string content
_cache_point_block = (
litellm.AmazonConverseConfig()._get_cache_point_block(
assistant_message_block, block_type="content_block"
assistant_message_block, block_type="content_block", model=model
)
)
if _cache_point_block is not None:
Expand Down Expand Up @@ -4505,6 +4507,7 @@ def _bedrock_converse_messages_pt( # noqa: PLR0915
OpenAIMessageContentListBlock, element
),
block_type="content_block",
model=model,
)
)
if _cache_point_block is not None:
Expand All @@ -4514,7 +4517,7 @@ def _bedrock_converse_messages_pt( # noqa: PLR0915
_part = BedrockContentBlock(text=messages[msg_i]["content"])
_cache_point_block = (
litellm.AmazonConverseConfig()._get_cache_point_block(
message_block, block_type="content_block"
message_block, block_type="content_block", model=model
)
)
user_content.append(_part)
Expand Down Expand Up @@ -4659,6 +4662,7 @@ def _bedrock_converse_messages_pt( # noqa: PLR0915
OpenAIMessageContentListBlock, element
),
block_type="content_block",
model=model,
)
)
if _cache_point_block is not None:
Expand All @@ -4671,7 +4675,7 @@ def _bedrock_converse_messages_pt( # noqa: PLR0915
# Add cache point block for assistant string content
_cache_point_block = (
litellm.AmazonConverseConfig()._get_cache_point_block(
assistant_message_block, block_type="content_block"
assistant_message_block, block_type="content_block", model=model
)
)
if _cache_point_block is not None:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1318,6 +1318,47 @@ async def test_assistant_message_cache_control():
assert assistant_content[1]["cachePoint"]["type"] == "default"


@pytest.mark.asyncio
async def test_assistant_message_cache_control_with_ttl_claude_45():
"""Test cache_control TTL is preserved for Claude 4.5 Bedrock models."""
from litellm.litellm_core_utils.prompt_templates.factory import (
BedrockConverseMessagesProcessor,
_bedrock_converse_messages_pt,
)

messages = [
{"role": "user", "content": "Hello"},
{
"role": "assistant",
"content": "Hi there!",
"cache_control": {"type": "ephemeral", "ttl": "1h"},
},
]

model = "bedrock/anthropic.claude-sonnet-4.5-20250514-v1:0"

result = _bedrock_converse_messages_pt(
messages=messages,
model=model,
llm_provider="bedrock_converse",
)

async_result = (
await BedrockConverseMessagesProcessor._bedrock_converse_messages_pt_async(
messages=messages,
model=model,
llm_provider="bedrock_converse",
)
)

assert result == async_result

assistant_content = result[1]["content"]
assert "cachePoint" in assistant_content[1]
assert assistant_content[1]["cachePoint"]["type"] == "default"
assert assistant_content[1]["cachePoint"]["ttl"] == "1h"


@pytest.mark.asyncio
async def test_assistant_message_list_content_cache_control():
"""Test assistant messages with list content and cache_control."""
Expand Down
Loading