Coverage for .venv/lib/python3.13/site-packages/litellm/proxy/guardrails/guardrail_hooks/compresr/__init__.py: 31%
26 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 __future__ import annotations
3from typing import TYPE_CHECKING, Final
5from litellm.types.guardrails import (
6 GuardrailEventHooks,
7 Mode,
8 SupportedGuardrailIntegrations,
9)
11from .compresr import CompresrGuardrail
13if TYPE_CHECKING: 13 ↛ 14line 13 didn't jump to line 14 because the condition on line 13 was never true
14 from litellm.types.guardrails import Guardrail, LitellmParams
17def _coerce_event_hook(
18 mode: str | list[str] | Mode,
19) -> GuardrailEventHooks | list[GuardrailEventHooks] | Mode:
20 if isinstance(mode, Mode):
21 return mode
22 if isinstance(mode, list):
23 return [GuardrailEventHooks(item) for item in mode]
24 return GuardrailEventHooks(mode)
27def _get_optional_value(litellm_params: LitellmParams, optional_params: object | None, attribute_name: str) -> object:
28 if optional_params is not None:
29 value: Final = getattr(optional_params, attribute_name, None)
30 if value is not None:
31 return value
32 return getattr(litellm_params, attribute_name, None)
35def initialize_guardrail(litellm_params: LitellmParams, guardrail: Guardrail) -> CompresrGuardrail:
36 import litellm
38 optional_params: Final = getattr(litellm_params, "optional_params", None)
40 _callback: Final = CompresrGuardrail(
41 api_base=litellm_params.api_base,
42 api_key=litellm_params.api_key,
43 model=litellm_params.model,
44 target_compression_ratio=_get_optional_value(litellm_params, optional_params, "target_compression_ratio"),
45 coarse=_get_optional_value(litellm_params, optional_params, "coarse"),
46 min_chars_to_compress=_get_optional_value(litellm_params, optional_params, "min_chars_to_compress"),
47 compress_tool_outputs=_get_optional_value(litellm_params, optional_params, "compress_tool_outputs"),
48 compress_system=_get_optional_value(litellm_params, optional_params, "compress_system"),
49 compress_history=_get_optional_value(litellm_params, optional_params, "compress_history"),
50 compress_last_user=_get_optional_value(litellm_params, optional_params, "compress_last_user"),
51 enable_retrieval=_get_optional_value(litellm_params, optional_params, "enable_retrieval"),
52 max_bytes_per_call=_get_optional_value(litellm_params, optional_params, "max_bytes_per_call"),
53 allow_bypass_header=_get_optional_value(litellm_params, optional_params, "allow_bypass_header"),
54 dynamic=_get_optional_value(litellm_params, optional_params, "dynamic"),
55 dynamic_min_ratio=_get_optional_value(litellm_params, optional_params, "dynamic_min_ratio"),
56 dynamic_max_ratio=_get_optional_value(litellm_params, optional_params, "dynamic_max_ratio"),
57 compression_params=_get_optional_value(litellm_params, optional_params, "compression_params"),
58 guardrail_name=guardrail["guardrail_name"],
59 event_hook=_coerce_event_hook(litellm_params.mode),
60 default_on=litellm_params.default_on or False,
61 unreachable_fallback=litellm_params.unreachable_fallback,
62 )
63 litellm.logging_callback_manager.add_litellm_callback( # pyright: ignore[reportUnknownMemberType] # callback manager is untyped
64 _callback
65 )
66 return _callback
69guardrail_initializer_registry: Final = {
70 SupportedGuardrailIntegrations.COMPRESR.value: initialize_guardrail,
71}
73guardrail_class_registry: Final = {
74 SupportedGuardrailIntegrations.COMPRESR.value: CompresrGuardrail,
75}