Spaces:
Sleeping
Sleeping
import { WEBUI_API_BASE_URL, WEBUI_BASE_URL } from '$lib/constants'; | |
export const getModels = async (token: string = '') => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/models`, { | |
method: 'GET', | |
headers: { | |
Accept: 'application/json', | |
'Content-Type': 'application/json', | |
...(token && { authorization: `Bearer ${token}` }) | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
let models = res?.data ?? []; | |
models = models | |
.filter((models) => models) | |
.sort((a, b) => { | |
// Compare case-insensitively | |
const lowerA = a.name.toLowerCase(); | |
const lowerB = b.name.toLowerCase(); | |
if (lowerA < lowerB) return -1; | |
if (lowerA > lowerB) return 1; | |
// If same case-insensitively, sort by original strings, | |
// lowercase will come before uppercase due to ASCII values | |
if (a < b) return -1; | |
if (a > b) return 1; | |
return 0; // They are equal | |
}); | |
console.log(models); | |
return models; | |
}; | |
export const getBackendConfig = async () => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/config`, { | |
method: 'GET', | |
headers: { | |
'Content-Type': 'application/json' | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
export const getChangelog = async () => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/changelog`, { | |
method: 'GET', | |
headers: { | |
'Content-Type': 'application/json' | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
export const getVersionUpdates = async () => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/version/updates`, { | |
method: 'GET', | |
headers: { | |
'Content-Type': 'application/json' | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
export const getModelFilterConfig = async (token: string) => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/config/model/filter`, { | |
method: 'GET', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
export const updateModelFilterConfig = async ( | |
token: string, | |
enabled: boolean, | |
models: string[] | |
) => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/config/model/filter`, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
}, | |
body: JSON.stringify({ | |
enabled: enabled, | |
models: models | |
}) | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
export const getWebhookUrl = async (token: string) => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/webhook`, { | |
method: 'GET', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res.url; | |
}; | |
export const updateWebhookUrl = async (token: string, url: string) => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/webhook`, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
}, | |
body: JSON.stringify({ | |
url: url | |
}) | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res.url; | |
}; | |
export const getCommunitySharingEnabledStatus = async (token: string) => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/community_sharing`, { | |
method: 'GET', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
export const toggleCommunitySharingEnabledStatus = async (token: string) => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/community_sharing/toggle`, { | |
method: 'GET', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err.detail; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |
export const getModelConfig = async (token: string): Promise<GlobalModelConfig> => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/config/models`, { | |
method: 'GET', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
} | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res.models; | |
}; | |
export interface ModelConfig { | |
id: string; | |
name: string; | |
meta: ModelMeta; | |
base_model_id?: string; | |
params: ModelParams; | |
} | |
export interface ModelMeta { | |
description?: string; | |
capabilities?: object; | |
} | |
export interface ModelParams {} | |
export type GlobalModelConfig = ModelConfig[]; | |
export const updateModelConfig = async (token: string, config: GlobalModelConfig) => { | |
let error = null; | |
const res = await fetch(`${WEBUI_BASE_URL}/api/config/models`, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json', | |
Authorization: `Bearer ${token}` | |
}, | |
body: JSON.stringify({ | |
models: config | |
}) | |
}) | |
.then(async (res) => { | |
if (!res.ok) throw await res.json(); | |
return res.json(); | |
}) | |
.catch((err) => { | |
console.log(err); | |
error = err; | |
return null; | |
}); | |
if (error) { | |
throw error; | |
} | |
return res; | |
}; | |