瀏覽代碼

enh: new ollama create model method

Timothy Jaeryang Baek 3 月之前
父節點
當前提交
f4b5039adf

+ 3 - 2
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}")

+ 25 - 6
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}
 							/>
 
 							<textarea
-								bind:value={createModelObject.content}
+								bind:value={createModelObject}
 								class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-100 dark:bg-gray-850 outline-none resize-none scrollbar-hidden"
 								rows="6"
-								placeholder={`TEMPLATE """{{ .System }}\nUSER: {{ .Prompt }}\nASSISTANT: """\nPARAMETER num_ctx 4096\nPARAMETER stop "</s>"\nPARAMETER stop "USER:"\nPARAMETER stop "ASSISTANT:"`}
+								placeholder={`e.g. {"model": "my-modelfile", "from": "ollama:7b"})`}
 								disabled={createModelLoading}
 							/>
 						</div>