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
« 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.
4Uses semantic-router to match user prompts against known attack patterns.
5"""
7from typing import TYPE_CHECKING, Final, Optional
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
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
24def initialize_guardrail(
25 litellm_params: "LitellmParams",
26 guardrail: "Guardrail",
27 llm_router: Optional["Router"] = None,
28):
29 """
30 Initialize the Semantic Guard guardrail.
32 Args:
33 litellm_params: Guardrail configuration parameters
34 guardrail: Guardrail metadata
35 llm_router: LiteLLM Router instance (required for embeddings)
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")
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 )
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 )
63 litellm.logging_callback_manager.add_litellm_callback(semantic_guardrail)
65 return semantic_guardrail
68guardrail_initializer_registry: Final = {
69 SupportedGuardrailIntegrations.SEMANTIC_GUARD.value: initialize_guardrail,
70}
72guardrail_class_registry: Final = {
73 SupportedGuardrailIntegrations.SEMANTIC_GUARD.value: SemanticGuardrail,
74}