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

19 statements  

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

1""" 

2Semantic Guard guardrail — embedding-based prompt injection detection. 

3 

4Uses semantic-router to match user prompts against known attack patterns. 

5""" 

6 

7from typing import TYPE_CHECKING, Final, Optional 

8 

9import litellm 

10from litellm.constants import ( 

11 DEFAULT_SEMANTIC_GUARD_EMBEDDING_MODEL, 

12 DEFAULT_SEMANTIC_GUARD_SIMILARITY_THRESHOLD, 

13) 

14from litellm.proxy.guardrails.guardrail_hooks.semantic_guard.semantic_guard import ( 

15 SemanticGuardrail, 

16) 

17from litellm.types.guardrails import SupportedGuardrailIntegrations 

18 

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

20 from litellm import Router 

21 from litellm.types.guardrails import Guardrail, LitellmParams 

22 

23 

24def initialize_guardrail( 

25 litellm_params: "LitellmParams", 

26 guardrail: "Guardrail", 

27 llm_router: Optional["Router"] = None, 

28): 

29 """ 

30 Initialize the Semantic Guard guardrail. 

31 

32 Args: 

33 litellm_params: Guardrail configuration parameters 

34 guardrail: Guardrail metadata 

35 llm_router: LiteLLM Router instance (required for embeddings) 

36 

37 Returns: 

38 Initialized SemanticGuardrail instance 

39 """ 

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

41 if not guardrail_name: 

42 raise ValueError("SemanticGuard: guardrail_name is required") 

43 

44 if llm_router is None: 

45 raise ValueError( 

46 "SemanticGuard requires llm_router for embeddings. Configure a model_list with an embedding model." 

47 ) 

48 

49 semantic_guardrail: Final = SemanticGuardrail( 

50 guardrail_name=guardrail_name, 

51 llm_router=llm_router, 

52 embedding_model=getattr(litellm_params, "embedding_model", None) or DEFAULT_SEMANTIC_GUARD_EMBEDDING_MODEL, 

53 similarity_threshold=getattr(litellm_params, "similarity_threshold", None) 

54 or DEFAULT_SEMANTIC_GUARD_SIMILARITY_THRESHOLD, 

55 route_templates=getattr(litellm_params, "route_templates", None), 

56 custom_routes_file=getattr(litellm_params, "custom_routes_file", None), 

57 custom_routes=getattr(litellm_params, "custom_routes", None), 

58 on_flagged_action=getattr(litellm_params, "on_flagged_action", "block"), 

59 event_hook=litellm_params.mode, 

60 default_on=litellm_params.default_on or False, 

61 ) 

62 

63 litellm.logging_callback_manager.add_litellm_callback(semantic_guardrail) 

64 

65 return semantic_guardrail 

66 

67 

68guardrail_initializer_registry: Final = { 

69 SupportedGuardrailIntegrations.SEMANTIC_GUARD.value: initialize_guardrail, 

70} 

71 

72guardrail_class_registry: Final = { 

73 SupportedGuardrailIntegrations.SEMANTIC_GUARD.value: SemanticGuardrail, 

74}