mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-26 11:14:04 +00:00
Allow team admins to add/update/delete models on UI + show api base and model id on request logs (#9572)
* feat(view_logs.tsx): show model id + api base in request logs easier debugging * fix(index.tsx): fix length of api base easier viewing * refactor(leftnav.tsx): show models tab to team admin * feat(model_dashboard.tsx): add explainer for what the 'models' page is for team admin helps them understand how they can use it * feat(model_management_endpoints.py): restrict model add by team to just team admin allow team admin to add models via non-team keys (e.g. ui token) * test(test_add_update_models.py): update unit testing for new behaviour * fix(model_dashboard.tsx): show user the models * feat(proxy_server.py): add new query param 'user_models_only' to `/v2/model/info` Allows user to retrieve just the models they've added Used in UI to show internal users just the models they've added * feat(model_dashboard.tsx): allow team admins to view their own models * fix: allow ui user to fetch model cost map * feat(add_model_tab.tsx): require team admins to specify team when onboarding models * fix(_types.py): add `/v1/model/info` to info route `/model/info` was already there * fix(model_info_view.tsx): allow user to edit a model they created * fix(model_management_endpoints.py): allow team admin to update team model * feat(model_managament_endpoints.py): allow team admin to delete team models * fix(model_management_endpoints.py): don't require team id to be set when adding a model * fix(proxy_server.py): fix linting error * fix: fix ui linting error * fix(model_management_endpoints.py): ensure consistent auth checks on all model calls * test: remove old test - function no longer exists in same form * test: add updated mock testing
This commit is contained in:
parent
a5fbe50f04
commit
ed8c63b51e
11 changed files with 483 additions and 144 deletions
|
@ -110,49 +110,6 @@ async def test_add_new_model(prisma_client):
|
|||
assert _new_model_in_db is not None
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"team_id, key_team_id, user_role, expected_result",
|
||||
[
|
||||
("1234", "1234", LitellmUserRoles.PROXY_ADMIN.value, True),
|
||||
(
|
||||
"1234",
|
||||
"1235",
|
||||
LitellmUserRoles.PROXY_ADMIN.value,
|
||||
True,
|
||||
), # proxy admin can add models for any team
|
||||
(None, "1234", LitellmUserRoles.PROXY_ADMIN.value, True),
|
||||
(None, None, LitellmUserRoles.PROXY_ADMIN.value, True),
|
||||
(
|
||||
"1234",
|
||||
"1234",
|
||||
LitellmUserRoles.INTERNAL_USER.value,
|
||||
True,
|
||||
), # internal users can add models for their team
|
||||
("1234", "1235", LitellmUserRoles.INTERNAL_USER.value, False),
|
||||
(None, "1234", LitellmUserRoles.INTERNAL_USER.value, False),
|
||||
(
|
||||
None,
|
||||
None,
|
||||
LitellmUserRoles.INTERNAL_USER.value,
|
||||
False,
|
||||
), # internal users cannot add models by default
|
||||
],
|
||||
)
|
||||
def test_can_add_model(team_id, key_team_id, user_role, expected_result):
|
||||
from litellm.proxy.proxy_server import check_if_team_id_matches_key
|
||||
|
||||
args = {
|
||||
"team_id": team_id,
|
||||
"user_api_key_dict": UserAPIKeyAuth(
|
||||
user_role=user_role,
|
||||
api_key="sk-1234",
|
||||
team_id=key_team_id,
|
||||
),
|
||||
}
|
||||
|
||||
assert check_if_team_id_matches_key(**args) is expected_result
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.skip(reason="new feature, tests passing locally")
|
||||
async def test_add_update_model(prisma_client):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue