feat(llm-playground): add model metadata system and SSD documentation

- Add MODEL_METADATA config for Ollama models with descriptions and modality
- Update default model to gemma3:4b
- Show model descriptions in ModelSelector and ComparisonSelector
- Add docs/OLLAMA_MODELS.md with instructions for adding new models
- Document external 4TB SSD setup in MAC_MINI_SERVER.md
- Add gemma3:12b, gemma3:27b, qwen2.5-coder:14b to model registry
This commit is contained in:
Till-JS 2026-02-01 00:24:34 +01:00
parent a341aa1b13
commit 213740411b
6 changed files with 310 additions and 14 deletions

View file

@ -42,6 +42,7 @@
class="flex cursor-pointer items-center gap-2 rounded p-2 transition-colors hover:bg-zinc-800"
class:opacity-50={isDisabled}
class:cursor-not-allowed={isDisabled}
title={model.description || ''}
>
<input
type="checkbox"
@ -50,9 +51,16 @@
disabled={isDisabled}
class="rounded"
/>
<span class="truncate text-sm" style="color: var(--color-text);">
{getModelDisplayName(model.id)}
</span>
<div class="min-w-0 flex-1">
<span class="block truncate text-sm" style="color: var(--color-text);">
{getModelDisplayName(model.id)}
</span>
{#if model.description}
<span class="block truncate text-xs" style="color: var(--color-text-muted);">
{model.description}
</span>
{/if}
</div>
</label>
{/each}
</div>

View file

@ -1,11 +1,19 @@
<script lang="ts">
import { modelsStore } from '$lib/stores/models.svelte';
import { modelsStore, MODEL_METADATA } from '$lib/stores/models.svelte';
import { settingsStore } from '$lib/stores/settings.svelte';
import { onMount } from 'svelte';
onMount(() => {
modelsStore.loadModels();
});
// Get description for currently selected model
const selectedModelDescription = $derived(() => {
const modelName = settingsStore.model.includes('/')
? settingsStore.model.split('/').slice(1).join('/')
: settingsStore.model;
return MODEL_METADATA[modelName]?.description;
});
</script>
<div>
@ -48,8 +56,11 @@
</optgroup>
{/each}
</select>
<p class="mt-1.5 text-xs" style="color: var(--color-text-muted);">
{modelsStore.models.length} models available
</p>
<div class="mt-1.5 text-xs" style="color: var(--color-text-muted);">
{#if selectedModelDescription()}
<p class="mb-0.5">{selectedModelDescription()}</p>
{/if}
<p>{modelsStore.models.length} models available</p>
</div>
{/if}
</div>