From f4b5039adfff50c40ade496113bb984e85be1057 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 22 Jan 2025 12:36:18 -0800 Subject: [PATCH] enh: new ollama create model method --- backend/open_webui/routers/ollama.py | 5 +-- .../Models/Manage/ManageOllama.svelte | 31 +++++++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index b23e342fb..4a6456590 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -551,11 +551,12 @@ async def push_model( class CreateModelForm(BaseModel): - name: str - modelfile: Optional[str] = None + model: Optional[str] = None stream: Optional[bool] = None path: Optional[str] = None + model_config = ConfigDict(extra="allow") + @router.post("/api/create") @router.post("/api/create/{url_idx}") diff --git a/src/lib/components/admin/Settings/Models/Manage/ManageOllama.svelte b/src/lib/components/admin/Settings/Models/Manage/ManageOllama.svelte index 80665865a..3420b669d 100644 --- a/src/lib/components/admin/Settings/Models/Manage/ManageOllama.svelte +++ b/src/lib/components/admin/Settings/Models/Manage/ManageOllama.svelte @@ -44,7 +44,8 @@ let modelTag = ''; let createModelLoading = false; - let createModelObject = {}; + let createModelName = ''; + let createModelObject = ''; let createModelDigest = ''; let createModelPullProgress = null; @@ -428,7 +429,24 @@ const createModelHandler = async () => { createModelLoading = true; - const res = await createModel(localStorage.token, createModelObject, urlIdx).catch((error) => { + let modelObject = {}; + // parse createModelObject + try { + modelObject = JSON.parse(createModelObject); + } catch (error) { + toast.error(`${error}`); + createModelLoading = false; + return; + } + + const res = await createModel( + localStorage.token, + { + model: createModelName, + ...modelObject + }, + urlIdx + ).catch((error) => { toast.error(`${error}`); return null; }); @@ -492,7 +510,8 @@ createModelLoading = false; - createModelObject = {}; + createModelName = ''; + createModelObject = ''; createModelDigest = ''; createModelPullProgress = null; }; @@ -746,15 +765,15 @@ placeholder={$i18n.t('Enter model tag (e.g. {{modelTag}})', { modelTag: 'my-modelfile' })} - bind:value={createModelObject.model} + bind:value={createModelName} disabled={createModelLoading} />