mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-25 18:54:30 +00:00
* Revert "JWT Auth - `enforce_rbac` support + UI team view, spend calc fix (#7863)" This reverts commitdca6904937
. * Revert "Litellm dev 01 10 2025 p2 (#7679)" This reverts commitc4780479a9
. * ui - allow setting guardrails on a key * working edit guardrails * fix edit guardrails on a key * Revert "Revert "JWT Auth - `enforce_rbac` support + UI team view, spend calc fix (#7863)"" This reverts commit8f7b9ae1af
. * Revert "Revert "Litellm dev 01 10 2025 p2 (#7679)"" This reverts commita609139dde
. * fix edit guardrail on ui * fix list_guardrails
87 lines
2.3 KiB
Python
87 lines
2.3 KiB
Python
"""
|
|
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
|
|
|
|
#### 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"),
|
|
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)
|