forked from open-webui/open-webui
		
	feat: prompts backend frontend integration
This commit is contained in:
		
							parent
							
								
									247414743b
								
							
						
					
					
						commit
						69ff596045
					
				
					 3 changed files with 185 additions and 2 deletions
				
			
		|  | @ -1,7 +1,7 @@ | ||||||
| from fastapi import FastAPI, Depends | from fastapi import FastAPI, Depends | ||||||
| from fastapi.routing import APIRoute | from fastapi.routing import APIRoute | ||||||
| from fastapi.middleware.cors import CORSMiddleware | from fastapi.middleware.cors import CORSMiddleware | ||||||
| from apps.web.routers import auths, users, chats, modelfiles, configs, utils | from apps.web.routers import auths, users, chats, modelfiles, prompts, configs, utils | ||||||
| from config import WEBUI_VERSION, WEBUI_AUTH | from config import WEBUI_VERSION, WEBUI_AUTH | ||||||
| 
 | 
 | ||||||
| app = FastAPI() | app = FastAPI() | ||||||
|  | @ -23,6 +23,9 @@ app.include_router(auths.router, prefix="/auths", tags=["auths"]) | ||||||
| app.include_router(users.router, prefix="/users", tags=["users"]) | app.include_router(users.router, prefix="/users", tags=["users"]) | ||||||
| app.include_router(chats.router, prefix="/chats", tags=["chats"]) | app.include_router(chats.router, prefix="/chats", tags=["chats"]) | ||||||
| app.include_router(modelfiles.router, prefix="/modelfiles", tags=["modelfiles"]) | app.include_router(modelfiles.router, prefix="/modelfiles", tags=["modelfiles"]) | ||||||
|  | app.include_router(prompts.router, prefix="/prompts", tags=["prompts"]) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| app.include_router(configs.router, prefix="/configs", tags=["configs"]) | app.include_router(configs.router, prefix="/configs", tags=["configs"]) | ||||||
| app.include_router(utils.router, prefix="/utils", tags=["utils"]) | app.include_router(utils.router, prefix="/utils", tags=["utils"]) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										176
									
								
								src/lib/apis/prompts/index.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								src/lib/apis/prompts/index.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,176 @@ | ||||||
|  | import { WEBUI_API_BASE_URL } from '$lib/constants'; | ||||||
|  | 
 | ||||||
|  | export const createNewPrompt = async ( | ||||||
|  | 	token: string, | ||||||
|  | 	command: string, | ||||||
|  | 	title: string, | ||||||
|  | 	content: string | ||||||
|  | ) => { | ||||||
|  | 	let error = null; | ||||||
|  | 
 | ||||||
|  | 	const res = await fetch(`${WEBUI_API_BASE_URL}/prompts/create`, { | ||||||
|  | 		method: 'POST', | ||||||
|  | 		headers: { | ||||||
|  | 			Accept: 'application/json', | ||||||
|  | 			'Content-Type': 'application/json', | ||||||
|  | 			authorization: `Bearer ${token}` | ||||||
|  | 		}, | ||||||
|  | 		body: JSON.stringify({ | ||||||
|  | 			command: command, | ||||||
|  | 			title: title, | ||||||
|  | 			content: content | ||||||
|  | 		}) | ||||||
|  | 	}) | ||||||
|  | 		.then(async (res) => { | ||||||
|  | 			if (!res.ok) throw await res.json(); | ||||||
|  | 			return res.json(); | ||||||
|  | 		}) | ||||||
|  | 		.catch((err) => { | ||||||
|  | 			error = err.detail; | ||||||
|  | 			console.log(err); | ||||||
|  | 			return null; | ||||||
|  | 		}); | ||||||
|  | 
 | ||||||
|  | 	if (error) { | ||||||
|  | 		throw error; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return res; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export const getPrompts = async (token: string = '') => { | ||||||
|  | 	let error = null; | ||||||
|  | 
 | ||||||
|  | 	const res = await fetch(`${WEBUI_API_BASE_URL}/prompts/`, { | ||||||
|  | 		method: 'GET', | ||||||
|  | 		headers: { | ||||||
|  | 			Accept: 'application/json', | ||||||
|  | 			'Content-Type': 'application/json', | ||||||
|  | 			authorization: `Bearer ${token}` | ||||||
|  | 		} | ||||||
|  | 	}) | ||||||
|  | 		.then(async (res) => { | ||||||
|  | 			if (!res.ok) throw await res.json(); | ||||||
|  | 			return res.json(); | ||||||
|  | 		}) | ||||||
|  | 		.then((json) => { | ||||||
|  | 			return json; | ||||||
|  | 		}) | ||||||
|  | 		.catch((err) => { | ||||||
|  | 			error = err; | ||||||
|  | 			console.log(err); | ||||||
|  | 			return null; | ||||||
|  | 		}); | ||||||
|  | 
 | ||||||
|  | 	if (error) { | ||||||
|  | 		throw error; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return res; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export const getPromptByCommand = async (token: string, command: string) => { | ||||||
|  | 	let error = null; | ||||||
|  | 
 | ||||||
|  | 	const res = await fetch(`${WEBUI_API_BASE_URL}/prompts/${command}`, { | ||||||
|  | 		method: 'GET', | ||||||
|  | 		headers: { | ||||||
|  | 			Accept: 'application/json', | ||||||
|  | 			'Content-Type': 'application/json', | ||||||
|  | 			authorization: `Bearer ${token}` | ||||||
|  | 		} | ||||||
|  | 	}) | ||||||
|  | 		.then(async (res) => { | ||||||
|  | 			if (!res.ok) throw await res.json(); | ||||||
|  | 			return res.json(); | ||||||
|  | 		}) | ||||||
|  | 		.then((json) => { | ||||||
|  | 			return json; | ||||||
|  | 		}) | ||||||
|  | 		.catch((err) => { | ||||||
|  | 			error = err; | ||||||
|  | 
 | ||||||
|  | 			console.log(err); | ||||||
|  | 			return null; | ||||||
|  | 		}); | ||||||
|  | 
 | ||||||
|  | 	if (error) { | ||||||
|  | 		throw error; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return res; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export const updatePromptByCommand = async ( | ||||||
|  | 	token: string, | ||||||
|  | 	command: string, | ||||||
|  | 	title: string, | ||||||
|  | 	content: string | ||||||
|  | ) => { | ||||||
|  | 	let error = null; | ||||||
|  | 
 | ||||||
|  | 	const res = await fetch(`${WEBUI_API_BASE_URL}/prompts/${command}/update`, { | ||||||
|  | 		method: 'POST', | ||||||
|  | 		headers: { | ||||||
|  | 			Accept: 'application/json', | ||||||
|  | 			'Content-Type': 'application/json', | ||||||
|  | 			authorization: `Bearer ${token}` | ||||||
|  | 		}, | ||||||
|  | 		body: JSON.stringify({ | ||||||
|  | 			command: command, | ||||||
|  | 			title: title, | ||||||
|  | 			content: content | ||||||
|  | 		}) | ||||||
|  | 	}) | ||||||
|  | 		.then(async (res) => { | ||||||
|  | 			if (!res.ok) throw await res.json(); | ||||||
|  | 			return res.json(); | ||||||
|  | 		}) | ||||||
|  | 		.then((json) => { | ||||||
|  | 			return json; | ||||||
|  | 		}) | ||||||
|  | 		.catch((err) => { | ||||||
|  | 			error = err; | ||||||
|  | 
 | ||||||
|  | 			console.log(err); | ||||||
|  | 			return null; | ||||||
|  | 		}); | ||||||
|  | 
 | ||||||
|  | 	if (error) { | ||||||
|  | 		throw error; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return res; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export const deletePromptByCommand = async (token: string, command: string) => { | ||||||
|  | 	let error = null; | ||||||
|  | 
 | ||||||
|  | 	const res = await fetch(`${WEBUI_API_BASE_URL}/prompts/${command}/delete`, { | ||||||
|  | 		method: 'DELETE', | ||||||
|  | 		headers: { | ||||||
|  | 			Accept: 'application/json', | ||||||
|  | 			'Content-Type': 'application/json', | ||||||
|  | 			authorization: `Bearer ${token}` | ||||||
|  | 		} | ||||||
|  | 	}) | ||||||
|  | 		.then(async (res) => { | ||||||
|  | 			if (!res.ok) throw await res.json(); | ||||||
|  | 			return res.json(); | ||||||
|  | 		}) | ||||||
|  | 		.then((json) => { | ||||||
|  | 			return json; | ||||||
|  | 		}) | ||||||
|  | 		.catch((err) => { | ||||||
|  | 			error = err; | ||||||
|  | 
 | ||||||
|  | 			console.log(err); | ||||||
|  | 			return null; | ||||||
|  | 		}); | ||||||
|  | 
 | ||||||
|  | 	if (error) { | ||||||
|  | 		throw error; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return res; | ||||||
|  | }; | ||||||
|  | @ -9,10 +9,11 @@ | ||||||
| 
 | 
 | ||||||
| 	import { getOllamaModels, getOllamaVersion } from '$lib/apis/ollama'; | 	import { getOllamaModels, getOllamaVersion } from '$lib/apis/ollama'; | ||||||
| 	import { getModelfiles } from '$lib/apis/modelfiles'; | 	import { getModelfiles } from '$lib/apis/modelfiles'; | ||||||
|  | 	import { getPrompts } from '$lib/apis/prompts'; | ||||||
| 
 | 
 | ||||||
| 	import { getOpenAIModels } from '$lib/apis/openai'; | 	import { getOpenAIModels } from '$lib/apis/openai'; | ||||||
| 
 | 
 | ||||||
| 	import { user, showSettings, settings, models, modelfiles } from '$lib/stores'; | 	import { user, showSettings, settings, models, modelfiles, prompts } from '$lib/stores'; | ||||||
| 	import { OLLAMA_API_BASE_URL, REQUIRED_OLLAMA_VERSION, WEBUI_API_BASE_URL } from '$lib/constants'; | 	import { OLLAMA_API_BASE_URL, REQUIRED_OLLAMA_VERSION, WEBUI_API_BASE_URL } from '$lib/constants'; | ||||||
| 
 | 
 | ||||||
| 	import SettingsModal from '$lib/components/chat/SettingsModal.svelte'; | 	import SettingsModal from '$lib/components/chat/SettingsModal.svelte'; | ||||||
|  | @ -101,6 +102,9 @@ | ||||||
| 			console.log(); | 			console.log(); | ||||||
| 			await settings.set(JSON.parse(localStorage.getItem('settings') ?? '{}')); | 			await settings.set(JSON.parse(localStorage.getItem('settings') ?? '{}')); | ||||||
| 			await modelfiles.set(await getModelfiles(localStorage.token)); | 			await modelfiles.set(await getModelfiles(localStorage.token)); | ||||||
|  | 
 | ||||||
|  | 			await prompts.set(await getPrompts(localStorage.token)); | ||||||
|  | 
 | ||||||
| 			console.log($modelfiles); | 			console.log($modelfiles); | ||||||
| 
 | 
 | ||||||
| 			modelfiles.subscribe(async () => { | 			modelfiles.subscribe(async () => { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy J. Baek
						Timothy J. Baek