Coverage for .venv/lib/python3.13/site-packages/litellm/proxy/guardrails/guardrail_hooks/openai/__init__.py: 33%

22 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 12:01 +0000

1from typing import TYPE_CHECKING, Final 

2 

3import litellm 

4from litellm.proxy.guardrails.guardrail_hooks.openai.moderations import ( 

5 OpenAIModerationGuardrail, 

6) 

7from litellm.types.guardrails import SupportedGuardrailIntegrations 

8 

9if TYPE_CHECKING: 9 ↛ 10line 9 didn't jump to line 10 because the condition on line 9 was never true

10 from litellm.types.guardrails import Guardrail, LitellmParams 

11 

12 

13def initialize_guardrail(litellm_params: "LitellmParams", guardrail: "Guardrail"): 

14 guardrail_name: Final = guardrail.get("guardrail_name") 

15 if not guardrail_name: 

16 raise ValueError("OpenAI Moderation: guardrail_name is required") 

17 

18 optional_params: Final = getattr(litellm_params, "optional_params", None) 

19 

20 openai_moderation_guardrail: Final = OpenAIModerationGuardrail( 

21 guardrail_name=guardrail_name, 

22 **{ 

23 **litellm_params.model_dump(exclude_none=True), 

24 "api_key": litellm_params.api_key, 

25 "api_base": litellm_params.api_base, 

26 "default_on": litellm_params.default_on, 

27 "event_hook": litellm_params.mode, 

28 "model": litellm_params.model, 

29 "streaming_end_of_stream_only": _get_config_value( 

30 litellm_params, optional_params, "streaming_end_of_stream_only" 

31 ), 

32 "streaming_sampling_rate": _get_config_value(litellm_params, optional_params, "streaming_sampling_rate"), 

33 }, 

34 ) 

35 

36 litellm.logging_callback_manager.add_litellm_callback(openai_moderation_guardrail) 

37 

38 return openai_moderation_guardrail 

39 

40 

41def _get_config_value(litellm_params, optional_params, attribute_name): 

42 if optional_params is not None: 

43 value: Final = getattr(optional_params, attribute_name, None) 

44 if value is not None: 

45 return value 

46 return getattr(litellm_params, attribute_name, None) 

47 

48 

49guardrail_initializer_registry: Final = { 

50 SupportedGuardrailIntegrations.OPENAI_MODERATION.value: initialize_guardrail, 

51} 

52 

53 

54guardrail_class_registry: Final = { 

55 SupportedGuardrailIntegrations.OPENAI_MODERATION.value: OpenAIModerationGuardrail, 

56}