From b14398481d7815e3e86ed551877dc12e51e6b4aa Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 17 May 2025 00:59:00 +0400 Subject: [PATCH] enh: model capabilities --- src/lib/components/chat/MessageInput.svelte | 33 +++++++++++++--- .../workspace/Models/Capabilities.svelte | 38 +++++++++++++++---- .../workspace/Models/ModelEditor.svelte | 6 ++- 3 files changed, 62 insertions(+), 15 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 39aaeeb32..9ee9bf606 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -116,12 +116,33 @@ export let placeholder = ''; let visionCapableModels = []; - $: visionCapableModels = [...(atSelectedModel ? [atSelectedModel] : selectedModels)].filter( + $: visionCapableModels = (atSelectedModel?.id ? [atSelectedModel.id] : selectedModels).filter( (model) => $models.find((m) => m.id === model)?.info?.meta?.capabilities?.vision ?? true ); + let webSearchCapableModels = []; + $: webSearchCapableModels = (atSelectedModel?.id ? [atSelectedModel.id] : selectedModels).filter( + (model) => $models.find((m) => m.id === model)?.info?.meta?.capabilities?.web_search ?? true + ); + + let imageGenerationCapableModels = []; + $: imageGenerationCapableModels = ( + atSelectedModel?.id ? [atSelectedModel.id] : selectedModels + ).filter( + (model) => + $models.find((m) => m.id === model)?.info?.meta?.capabilities?.image_generation ?? true + ); + + let codeInterpreterCapableModels = []; + $: codeInterpreterCapableModels = ( + atSelectedModel?.id ? [atSelectedModel.id] : selectedModels + ).filter( + (model) => + $models.find((m) => m.id === model)?.info?.meta?.capabilities?.code_interpreter ?? true + ); + let toggleFilters = []; - $: toggleFilters = (atSelectedModel?.id || selectedModels) + $: toggleFilters = (atSelectedModel?.id ? [atSelectedModel.id] : selectedModels) .map((id) => ($models.find((model) => model.id === id) || {})?.filters ?? []) .reduce((acc, filters) => acc.filter((f1) => filters.some((f2) => f2.id === f1.id))); @@ -879,7 +900,7 @@ console.log(userMessageElement); - userMessageElement.scrollIntoView({ block: 'center' }); + userMessageElement?.scrollIntoView({ block: 'center' }); editButton?.click(); } @@ -1196,7 +1217,7 @@ {/each} - {#if $config?.features?.enable_web_search && ($_user.role === 'admin' || $_user?.permissions?.features?.web_search)} + {#if (atSelectedModel?.id ? [atSelectedModel.id] : selectedModels).length === webSearchCapableModels.length && $config?.features?.enable_web_search && ($_user.role === 'admin' || $_user?.permissions?.features?.web_search)}