diff --git a/frontend/src/lib/components/settings/ModelParametersPanel.svelte b/frontend/src/lib/components/settings/ModelParametersPanel.svelte index 7c20f5d..7463f53 100644 --- a/frontend/src/lib/components/settings/ModelParametersPanel.svelte +++ b/frontend/src/lib/components/settings/ModelParametersPanel.svelte @@ -5,6 +5,7 @@ */ import { settingsState } from '$lib/stores/settings.svelte'; + import { modelsState, type ModelDefaults } from '$lib/stores/models.svelte'; import { PARAMETER_RANGES, PARAMETER_LABELS, @@ -16,6 +17,26 @@ // Parameter keys for iteration const parameterKeys: (keyof ModelParameters)[] = ['temperature', 'top_k', 'top_p', 'num_ctx']; + // Track model defaults for the selected model + let modelDefaults = $state({}); + + // Fetch model defaults when panel opens or model changes + $effect(() => { + if (settingsState.isPanelOpen && modelsState.selectedId) { + modelsState.fetchModelDefaults(modelsState.selectedId).then((defaults) => { + modelDefaults = defaults; + }); + } + }); + + /** + * Get the default value for a parameter (from model or hardcoded fallback) + */ + function getDefaultValue(key: keyof ModelParameters): number { + const modelValue = modelDefaults[key]; + return modelValue ?? DEFAULT_MODEL_PARAMETERS[key]; + } + /** * Format a parameter value for display */ @@ -79,7 +100,7 @@ type="button" role="switch" aria-checked={settingsState.useCustomParameters} - onclick={() => settingsState.toggleCustomParameters()} + onclick={() => settingsState.toggleCustomParameters(modelDefaults)} class="relative inline-flex h-5 w-9 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-sky-500 focus:ring-offset-2 focus:ring-offset-theme-secondary {settingsState.useCustomParameters ? 'bg-sky-600' : 'bg-theme-tertiary'}" >
@@ -132,7 +153,7 @@