diff --git a/src/lib/components/chat/ModelSelector/Selector.svelte b/src/lib/components/chat/ModelSelector/Selector.svelte index 4ac937121..f13ec1577 100644 --- a/src/lib/components/chat/ModelSelector/Selector.svelte +++ b/src/lib/components/chat/ModelSelector/Selector.svelte @@ -61,7 +61,9 @@ $: selectedModel = items.find((item) => item.value === value) ?? ''; let searchValue = ''; + let selectedTag = ''; + let selectedConnectionType = ''; let ollamaVersion = null; @@ -95,12 +97,35 @@ } return item.model?.info?.meta?.tags?.map((tag) => tag.name).includes(selectedTag); }) - : items.filter((item) => { - if (selectedTag === '') { - return true; - } - return item.model?.info?.meta?.tags?.map((tag) => tag.name).includes(selectedTag); - }); + .filter((item) => { + if (selectedConnectionType === '') { + return true; + } else if (selectedConnectionType === 'ollama') { + return item.model?.owned_by === 'ollama'; + } else if (selectedConnectionType === 'openai') { + return item.model?.owned_by === 'openai'; + } else if (selectedConnectionType === 'direct') { + return item.model?.direct; + } + }) + : items + .filter((item) => { + if (selectedTag === '') { + return true; + } + return item.model?.info?.meta?.tags?.map((tag) => tag.name).includes(selectedTag); + }) + .filter((item) => { + if (selectedConnectionType === '') { + return true; + } else if (selectedConnectionType === 'ollama') { + return item.model?.owned_by === 'ollama'; + } else if (selectedConnectionType === 'openai') { + return item.model?.owned_by === 'openai'; + } else if (selectedConnectionType === 'direct') { + return item.model?.direct; + } + }); const pullModelHandler = async () => { const sanitizedModelTag = searchValue.trim().replace(/^ollama\s+(run|pull)\s+/, ''); @@ -332,48 +357,59 @@ bind:this={tagsContainerElement} > - + {#if items.find((item) => item.model?.owned_by === 'ollama')} + + {/if} - + {#if items.find((item) => item.model?.owned_by === 'openai')} + + {/if} - + {#if items.find((item) => item.model?.direct)} + + {/if} {#each tags as tag}