diff --git a/tools/ui/src/lib/components/app/models/ModelsManager/ModelsManager.svelte b/tools/ui/src/lib/components/app/models/ModelsManager/ModelsManager.svelte index a7e0247358..871b964dda 100644 --- a/tools/ui/src/lib/components/app/models/ModelsManager/ModelsManager.svelte +++ b/tools/ui/src/lib/components/app/models/ModelsManager/ModelsManager.svelte @@ -14,14 +14,7 @@ saveOverrides } from './utils'; import { LOCAL_BACKEND_ID } from '$lib/constants'; - import { ModelGroupingMode } from '$lib/enums/settings.enums'; - import { - backendsStore, - conversationsStore, - modelsStore, - settingsStore, - uiStore - } from '$lib/stores'; + import { backendsStore, conversationsStore, modelsStore, uiStore } from '$lib/stores'; import type { ModelOption } from '$lib/types/models'; import { getBackend } from '$lib/utils/api-base'; import { getBackendCapabilities } from '$lib/utils/backend'; @@ -142,79 +135,34 @@ }); } - // by capability: one block whose models can load and unload, one that is chat only - if (settingsStore.config.modelGrouping === ModelGroupingMode.COMPAT) { - const local = (entry: ModelQuantGroup) => entry.base.backendId === LOCAL_BACKEND_ID; - const loadable: ModelQuantGroup[] = []; - const chatOnly: ModelQuantGroup[] = []; + const localItems = byBackend.get(LOCAL_BACKEND_ID); - for (const entry of entries) { - if (claimed.has(entry.key) || hiddenKeys.has(entry.key)) continue; + if (localItems?.length) { + ordered.push({ + backendId: LOCAL_BACKEND_ID, + isLocal: true, + items: localItems, + key: LOCAL_BACKEND_ID, + kind: 'local', + label: 'Local models' + }); + } - const canLoad = getBackendCapabilities(getBackend(entry.base.backendId)).loadUnload; + for (const backend of backendsStore.enabled) { + if (backend.id === LOCAL_BACKEND_ID) continue; - (canLoad ? loadable : chatOnly).push(entry); - } + const items = byBackend.get(backend.id); - // the bundled server leads the block it belongs to - const leading = (list: ModelQuantGroup[]) => - [...list].sort((a, b) => Number(local(b)) - Number(local(a))); - - if (loadable.length) { + if (items?.length) { ordered.push({ - backendId: null, + backendId: backend.id, isLocal: false, - items: leading(loadable), - key: 'llama-compat', - kind: 'compat', - label: 'Llama-compat' + items, + key: backend.id, + kind: 'provider', + label: backend.name }); } - - if (chatOnly.length) { - ordered.push({ - backendId: null, - isLocal: false, - // one repo, one row per provider that serves it - items: groupModelQuants( - chatOnly.flatMap((entry) => entry.quants), - true - ), - key: 'oai-compat', - kind: 'compat', - label: 'OAI-compat' - }); - } - } else { - const localItems = byBackend.get(LOCAL_BACKEND_ID); - - if (localItems?.length) { - ordered.push({ - backendId: LOCAL_BACKEND_ID, - isLocal: true, - items: localItems, - key: LOCAL_BACKEND_ID, - kind: 'local', - label: 'Local models' - }); - } - - for (const backend of backendsStore.enabled) { - if (backend.id === LOCAL_BACKEND_ID) continue; - - const items = byBackend.get(backend.id); - - if (items?.length) { - ordered.push({ - backendId: backend.id, - isLocal: false, - items, - key: backend.id, - kind: 'provider', - label: backend.name - }); - } - } } if (hidden.length) { diff --git a/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorList.svelte b/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorList.svelte index e2eee8bc91..4d58b89b7e 100644 --- a/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorList.svelte +++ b/tools/ui/src/lib/components/app/models/ModelsSelector/ModelsSelectorList.svelte @@ -1,6 +1,6 @@