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

1from typing import TYPE_CHECKING, Final 

2 

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) 

8 

9from .agent_365 import Agent365Guardrail 

10 

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 

13 

14 

15def initialize_guardrail(litellm_params: "LitellmParams", guardrail: "Guardrail") -> Agent365Guardrail: 

16 import litellm 

17 from litellm.secret_managers.main import get_secret_str 

18 

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") 

26 

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 ) 

35 

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

37 if not guardrail_name: 

38 raise ValueError("Microsoft Agent 365: guardrail_name is required") 

39 

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 

55 

56 

57guardrail_initializer_registry: Final = { # mutable-ok: registry auto-discovery requires a dict instance 

58 SupportedGuardrailIntegrations.AGENT_365.value: initialize_guardrail, 

59} 

60 

61guardrail_class_registry: Final = { # mutable-ok: registry auto-discovery requires a dict instance 

62 SupportedGuardrailIntegrations.AGENT_365.value: Agent365Guardrail, 

63}