]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/blob
d27e3e01d76930cf3637e9fcabed32f0ad3b4f35
[pkg/ggml/sources/llama.cpp] /
1 <script lang="ts">
2 import { ModelBadge, ModelsSelectorDropdown } from '$lib/components/app';
3 import { ServerModelStatus } from '$lib/enums';
4 import { modelsStore } from '$lib/stores/models.svelte';
5 import { copyToClipboard } from '$lib/utils';
6
7 interface Props {
8 displayedModel: string | null;
9 isRouter: boolean;
10 isLoading: boolean;
11 onRegenerate: (modelOverride?: string) => void;
12 }
13
14 let { displayedModel, isLoading, isRouter, onRegenerate }: Props = $props();
15
16 let pendingModel = $state<string | null>(null);
17
18 function handleCopyModel() {
19 void copyToClipboard(displayedModel ?? '');
20 }
21 </script>
22
23 {#if isRouter}
24 <ModelsSelectorDropdown
25 currentModel={pendingModel ?? displayedModel}
26 disabled={isLoading}
27 onModelChange={async (modelId: string, modelName: string) => {
28 const status = modelsStore.getModelStatus(modelId);
29
30 if (status !== ServerModelStatus.LOADED) {
31 pendingModel = modelId;
32
33 try {
34 await modelsStore.loadModel(modelId);
35 } finally {
36 pendingModel = null;
37 }
38 }
39
40 onRegenerate(modelName);
41
42 return true;
43 }}
44 />
45 {:else}
46 <ModelBadge model={displayedModel || undefined} onclick={handleCopyModel} />
47 {/if}