From 7c3c805154e1419baa02c00453d3a01bf70a045f Mon Sep 17 00:00:00 2001 From: factnn <166481866+factnn@users.noreply.github.com> Date: Wed, 24 Jun 2026 14:51:50 +0800 Subject: [PATCH] fix: only strip extra fields from assistant messages in Mistral --- litellm/llms/mistral/chat/transformation.py | 2 +- .../mistral/test_mistral_chat_transformation.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/litellm/llms/mistral/chat/transformation.py b/litellm/llms/mistral/chat/transformation.py index 6e8f465da85..b21998aa273 100644 --- a/litellm/llms/mistral/chat/transformation.py +++ b/litellm/llms/mistral/chat/transformation.py @@ -296,7 +296,7 @@ class MistralConfig(OpenAIGPTConfig): @staticmethod def _strip_extra_fields(messages: list[AllMessageValues]) -> list[AllMessageValues]: for m in messages: - if isinstance(m, dict): + if isinstance(m, dict) and m.get("role") == "assistant": m.pop("metadata", None) m.pop("provider_specific_fields", None) m.pop("thinking_blocks", None) diff --git a/tests/test_litellm/llms/mistral/test_mistral_chat_transformation.py b/tests/test_litellm/llms/mistral/test_mistral_chat_transformation.py index c0ed90efda0..b03d7a39897 100644 --- a/tests/test_litellm/llms/mistral/test_mistral_chat_transformation.py +++ b/tests/test_litellm/llms/mistral/test_mistral_chat_transformation.py @@ -281,6 +281,21 @@ class TestMistralReasoningSupport: assert "cache_control" not in msg assert "reasoning_content" not in msg + def test_user_message_extra_fields_are_preserved(self): + """GH#30882: user messages should not be stripped of extra fields.""" + mistral_config = MistralConfig() + messages: List[AllMessageValues] = [ + cast( + AllMessageValues, + {"role": "user", "content": "Question?", "reasoning_content": "noise"}, + ) + ] + result = mistral_config._transform_messages(messages, "mistral/mistral-large-latest") + assert len(result) == 1 + msg = cast(dict, result[0]) + assert msg["role"] == "user" + assert msg["reasoning_content"] == "noise" + def test_transform_request_magistral_with_reasoning(self): """Test transform_request method for magistral model with reasoning.""" mistral_config = MistralConfig()