Coverage for .venv/lib/python3.13/site-packages/litellm/proxy/management_endpoints/compliance_endpoints.py: 100%

20 statements  

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

1""" 

2COMPLIANCE CHECK ENDPOINTS 

3 

4Endpoints for checking regulatory compliance of LLM request logs. 

5 

6/compliance/eu-ai-act - Check EU AI Act compliance 

7/compliance/gdpr - Check GDPR compliance 

8""" 

9 

10from typing import Final 

11 

12from fastapi import APIRouter, Depends, Request 

13 

14from litellm.proxy._types import UserAPIKeyAuth 

15from litellm.proxy.auth.user_api_key_auth import user_api_key_auth 

16from litellm.proxy.compliance_checks import ComplianceChecker 

17from litellm.proxy.management_helpers.utils import management_endpoint_wrapper 

18from litellm.types.proxy.compliance_endpoints import ( 

19 ComplianceCheckRequest, 

20 ComplianceResponse, 

21) 

22 

23router: Final = APIRouter() 

24 

25 

26@router.post( 

27 "/compliance/eu-ai-act", 

28 tags=["compliance"], 

29 dependencies=[Depends(user_api_key_auth)], 

30 response_model=ComplianceResponse, 

31) 

32@management_endpoint_wrapper 

33async def check_eu_ai_act_compliance( 

34 data: ComplianceCheckRequest, 

35 http_request: Request, 

36 user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), 

37) -> ComplianceResponse: 

38 """ 

39 Check EU AI Act compliance for a spend log entry. 

40 

41 Checks: 

42 - Art. 9: Guardrails applied (any guardrail) 

43 - Art. 5: Content screened before LLM (pre-call guardrails) 

44 - Art. 12: Audit record complete (user_id, model, timestamp, guardrail_results) 

45 """ 

46 checker: Final = ComplianceChecker(data) 

47 checks: Final = checker.check_eu_ai_act() 

48 return ComplianceResponse( 

49 compliant=all(c.passed for c in checks), 

50 regulation="EU AI Act", 

51 checks=checks, 

52 ) 

53 

54 

55@router.post( 

56 "/compliance/gdpr", 

57 tags=["compliance"], 

58 dependencies=[Depends(user_api_key_auth)], 

59 response_model=ComplianceResponse, 

60) 

61@management_endpoint_wrapper 

62async def check_gdpr_compliance( 

63 data: ComplianceCheckRequest, 

64 http_request: Request, 

65 user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth), 

66) -> ComplianceResponse: 

67 """ 

68 Check GDPR compliance for a spend log entry. 

69 

70 Checks: 

71 - Art. 32: Data protection applied (pre-call guardrails) 

72 - Art. 5(1)(c): Sensitive data protected (masked/blocked or no issues) 

73 - Art. 30: Audit record complete (user_id, model, timestamp, guardrail_results) 

74 """ 

75 checker: Final = ComplianceChecker(data) 

76 checks: Final = checker.check_gdpr() 

77 return ComplianceResponse( 

78 compliant=all(c.passed for c in checks), 

79 regulation="GDPR", 

80 checks=checks, 

81 )