diff --git a/src/lib/components/AddConnectionModal.svelte b/src/lib/components/AddConnectionModal.svelte index 16616fc247..68eb96b70f 100644 --- a/src/lib/components/AddConnectionModal.svelte +++ b/src/lib/components/AddConnectionModal.svelte @@ -140,10 +140,19 @@ }; const addModelHandler = () => { - if (modelId) { - modelIds = [...modelIds, modelId]; - modelId = ''; + const newModelId = modelId.trim(); + + if (!newModelId) { + return; } + + if (modelIds.includes(newModelId)) { + toast.error($i18n.t('Model ID is already added')); + return; + } + + modelIds = [...modelIds, newModelId]; + modelId = ''; }; const submitHandler = async () => { @@ -245,7 +254,7 @@ passthroughParams = Array.isArray(connection.config?.passthrough_params) ? connection.config.passthrough_params.join(', ') : (connection.config?.passthrough_params ?? ''); - modelIds = connection.config?.model_ids ?? []; + modelIds = [...new Set(connection.config?.model_ids ?? [])]; if (ollama) { connectionType = connection.config?.connection_type ?? 'local'; diff --git a/src/lib/components/admin/Settings/Evaluations/ArenaModelModal.svelte b/src/lib/components/admin/Settings/Evaluations/ArenaModelModal.svelte index ec8d997233..7f2667e35d 100644 --- a/src/lib/components/admin/Settings/Evaluations/ArenaModelModal.svelte +++ b/src/lib/components/admin/Settings/Evaluations/ArenaModelModal.svelte @@ -54,10 +54,10 @@ let showDeleteConfirmDialog = false; const addModelHandler = () => { - if (selectedModelId) { + if (selectedModelId && !modelIds.includes(selectedModelId)) { modelIds = [...modelIds, selectedModelId]; - selectedModelId = ''; } + selectedModelId = ''; }; const submitHandler = () => { @@ -111,7 +111,7 @@ id = model.id; profileImageUrl = model.meta.profile_image_url; description = model.meta.description; - modelIds = model.meta.model_ids || []; + modelIds = [...new Set(model.meta.model_ids || [])]; filterMode = model.meta?.filter_mode ?? 'include'; accessGrants = model.meta.access_grants ?? []; } @@ -362,7 +362,7 @@ bind:value={selectedModelId} > - {#each $models.filter((m) => m?.owned_by !== 'arena') as model} + {#each $models.filter((m) => m?.owned_by !== 'arena' && !modelIds.includes(m?.id)) as model} {/each} diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index da7da2fb01..1f15676d7f 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -1700,6 +1700,7 @@ "Model filesystem path detected. Model shortname is required for update, cannot continue.": "", "Model Filtering": "", "Model ID": "", + "Model ID is already added": "", "Model ID is required.": "", "Model IDs": "", "Model is now private": "",