Coverage for .venv/lib/python3.13/site-packages/litellm/proxy/guardrails/guardrail_hooks/agent_365/__init__.py: 24%
28 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
3from litellm.types.guardrails import SupportedGuardrailIntegrations
4from litellm.types.proxy.guardrails.guardrail_hooks.agent_365 import (
5 AGENT_365_PROD_API_BASE,
6 AGENT_365_PROD_RESOURCE_APP_ID,
7)
9from .agent_365 import Agent365Guardrail
11if TYPE_CHECKING: 11 ↛ 12line 11 didn't jump to line 12 because the condition on line 11 was never true
12 from litellm.types.guardrails import Guardrail, LitellmParams
15def initialize_guardrail(litellm_params: "LitellmParams", guardrail: "Guardrail") -> Agent365Guardrail:
16 import litellm
17 from litellm.secret_managers.main import get_secret_str
19 tenant_id: Final = litellm_params.tenant_id or get_secret_str("AGENT365_TENANT_ID")
20 client_id: Final = litellm_params.client_id or get_secret_str("AGENT365_CLIENT_ID")
21 client_secret: Final = (
22 litellm_params.client_secret or litellm_params.api_key or get_secret_str("AGENT365_CLIENT_SECRET")
23 )
24 api_base: Final = litellm_params.api_base or get_secret_str("AGENT365_API_BASE")
25 resource_app_id: Final = litellm_params.resource_app_id or get_secret_str("AGENT365_RESOURCE_APP_ID")
27 if not tenant_id:
28 raise ValueError("Microsoft Agent 365: tenant_id is required")
29 if not client_id:
30 raise ValueError("Microsoft Agent 365: client_id is required")
31 if not client_secret:
32 raise ValueError(
33 "Microsoft Agent 365: client secret is required. Set client_secret, api_key, or AGENT365_CLIENT_SECRET"
34 )
36 guardrail_name: Final = guardrail.get("guardrail_name")
37 if not guardrail_name:
38 raise ValueError("Microsoft Agent 365: guardrail_name is required")
40 agent_365_guardrail: Final = Agent365Guardrail(
41 guardrail_name=guardrail_name,
42 tenant_id=tenant_id,
43 client_id=client_id,
44 client_secret=client_secret,
45 api_base=api_base or AGENT_365_PROD_API_BASE,
46 resource_app_id=resource_app_id or AGENT_365_PROD_RESOURCE_APP_ID,
47 agent_id=litellm_params.agent_id,
48 request_timeout=litellm_params.timeout if litellm_params.timeout is not None else 10.0,
49 unreachable_fallback=litellm_params.unreachable_fallback,
50 event_hook=litellm_params.mode,
51 default_on=litellm_params.default_on,
52 )
53 litellm.logging_callback_manager.add_litellm_callback(agent_365_guardrail)
54 return agent_365_guardrail
57guardrail_initializer_registry: Final = { # mutable-ok: registry auto-discovery requires a dict instance
58 SupportedGuardrailIntegrations.AGENT_365.value: initialize_guardrail,
59}
61guardrail_class_registry: Final = { # mutable-ok: registry auto-discovery requires a dict instance
62 SupportedGuardrailIntegrations.AGENT_365.value: Agent365Guardrail,
63}