diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 33eaae47251..5a9189c095d 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -92,6 +92,7 @@ from litellm.proxy.utils import ( hash_token, html_form, _read_request_body, + _is_valid_team_configs, ) from litellm.proxy.secret_managers.google_kms import load_google_kms import pydantic @@ -2294,6 +2295,9 @@ async def chat_completion( pass else: team_id = team_config.pop("team_id", None) + _is_valid_team_configs( + team_id=team_id, team_config=team_config, request_data=data + ) data["metadata"]["team_id"] = team_id data = { **team_config, diff --git a/litellm/proxy/utils.py b/litellm/proxy/utils.py index 35b6472577a..2d14ecce002 100644 --- a/litellm/proxy/utils.py +++ b/litellm/proxy/utils.py @@ -1285,6 +1285,20 @@ async def _read_request_body(request): return request_data +def _is_valid_team_configs(team_id=None, team_config=None, request_data=None): + if team_id is None or team_config is None or request_data is None: + return + # check if valid model called for team + if "models" in team_config: + valid_models = team_config["models"] + model_in_request = request_data["model"] + if model_in_request not in valid_models: + raise Exception( + f"Invalid model for team {team_id}: {model_in_request}. Valid models for team are: {valid_models}\n" + ) + return + + # LiteLLM Admin UI - Non SSO Login html_form = """