diff --git a/litellm/integrations/opentelemetry.py b/litellm/integrations/opentelemetry.py index e49f0fabdaa..0af016feb26 100644 --- a/litellm/integrations/opentelemetry.py +++ b/litellm/integrations/opentelemetry.py @@ -329,6 +329,7 @@ class OpenTelemetry(CustomLogger): ``self.message_logging`` flag is consulted dynamically per request). ``"true"``/``"1"`` map to ``EVENT_ONLY`` per the contrib convention. + ``"false"``/``"0"`` map to ``NO_CONTENT``. Unknown values are ignored. """ explicit = self.config.capture_message_content or os.getenv( @@ -339,6 +340,8 @@ class OpenTelemetry(CustomLogger): normalized = explicit.upper() if normalized in ("TRUE", "1"): return CAPTURE_MODE_EVENT_ONLY + if normalized in ("FALSE", "0"): + return CAPTURE_MODE_NO_CONTENT if normalized in _VALID_CAPTURE_MODES: return normalized return None diff --git a/tests/test_litellm/integrations/test_opentelemetry.py b/tests/test_litellm/integrations/test_opentelemetry.py index 97e57240a96..bea718dfea0 100644 --- a/tests/test_litellm/integrations/test_opentelemetry.py +++ b/tests/test_litellm/integrations/test_opentelemetry.py @@ -491,6 +491,12 @@ class TestOpenTelemetryCaptureMessageContent(unittest.TestCase): _, mode = self._make(env="true") self.assertEqual(mode, "EVENT_ONLY") + def test_env_var_legacy_false_maps_to_no_content(self): + for env in ("false", "0"): + with self.subTest(env=env): + _, mode = self._make(env=env) + self.assertEqual(mode, "NO_CONTENT") + def test_env_var_unknown_value_falls_through_to_legacy(self): _, mode = self._make(env="garbage", message_logging=True) self.assertEqual(mode, "SPAN_AND_EVENT")