diff --git a/backend/apps/ollama/main.py b/backend/apps/ollama/main.py index 97806ba7..532e5523 100644 --- a/backend/apps/ollama/main.py +++ b/backend/apps/ollama/main.py @@ -135,11 +135,14 @@ async def get_ollama_tags( ): if url_idx == None: models = await get_all_models() + if app.state.MODEL_FILTER_ENABLED: if user.role == "user": - models["models"] = filter( - lambda model: model["name"] in app.state.MODEL_LIST, - models["models"], + models["models"] = list( + filter( + lambda model: model["name"] in app.state.MODEL_LIST, + models["models"], + ) ) return models return models diff --git a/backend/apps/openai/main.py b/backend/apps/openai/main.py index ec3152e3..546de3d5 100644 --- a/backend/apps/openai/main.py +++ b/backend/apps/openai/main.py @@ -196,9 +196,11 @@ async def get_models(url_idx: Optional[int] = None, user=Depends(get_current_use models = await get_all_models() if app.state.MODEL_FILTER_ENABLED: if user.role == "user": - models["data"] = filter( - lambda model: model["id"] in app.state.MODEL_LIST, - models["data"], + models["data"] = list( + filter( + lambda model: model["id"] in app.state.MODEL_LIST, + models["data"], + ) ) return models return models diff --git a/src/lib/apis/index.ts b/src/lib/apis/index.ts index b7b346c0..b33fb571 100644 --- a/src/lib/apis/index.ts +++ b/src/lib/apis/index.ts @@ -77,3 +77,65 @@ export const getVersionUpdates = async () => { return res; }; + +export const getModelFilterConfig = async (token: string) => { + let error = null; + + const res = await fetch(`${WEBUI_BASE_URL}/api/config/model/filter`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${token}` + } + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .catch((err) => { + console.log(err); + error = err; + return null; + }); + + if (error) { + throw error; + } + + return res; +}; + +export const updateModelFilterConfig = async ( + token: string, + enabled: boolean, + models: string[] +) => { + let error = null; + + const res = await fetch(`${WEBUI_BASE_URL}/api/config/model/filter`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${token}` + }, + body: JSON.stringify({ + enabled: enabled, + models: models + }) + }) + .then(async (res) => { + if (!res.ok) throw await res.json(); + return res.json(); + }) + .catch((err) => { + console.log(err); + error = err; + return null; + }); + + if (error) { + throw error; + } + + return res; +}; diff --git a/src/lib/components/admin/Settings/Users.svelte b/src/lib/components/admin/Settings/Users.svelte index 8f00d020..9f2b5c40 100644 --- a/src/lib/components/admin/Settings/Users.svelte +++ b/src/lib/components/admin/Settings/Users.svelte @@ -1,4 +1,5 @@ @@ -24,6 +32,8 @@ on:submit|preventDefault={async () => { // console.log('submit'); await updateUserPermissions(localStorage.token, permissions); + + await updateModelFilterConfig(localStorage.token, whitelistEnabled, whitelistModels); saveHandler(); }} >