{"record":{"id":"6ef71bc71e00004b","repo":"BerriAI/litellm","slug":"semanticguard-requires-llm-router-for-embeddings","errorCode":null,"errorMessage":"SemanticGuard requires llm_router for embeddings. Configure a model_list with an embedding model.","messagePattern":"SemanticGuard requires llm_router for embeddings\\. Configure a model_list with an embedding model\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/proxy/guardrails/guardrail_hooks/semantic_guard/__init__.py","lineNumber":45,"sourceCode":"    llm_router: Optional[\"Router\"] = None,\n):\n    \"\"\"\n    Initialize the Semantic Guard guardrail.\n\n    Args:\n        litellm_params: Guardrail configuration parameters\n        guardrail: Guardrail metadata\n        llm_router: LiteLLM Router instance (required for embeddings)\n\n    Returns:\n        Initialized SemanticGuardrail instance\n    \"\"\"\n    guardrail_name: Final = guardrail.get(\"guardrail_name\")\n    if not guardrail_name:\n        raise ValueError(\"SemanticGuard: guardrail_name is required\")\n\n    if llm_router is None:\n        raise ValueError(\n            \"SemanticGuard requires llm_router for embeddings. Configure a model_list with an embedding model.\"\n        )\n\n    semantic_guardrail: Final = SemanticGuardrail(\n        guardrail_name=guardrail_name,\n        llm_router=llm_router,\n        embedding_model=getattr(litellm_params, \"embedding_model\", None) or DEFAULT_SEMANTIC_GUARD_EMBEDDING_MODEL,\n        similarity_threshold=getattr(litellm_params, \"similarity_threshold\", None)\n        or DEFAULT_SEMANTIC_GUARD_SIMILARITY_THRESHOLD,\n        route_templates=getattr(litellm_params, \"route_templates\", None),\n        custom_routes_file=getattr(litellm_params, \"custom_routes_file\", None),\n        custom_routes=getattr(litellm_params, \"custom_routes\", None),\n        on_flagged_action=getattr(litellm_params, \"on_flagged_action\", \"block\"),\n        event_hook=litellm_params.mode,\n        default_on=litellm_params.default_on or False,\n    )\n\n    litellm.logging_callback_manager.add_litellm_callback(semantic_guardrail)","sourceCodeStart":27,"sourceCodeEnd":63,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/guardrails/guardrail_hooks/semantic_guard/__init__.py#L27-L63","documentation":"Error \"SemanticGuard requires llm_router for embeddings. Configure a model_list with an embedding model.\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/proxy/guardrails/guardrail_hooks/semantic_guard/__init__.py:45 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add an embedding model to the proxy model_list so llm_router can compute embeddings.","Pass a configured llm_router instance when initializing SemanticGuard."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}