From 4a650e7cea40b26317656d081957b6fe4d002ff6 Mon Sep 17 00:00:00 2001 From: mateo-berri <277851410+mateo-berri@users.noreply.github.com> Date: Thu, 5 Nov 2026 22:33:57 -0800 Subject: [PATCH] fix(bedrock_mantle): drop litellm-minted reasoning items before a Mantle Responses call --- litellm/llms/openai/responses/transformation.py | 2 +- .../responses/test_openai_responses_transformation.py | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/litellm/llms/openai/responses/transformation.py b/litellm/llms/openai/responses/transformation.py index d5c4f1beebd..314a1d22508 100644 --- a/litellm/llms/openai/responses/transformation.py +++ b/litellm/llms/openai/responses/transformation.py @@ -78,7 +78,7 @@ _MODEL_FAMILIES_REJECTING_TOP_LEVEL_SCHEMA_COMBINATORS: Final = ("gpt-4", "gpt-3 _PROVIDERS_WITH_OPENAI_SCHEMA_VALIDATOR: Final = frozenset({LlmProviders.AZURE, LlmProviders.OPENAI}) _PROVIDERS_VALIDATING_TOOL_CALL_ITEM_IDS: Final = frozenset({LlmProviders.AZURE, LlmProviders.OPENAI}) _PROVIDERS_REPLAYING_ONLY_THEIR_OWN_REASONING: Final = frozenset( - {LlmProviders.AZURE, LlmProviders.BEDROCK, LlmProviders.OPENAI} + {LlmProviders.AZURE, LlmProviders.BEDROCK, LlmProviders.BEDROCK_MANTLE, LlmProviders.OPENAI} ) _ROLES_READING_PROMPT_CACHE_BREAKPOINTS: Final = frozenset({"system", "developer", "user"}) _PART_TYPES_READING_PROMPT_CACHE_BREAKPOINTS: Final = frozenset({"input_text", "input_image", "input_file"}) diff --git a/tests/unit/llms/openai/responses/test_openai_responses_transformation.py b/tests/unit/llms/openai/responses/test_openai_responses_transformation.py index f4d0e8fe77f..cd300d74b59 100644 --- a/tests/unit/llms/openai/responses/test_openai_responses_transformation.py +++ b/tests/unit/llms/openai/responses/test_openai_responses_transformation.py @@ -18,6 +18,7 @@ from litellm.llms.azure.responses.transformation import AzureOpenAIResponsesAPIC from litellm.llms.azure_ai.responses.transformation import AzureAIResponsesAPIConfig from litellm.llms.base_llm.responses.transformation import BaseResponsesAPIConfig from litellm.llms.bedrock.responses.transformation import BedrockOpenAIResponsesConfig +from litellm.llms.bedrock_mantle.responses.transformation import BedrockMantleResponsesAPIConfig from litellm.llms.hosted_vllm.responses.transformation import HostedVLLMResponsesAPIConfig from litellm.llms.openai.responses.transformation import OpenAIResponsesAPIConfig from litellm.llms.xai.responses.transformation import XAIResponsesAPIConfig @@ -1352,7 +1353,13 @@ class TestOpenAIResponsesAPIConfig: return list(bridged.output) @pytest.mark.parametrize( - "config", [OpenAIResponsesAPIConfig(), AzureOpenAIResponsesAPIConfig(), BedrockOpenAIResponsesConfig()] + "config", + [ + OpenAIResponsesAPIConfig(), + AzureOpenAIResponsesAPIConfig(), + BedrockOpenAIResponsesConfig(), + BedrockMantleResponsesAPIConfig(), + ], ) def test_claude_reasoning_minted_by_the_bridge_is_dropped_before_the_history_reaches_openai(self, config): saved_claude_turn = json.loads(