fix(anthropic): clarify loop-local cache marker state

This commit is contained in:
amazingniuma-art 2026-09-28 00:45:23 +08:00
parent 2ca368d27d
commit 11b194e43b

View file

@ -2488,14 +2488,13 @@ def anthropic_messages_pt(
for content in user_content[user_content_start:]
)
):
cached_user_content: AnthropicMessagesUserMessageValues = copy.copy(user_content[-1]) # pyright: ignore[reportGeneralTypeIssues] # fresh copy per user message
user_content[-1] = copy.copy(user_content[-1])
add_cache_control_to_content(
anthropic_content_element=cast( # cast-ok: copied TypedDict is a dict
dict[str, object], cached_user_content
dict[str, object], user_content[-1]
),
original_content_element=user_message_types_block,
)
user_content[-1] = cached_user_content
elif isinstance(user_message_types_block["content"], str):
_anthropic_content_text_element: AnthropicMessagesTextParam = {
"type": "text",
@ -2799,14 +2798,13 @@ def anthropic_messages_pt(
for content in assistant_content[assistant_content_start:]
)
):
cached_assistant_content: AnthropicMessagesAssistantMessageValues = copy.copy(assistant_content[-1]) # pyright: ignore[reportGeneralTypeIssues] # fresh copy per assistant message
assistant_content[-1] = copy.copy(assistant_content[-1])
add_cache_control_to_content(
anthropic_content_element=cast( # cast-ok: copied TypedDict is a dict
dict[str, object], cached_assistant_content
dict[str, object], assistant_content[-1]
),
original_content_element=assistant_content_block,
)
assistant_content[-1] = cached_assistant_content
msg_i += 1
@ -4623,10 +4621,11 @@ class BedrockConverseMessagesProcessor:
assistant_content.append(BedrockContentBlock(text=_assistant_content))
# If content is empty/whitespace, skip it (don't add a placeholder)
# Add cache point block for assistant string content
assistant_message_cache_point_block = litellm.AmazonConverseConfig().get_cache_point_block(
assistant_message_block, block_type="content_block", model=model
) # pyright: ignore[reportGeneralTypeIssues] # reset per assistant message
if assistant_message_cache_point_block is not None:
if (
assistant_message_cache_point_block := litellm.AmazonConverseConfig().get_cache_point_block(
assistant_message_block, block_type="content_block", model=model
)
) is not None:
assistant_content.append(assistant_message_cache_point_block)
_tool_calls = assistant_message_block.get("tool_calls", [])
@ -4639,10 +4638,11 @@ class BedrockConverseMessagesProcessor:
and assistant_message_block.get("cache_control") is not None
and not any("cachePoint" in block for block in assistant_content[assistant_message_content_start:])
):
assistant_list_cache_point_block = litellm.AmazonConverseConfig().get_cache_point_block(
assistant_message_block, block_type="content_block", model=model
) # pyright: ignore[reportGeneralTypeIssues] # reset per assistant message
if assistant_list_cache_point_block is not None:
if (
assistant_list_cache_point_block := litellm.AmazonConverseConfig().get_cache_point_block(
assistant_message_block, block_type="content_block", model=model
)
) is not None:
assistant_content.append(assistant_list_cache_point_block)
msg_i += 1
@ -5023,10 +5023,11 @@ def _bedrock_converse_messages_pt(
if _assistant_content.strip():
assistant_content.append(BedrockContentBlock(text=_assistant_content))
# Add cache point block for assistant string content
assistant_message_cache_point_block = litellm.AmazonConverseConfig().get_cache_point_block(
assistant_message_block, block_type="content_block", model=model
) # pyright: ignore[reportGeneralTypeIssues] # reset per assistant message
if assistant_message_cache_point_block is not None:
if (
assistant_message_cache_point_block := litellm.AmazonConverseConfig().get_cache_point_block(
assistant_message_block, block_type="content_block", model=model
)
) is not None:
assistant_content.append(assistant_message_cache_point_block)
_tool_calls = assistant_message_block.get("tool_calls", [])
if _tool_calls:
@ -5038,10 +5039,11 @@ def _bedrock_converse_messages_pt(
and assistant_message_block.get("cache_control") is not None
and not any("cachePoint" in block for block in assistant_content[assistant_message_content_start:])
):
assistant_list_cache_point_block = litellm.AmazonConverseConfig().get_cache_point_block(
assistant_message_block, block_type="content_block", model=model
) # pyright: ignore[reportGeneralTypeIssues] # reset per assistant message
if assistant_list_cache_point_block is not None:
if (
assistant_list_cache_point_block := litellm.AmazonConverseConfig().get_cache_point_block(
assistant_message_block, block_type="content_block", model=model
)
) is not None:
assistant_content.append(assistant_list_cache_point_block)
msg_i += 1