Spaces:
Sleeping
Sleeping
""" | |
CRUD ENDPOINTS FOR GUARDRAILS | |
""" | |
from typing import Dict, List, Optional, cast | |
from fastapi import APIRouter, Depends | |
from litellm.proxy.auth.user_api_key_auth import user_api_key_auth | |
from litellm.types.guardrails import GuardrailInfoResponse, ListGuardrailsResponse | |
#### GUARDRAILS ENDPOINTS #### | |
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"), | |
litellm_params=guardrail.get("litellm_params"), | |
guardrail_info=guardrail.get("guardrail_info"), | |
) | |
) | |
return ListGuardrailsResponse(guardrails=guardrail_configs) | |
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: | |
return _get_guardrails_list_response([]) | |
return _get_guardrails_list_response(_guardrails_config) | |