mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-25 10:44:24 +00:00
(Feat) set guardrails per team (#7993)
All checks were successful
Read Version from pyproject.toml / read-version (push) Successful in 35s
All checks were successful
Read Version from pyproject.toml / read-version (push) Successful in 35s
* _add_guardrails_from_key_or_team_metadata * e2e test test_guardrails_with_team_controls * add try/except on team new * test_guardrails_with_team_controls * test_guardrails_with_api_key_controls
This commit is contained in:
parent
669b4fc955
commit
a7b3c664d1
4 changed files with 298 additions and 195 deletions
|
@ -691,20 +691,24 @@ def _enforced_params_check(
|
|||
return True
|
||||
|
||||
|
||||
def move_guardrails_to_metadata(
|
||||
def _add_guardrails_from_key_or_team_metadata(
|
||||
key_metadata: Optional[dict],
|
||||
team_metadata: Optional[dict],
|
||||
data: dict,
|
||||
_metadata_variable_name: str,
|
||||
user_api_key_dict: UserAPIKeyAuth,
|
||||
):
|
||||
metadata_variable_name: str,
|
||||
) -> None:
|
||||
"""
|
||||
Heper to add guardrails from request to metadata
|
||||
Helper add guardrails from key or team metadata to request data
|
||||
|
||||
- If guardrails set on API Key metadata then sets guardrails on request metadata
|
||||
- If guardrails not set on API key, then checks request metadata
|
||||
Args:
|
||||
key_metadata: The key metadata dictionary to check for guardrails
|
||||
team_metadata: The team metadata dictionary to check for guardrails
|
||||
data: The request data to update
|
||||
metadata_variable_name: The name of the metadata field in data
|
||||
|
||||
"""
|
||||
if user_api_key_dict.metadata:
|
||||
if "guardrails" in user_api_key_dict.metadata:
|
||||
for _management_object_metadata in [key_metadata, team_metadata]:
|
||||
if _management_object_metadata and "guardrails" in _management_object_metadata:
|
||||
from litellm.proxy.proxy_server import premium_user
|
||||
|
||||
if premium_user is not True:
|
||||
|
@ -712,11 +716,31 @@ def move_guardrails_to_metadata(
|
|||
f"Using Guardrails on API Key {CommonProxyErrors.not_premium_user}"
|
||||
)
|
||||
|
||||
data[_metadata_variable_name]["guardrails"] = user_api_key_dict.metadata[
|
||||
data[metadata_variable_name]["guardrails"] = _management_object_metadata[
|
||||
"guardrails"
|
||||
]
|
||||
return
|
||||
|
||||
|
||||
def move_guardrails_to_metadata(
|
||||
data: dict,
|
||||
_metadata_variable_name: str,
|
||||
user_api_key_dict: UserAPIKeyAuth,
|
||||
):
|
||||
"""
|
||||
Helper to add guardrails from request to metadata
|
||||
|
||||
- If guardrails set on API Key metadata then sets guardrails on request metadata
|
||||
- If guardrails not set on API key, then checks request metadata
|
||||
"""
|
||||
# Check key-level guardrails
|
||||
_add_guardrails_from_key_or_team_metadata(
|
||||
key_metadata=user_api_key_dict.metadata,
|
||||
team_metadata=user_api_key_dict.team_metadata,
|
||||
data=data,
|
||||
metadata_variable_name=_metadata_variable_name,
|
||||
)
|
||||
|
||||
# Check request-level guardrails
|
||||
if "guardrails" in data:
|
||||
data[_metadata_variable_name]["guardrails"] = data["guardrails"]
|
||||
del data["guardrails"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue