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
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 12:01 +0000
1from typing import TYPE_CHECKING, Final
3import litellm
4from litellm.proxy.guardrails.guardrail_hooks.openai.moderations import (
5 OpenAIModerationGuardrail,
6)
7from litellm.types.guardrails import SupportedGuardrailIntegrations
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
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")
18 optional_params: Final = getattr(litellm_params, "optional_params", None)
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 )
36 litellm.logging_callback_manager.add_litellm_callback(openai_moderation_guardrail)
38 return openai_moderation_guardrail
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)
49guardrail_initializer_registry: Final = {
50 SupportedGuardrailIntegrations.OPENAI_MODERATION.value: initialize_guardrail,
51}
54guardrail_class_registry: Final = {
55 SupportedGuardrailIntegrations.OPENAI_MODERATION.value: OpenAIModerationGuardrail,
56}