diff --git a/litellm/proxy/guardrails/guardrail_hooks/trendai/__init__.py b/litellm/proxy/guardrails/guardrail_hooks/trendai/__init__.py index b6ca0d3a7c7..7803ac0baea 100644 --- a/litellm/proxy/guardrails/guardrail_hooks/trendai/__init__.py +++ b/litellm/proxy/guardrails/guardrail_hooks/trendai/__init__.py @@ -28,7 +28,6 @@ def initialize_guardrail(litellm_params: "LitellmParams", guardrail: "Guardrail" api_base=litellm_params.api_base, app_name=settings.app_name, fallback_on_error=settings.fallback_on_error, - mask_pii=settings.mask_pii, timeout=settings.timeout, stream_batch_size=settings.stream_batch_size, stream_overlap_size=settings.stream_overlap_size, diff --git a/litellm/proxy/guardrails/guardrail_hooks/trendai/_models.py b/litellm/proxy/guardrails/guardrail_hooks/trendai/_models.py index 2efcbb52c75..0acaf1fb0d3 100644 --- a/litellm/proxy/guardrails/guardrail_hooks/trendai/_models.py +++ b/litellm/proxy/guardrails/guardrail_hooks/trendai/_models.py @@ -11,7 +11,6 @@ from pydantic import BaseModel, ConfigDict, Field class TrendAISettings(BaseModel): app_name: str | None = None fallback_on_error: Literal["block", "allow"] = "block" - mask_pii: bool = True timeout: float = 5.0 stream_batch_size: int = 2048 stream_overlap_size: int = 256 diff --git a/litellm/proxy/guardrails/guardrail_hooks/trendai/trendai.py b/litellm/proxy/guardrails/guardrail_hooks/trendai/trendai.py index 4ed0e54abe8..c6753738ffc 100644 --- a/litellm/proxy/guardrails/guardrail_hooks/trendai/trendai.py +++ b/litellm/proxy/guardrails/guardrail_hooks/trendai/trendai.py @@ -74,7 +74,6 @@ class TrendAIGuardrail(CustomGuardrail): api_base: str | None = None, app_name: str | None = None, fallback_on_error: Literal["block", "allow"] = "block", - mask_pii: bool = True, timeout: float = 5.0, stream_batch_size: int = 2048, stream_overlap_size: int = 256, @@ -114,7 +113,6 @@ class TrendAIGuardrail(CustomGuardrail): self.api_url: str = _build_apply_guardrails_url(resolved_api_base) self.app_name: str = app_name or os.environ.get("TMV1_APPLICATION_NAME", "litellm") self.fallback_on_error: Literal["block", "allow"] = fallback_on_error - self.mask_pii: bool = mask_pii self.timeout: float = timeout self.stream_batch_size: int = stream_batch_size self.stream_overlap_size: int = stream_overlap_size @@ -129,8 +127,8 @@ class TrendAIGuardrail(CustomGuardrail): event_hook=event_hook, default_on=default_on, supported_event_hooks=self.get_supported_event_hooks(), - mask_request_content=mask_pii, - mask_response_content=mask_pii, + mask_request_content=True, + mask_response_content=True, ) @classmethod @@ -369,7 +367,7 @@ class TrendAIGuardrail(CustomGuardrail): ("TMV1-Client-Name", TMV1_CLIENT_NAME), ("TMV1-Client-Version", litellm_version), ("TMV1-Plugin-Version", PLUGIN_VERSION), - *_optional_header("prefer", "redact-pii,return=representation" if self.mask_pii else None), + ("prefer", "redact-pii,return=representation"), *_optional_header("TMV1-Request-Type", request_type), ) return MappingProxyType(dict(headers)) diff --git a/tests/test_litellm/proxy/guardrails/guardrail_hooks/trendai/test_trendai.py b/tests/test_litellm/proxy/guardrails/guardrail_hooks/trendai/test_trendai.py index 65b93c53d68..4ae752cecd4 100644 --- a/tests/test_litellm/proxy/guardrails/guardrail_hooks/trendai/test_trendai.py +++ b/tests/test_litellm/proxy/guardrails/guardrail_hooks/trendai/test_trendai.py @@ -33,7 +33,6 @@ def _guardrail( *, app_name: str | None = None, fallback_on_error: Literal["block", "allow"] = "block", - mask_pii: bool = True, timeout: float = 5.0, stream_batch_size: int = 2048, stream_overlap_size: int = 256, @@ -48,7 +47,6 @@ def _guardrail( api_base=api_base, app_name=app_name, fallback_on_error=fallback_on_error, - mask_pii=mask_pii, timeout=timeout, stream_batch_size=stream_batch_size, stream_overlap_size=stream_overlap_size, @@ -133,6 +131,15 @@ def test_invalid_timeout_is_rejected() -> None: _guardrail(timeout=0) +def test_pii_masking_is_not_configurable_on_the_guardrail() -> None: + with pytest.raises(TypeError, match="mask_pii"): + TrendAIGuardrail( + api_key="test-key", + api_base="https://guard.example.com/v3.0/aiSecurity", + mask_pii=False, + ) + + @pytest.mark.asyncio async def test_scan_uses_injected_client_and_required_headers() -> None: captured_request: httpx.Request | None = None