diff --git a/litellm/llms/openai/responses/guardrail_translation/handler.py b/litellm/llms/openai/responses/guardrail_translation/handler.py index 7a82ae9b0be..16751d0716c 100644 --- a/litellm/llms/openai/responses/guardrail_translation/handler.py +++ b/litellm/llms/openai/responses/guardrail_translation/handler.py @@ -604,8 +604,9 @@ class OpenAIResponsesHandler(BaseTranslation): await self._apply_guardrailed_texts(data, input_data, extracted, guardrail_to_apply, guardrailed_inputs) if litellm_logging_obj is not None: sanitized_input: Final = data.get("input") - litellm_logging_obj.messages = sanitized_input - litellm_logging_obj.model_call_details["messages"] = sanitized_input + sanitized_messages: Final = self.get_structured_messages(data) or [] + litellm_logging_obj.messages = sanitized_messages + litellm_logging_obj.model_call_details["messages"] = sanitized_messages litellm_logging_obj.model_call_details["input"] = sanitized_input verbose_proxy_logger.debug("OpenAI Responses API: Processed input messages: %s", data.get("input")) return data diff --git a/tests/unit/llms/openai/responses/test_openai_responses_guardrail_handler.py b/tests/unit/llms/openai/responses/test_openai_responses_guardrail_handler.py index 855301758b2..7e16dc381c9 100644 --- a/tests/unit/llms/openai/responses/test_openai_responses_guardrail_handler.py +++ b/tests/unit/llms/openai/responses/test_openai_responses_guardrail_handler.py @@ -210,13 +210,14 @@ class TestOpenAIResponsesHandlerInputProcessing: assert result["model"] == "gpt-4" @pytest.mark.asyncio - async def test_rewritten_input_replaces_logging_snapshot(self): + async def test_rewritten_input_refreshes_logging_snapshot(self): handler = OpenAIResponsesHandler() guardrail = MockGuardrail(guardrail_name="test") logging_obj = MagicMock() - logging_obj.messages = "sensitive-value" + original_messages = [{"role": "user", "content": "sensitive-value"}] + logging_obj.messages = original_messages logging_obj.model_call_details = { - "messages": "sensitive-value", + "messages": original_messages, "input": "sensitive-value", } data = {"input": "sensitive-value", "model": "gpt-4"} @@ -224,8 +225,9 @@ class TestOpenAIResponsesHandlerInputProcessing: result = await handler.process_input_messages(data, guardrail, logging_obj) assert result["input"] == "sensitive-value [GUARDRAILED]" - assert logging_obj.messages == result["input"] - assert logging_obj.model_call_details["messages"] == result["input"] + sanitized_messages = [{"role": "user", "content": result["input"]}] + assert logging_obj.messages == sanitized_messages + assert logging_obj.model_call_details["messages"] == sanitized_messages assert logging_obj.model_call_details["input"] == result["input"] @pytest.mark.asyncio