|
""" |
|
CRUD ENDPOINTS FOR GUARDRAILS |
|
""" |
|
|
|
from typing import Dict, List, Optional, cast |
|
|
|
from fastapi import APIRouter, Depends, HTTPException, status |
|
|
|
from litellm.proxy.auth.user_api_key_auth import user_api_key_auth |
|
from litellm.types.guardrails import GuardrailInfoResponse, ListGuardrailsResponse |
|
|
|
|
|
|
|
router = APIRouter() |
|
|
|
|
|
def _get_guardrails_list_response( |
|
guardrails_config: List[Dict], |
|
) -> ListGuardrailsResponse: |
|
""" |
|
Helper function to get the guardrails list response |
|
""" |
|
guardrail_configs: List[GuardrailInfoResponse] = [] |
|
for guardrail in guardrails_config: |
|
guardrail_configs.append( |
|
GuardrailInfoResponse( |
|
guardrail_name=guardrail.get("guardrail_name"), |
|
guardrail_info=guardrail.get("guardrail_info"), |
|
) |
|
) |
|
return ListGuardrailsResponse(guardrails=guardrail_configs) |
|
|
|
|
|
@router.get( |
|
"/guardrails/list", |
|
tags=["Guardrails"], |
|
dependencies=[Depends(user_api_key_auth)], |
|
response_model=ListGuardrailsResponse, |
|
) |
|
async def list_guardrails(): |
|
""" |
|
List the guardrails that are available on the proxy server |
|
|
|
π [Guardrail docs](https://docs.litellm.ai/docs/proxy/guardrails/quick_start) |
|
|
|
Example Request: |
|
```bash |
|
curl -X GET "http://localhost:4000/guardrails/list" -H "Authorization: Bearer <your_api_key>" |
|
``` |
|
|
|
Example Response: |
|
```json |
|
{ |
|
"guardrails": [ |
|
{ |
|
"guardrail_name": "bedrock-pre-guard", |
|
"guardrail_info": { |
|
"params": [ |
|
{ |
|
"name": "toxicity_score", |
|
"type": "float", |
|
"description": "Score between 0-1 indicating content toxicity level" |
|
}, |
|
{ |
|
"name": "pii_detection", |
|
"type": "boolean" |
|
} |
|
] |
|
} |
|
} |
|
] |
|
} |
|
``` |
|
""" |
|
from litellm.proxy.proxy_server import proxy_config |
|
|
|
config = proxy_config.config |
|
|
|
_guardrails_config = cast(Optional[list[dict]], config.get("guardrails")) |
|
|
|
if _guardrails_config is None: |
|
raise HTTPException( |
|
status_code=status.HTTP_404_NOT_FOUND, |
|
detail={"error": "No guardrails found in config"}, |
|
) |
|
|
|
return _get_guardrails_list_response(_guardrails_config) |
|
|