2024-02-23 17:12:19 -08:00
|
|
|
import { APP_NAME } from '$lib/constants';
|
2024-04-21 11:41:18 +01:00
|
|
|
import { type Writable, writable } from 'svelte/store';
|
2024-05-19 18:46:24 +08:00
|
|
|
import type { GlobalModelConfig, ModelConfig } from '$lib/apis';
|
2023-11-18 16:47:12 -08:00
|
|
|
|
2023-11-19 17:47:07 -08:00
|
|
|
// Backend
|
2024-02-23 17:12:19 -08:00
|
|
|
export const WEBUI_NAME = writable(APP_NAME);
|
2024-04-22 18:15:07 +01:00
|
|
|
export const config: Writable<Config | undefined> = writable(undefined);
|
|
|
|
|
export const user: Writable<SessionUser | undefined> = writable(undefined);
|
2023-11-19 17:47:07 -08:00
|
|
|
|
|
|
|
|
// Frontend
|
2024-03-24 23:03:26 -07:00
|
|
|
export const MODEL_DOWNLOAD_POOL = writable({});
|
2024-01-02 20:41:37 -08:00
|
|
|
|
2024-05-14 12:26:53 -10:00
|
|
|
export const mobile = writable(false);
|
|
|
|
|
|
2024-03-24 23:03:26 -07:00
|
|
|
export const theme = writable('system');
|
2023-11-19 17:47:07 -08:00
|
|
|
export const chatId = writable('');
|
2024-01-02 20:41:37 -08:00
|
|
|
|
2023-11-19 17:47:07 -08:00
|
|
|
export const chats = writable([]);
|
2024-01-18 02:55:25 -08:00
|
|
|
export const tags = writable([]);
|
2024-04-21 11:41:18 +01:00
|
|
|
export const models: Writable<Model[]> = writable([]);
|
2024-01-07 23:43:32 -08:00
|
|
|
|
2023-12-03 10:59:47 -08:00
|
|
|
export const modelfiles = writable([]);
|
2024-04-22 18:15:07 +01:00
|
|
|
export const prompts: Writable<Prompt[]> = writable([]);
|
2024-01-07 23:43:32 -08:00
|
|
|
export const documents = writable([
|
|
|
|
|
{
|
|
|
|
|
collection_name: 'collection_name',
|
|
|
|
|
filename: 'filename',
|
|
|
|
|
name: 'name',
|
|
|
|
|
title: 'title'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
collection_name: 'collection_name1',
|
|
|
|
|
filename: 'filename1',
|
|
|
|
|
name: 'name1',
|
|
|
|
|
title: 'title1'
|
|
|
|
|
}
|
|
|
|
|
]);
|
2024-01-01 16:05:05 -08:00
|
|
|
|
2024-04-22 18:15:07 +01:00
|
|
|
export const settings: Writable<Settings> = writable({});
|
2024-04-30 16:34:29 -07:00
|
|
|
|
|
|
|
|
export const showSidebar = writable(false);
|
2023-11-19 17:47:07 -08:00
|
|
|
export const showSettings = writable(false);
|
2024-05-14 22:22:15 -10:00
|
|
|
export const showArchivedChats = writable(false);
|
2024-02-23 00:47:54 -08:00
|
|
|
export const showChangelog = writable(false);
|
2024-04-21 11:41:18 +01:00
|
|
|
|
2024-05-09 20:25:30 +08:00
|
|
|
export type Model = OpenAIModel | OllamaModel;
|
2024-04-21 11:41:18 +01:00
|
|
|
|
2024-05-09 20:25:30 +08:00
|
|
|
type BaseModel = {
|
2024-04-21 11:41:18 +01:00
|
|
|
id: string;
|
|
|
|
|
name: string;
|
2024-05-24 18:26:36 -07:00
|
|
|
info?: ModelConfig;
|
2024-05-09 20:25:30 +08:00
|
|
|
};
|
2024-04-21 11:41:18 +01:00
|
|
|
|
2024-05-09 23:49:54 +08:00
|
|
|
export interface OpenAIModel extends BaseModel {
|
2024-05-09 20:25:30 +08:00
|
|
|
external: boolean;
|
|
|
|
|
source?: string;
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-09 23:49:54 +08:00
|
|
|
export interface OllamaModel extends BaseModel {
|
2024-04-21 11:41:18 +01:00
|
|
|
details: OllamaModelDetails;
|
|
|
|
|
size: number;
|
|
|
|
|
description: string;
|
|
|
|
|
model: string;
|
|
|
|
|
modified_at: string;
|
|
|
|
|
digest: string;
|
2024-05-09 20:25:30 +08:00
|
|
|
}
|
2024-04-21 11:41:18 +01:00
|
|
|
|
|
|
|
|
type OllamaModelDetails = {
|
2024-04-22 18:15:07 +01:00
|
|
|
parent_model: string;
|
|
|
|
|
format: string;
|
|
|
|
|
family: string;
|
|
|
|
|
families: string[] | null;
|
|
|
|
|
parameter_size: string;
|
|
|
|
|
quantization_level: string;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type Settings = {
|
|
|
|
|
models?: string[];
|
|
|
|
|
conversationMode?: boolean;
|
|
|
|
|
speechAutoSend?: boolean;
|
|
|
|
|
responseAutoPlayback?: boolean;
|
|
|
|
|
audio?: AudioSettings;
|
|
|
|
|
showUsername?: boolean;
|
|
|
|
|
saveChatHistory?: boolean;
|
|
|
|
|
notificationEnabled?: boolean;
|
|
|
|
|
title?: TitleSettings;
|
2024-04-30 20:43:43 +01:00
|
|
|
splitLargeDeltas?: boolean;
|
2024-05-16 23:14:54 +03:00
|
|
|
chatDirection: 'LTR' | 'RTL';
|
2024-04-22 18:15:07 +01:00
|
|
|
|
|
|
|
|
system?: string;
|
|
|
|
|
requestFormat?: string;
|
|
|
|
|
keepAlive?: string;
|
|
|
|
|
seed?: number;
|
|
|
|
|
temperature?: string;
|
|
|
|
|
repeat_penalty?: string;
|
|
|
|
|
top_k?: string;
|
|
|
|
|
top_p?: string;
|
|
|
|
|
num_ctx?: string;
|
|
|
|
|
options?: ModelOptions;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type ModelOptions = {
|
|
|
|
|
stop?: boolean;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type AudioSettings = {
|
|
|
|
|
STTEngine?: string;
|
|
|
|
|
TTSEngine?: string;
|
|
|
|
|
speaker?: string;
|
2024-05-07 08:28:34 +08:00
|
|
|
model?: string;
|
2024-04-22 18:15:07 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type TitleSettings = {
|
|
|
|
|
auto?: boolean;
|
|
|
|
|
model?: string;
|
|
|
|
|
modelExternal?: string;
|
|
|
|
|
prompt?: string;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type Prompt = {
|
|
|
|
|
command: string;
|
|
|
|
|
user_id: string;
|
|
|
|
|
title: string;
|
|
|
|
|
content: string;
|
|
|
|
|
timestamp: number;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type Config = {
|
|
|
|
|
status?: boolean;
|
|
|
|
|
name?: string;
|
|
|
|
|
version?: string;
|
|
|
|
|
default_locale?: string;
|
|
|
|
|
images?: boolean;
|
|
|
|
|
default_models?: string[];
|
|
|
|
|
default_prompt_suggestions?: PromptSuggestion[];
|
2024-05-26 03:13:13 -07:00
|
|
|
auth_trusted_header?: boolean;
|
2024-05-26 08:37:09 +01:00
|
|
|
auth: boolean;
|
|
|
|
|
oauth: {
|
|
|
|
|
providers: {
|
|
|
|
|
[key: string]: string;
|
|
|
|
|
};
|
|
|
|
|
};
|
2024-05-09 20:25:30 +08:00
|
|
|
};
|
|
|
|
|
|
2024-04-22 18:15:07 +01:00
|
|
|
type PromptSuggestion = {
|
|
|
|
|
content: string;
|
|
|
|
|
title: [string, string];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type SessionUser = {
|
|
|
|
|
id: string;
|
|
|
|
|
email: string;
|
|
|
|
|
name: string;
|
|
|
|
|
role: string;
|
|
|
|
|
profile_image_url: string;
|
2024-04-21 11:41:18 +01:00
|
|
|
};
|