forked from open-webui/open-webui
feat: enable api_base_url edit from ui
This commit is contained in:
parent
00b5b38ac9
commit
b6a780e7c7
5 changed files with 167 additions and 28 deletions
|
@ -6,13 +6,14 @@
|
|||
import fileSaver from 'file-saver';
|
||||
const { saveAs } = fileSaver;
|
||||
import hljs from 'highlight.js';
|
||||
import 'highlight.js/styles/dark.min.css';
|
||||
import { API_BASE_URL } from '$lib/constants';
|
||||
import 'highlight.js/styles/github-dark.min.css';
|
||||
import { API_BASE_URL as BUILD_TIME_API_BASE_URL } from '$lib/constants';
|
||||
import { onMount, tick } from 'svelte';
|
||||
|
||||
import Navbar from '$lib/components/layout/Navbar.svelte';
|
||||
import SettingsModal from '$lib/components/chat/SettingsModal.svelte';
|
||||
|
||||
let API_BASE_URL = BUILD_TIME_API_BASE_URL;
|
||||
let suggestions = ''; // $page.url.searchParams.get('suggestions');
|
||||
|
||||
let models = [];
|
||||
|
@ -31,21 +32,19 @@
|
|||
let messages = [];
|
||||
|
||||
onMount(async () => {
|
||||
let settings = JSON.parse(localStorage.getItem('settings') ?? '{}');
|
||||
|
||||
API_BASE_URL = settings.API_BASE_URL ?? BUILD_TIME_API_BASE_URL;
|
||||
console.log(API_BASE_URL);
|
||||
system = settings.system ?? null;
|
||||
temperature = settings.temperature ?? null;
|
||||
|
||||
await getModelTags();
|
||||
|
||||
let settings = localStorage.getItem('settings');
|
||||
if (settings) {
|
||||
settings = JSON.parse(settings);
|
||||
console.log(settings);
|
||||
|
||||
selectedModel =
|
||||
settings.model && models.map((model) => model.name).includes(settings.model)
|
||||
? settings.model
|
||||
: '';
|
||||
system = settings.system ?? null;
|
||||
temperature = settings.temperature ?? null;
|
||||
}
|
||||
selectedModel =
|
||||
settings.model && models.map((model) => model.name).includes(settings.model)
|
||||
? settings.model
|
||||
: '';
|
||||
|
||||
db = await openDB('Chats', 1, {
|
||||
upgrade(db) {
|
||||
|
@ -133,21 +132,23 @@
|
|||
toast.success('Default model updated');
|
||||
};
|
||||
|
||||
const saveSettings = (_system, _temperature) => {
|
||||
const saveSettings = async (_api_base_url, _system, _temperature) => {
|
||||
API_BASE_URL = _api_base_url;
|
||||
system = _system;
|
||||
temperature = _temperature;
|
||||
|
||||
let settings = localStorage.getItem('settings') ?? '{}';
|
||||
if (settings) {
|
||||
settings = JSON.parse(settings);
|
||||
|
||||
settings.API_BASE_URL = API_BASE_URL;
|
||||
settings.system = system;
|
||||
settings.temperature = temperature;
|
||||
localStorage.setItem('settings', JSON.stringify(settings));
|
||||
}
|
||||
|
||||
console.log(settings);
|
||||
|
||||
console.log('saved');
|
||||
await getModelTags();
|
||||
};
|
||||
|
||||
const createNewChat = () => {
|
||||
|
@ -163,7 +164,10 @@
|
|||
settings = JSON.parse(settings);
|
||||
console.log(settings);
|
||||
|
||||
selectedModel = settings.model ?? selectedModel;
|
||||
selectedModel =
|
||||
settings.model && models.map((model) => model.name).includes(settings.model)
|
||||
? settings.model
|
||||
: '';
|
||||
system = settings.system ?? system;
|
||||
temperature = settings.temperature ?? temperature;
|
||||
}
|
||||
|
@ -219,8 +223,8 @@
|
|||
// Ollama functions
|
||||
//////////////////////////
|
||||
|
||||
const getModelTags = async () => {
|
||||
const res = await fetch(`${API_BASE_URL}/tags`, {
|
||||
const getModelTags = async (url = null) => {
|
||||
const res = await fetch(`${url === null ? API_BASE_URL : url}/tags`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
|
@ -233,11 +237,13 @@
|
|||
})
|
||||
.catch((error) => {
|
||||
console.log(error);
|
||||
return { models: [] };
|
||||
toast.error('Server connection failed');
|
||||
return null;
|
||||
});
|
||||
|
||||
console.log(res);
|
||||
models = res.models ?? [];
|
||||
models = res?.models ?? [];
|
||||
return res;
|
||||
};
|
||||
|
||||
const submitPrompt = async (user_prompt) => {
|
||||
|
@ -609,7 +615,7 @@
|
|||
</div>
|
||||
</div>
|
||||
{:else}
|
||||
<div class="markdown-body whitespace-pre-line">
|
||||
<div class="whitespace-pre-line">
|
||||
{@html marked.parse(message.content)}
|
||||
</div>
|
||||
{/if}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue