From 3ba16118b4fabff34f7031257284c21063afefe8 Mon Sep 17 00:00:00 2001 From: one Date: Thu, 6 Mar 2025 23:04:10 +0800 Subject: [PATCH] feat: a button to add a whole group of models (#2736) * feat: a button a add a whole group of models * feat: search as typing in EditModelsPopup * feat: add a button to remove a whole group of models * feat: add remove button for model group in the model list --- src/renderer/src/i18n/locales/en-us.json | 2 + src/renderer/src/i18n/locales/ja-jp.json | 2 + src/renderer/src/i18n/locales/ru-ru.json | 2 + src/renderer/src/i18n/locales/zh-cn.json | 2 + src/renderer/src/i18n/locales/zh-tw.json | 2 + .../ProviderSettings/EditModelsPopup.tsx | 37 +++++++++++++++++-- .../ProviderSettings/ProviderSetting.tsx | 13 ++++++- 7 files changed, 55 insertions(+), 5 deletions(-) diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 371dc34b..fa4741b7 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -752,6 +752,8 @@ "models.add.model_id.tooltip": "Example: gpt-3.5-turbo", "models.add.model_name": "Model Name", "models.add.model_name.placeholder": "Optional e.g. GPT-4", + "models.manage.add_whole_group": "Add the whole group", + "models.manage.remove_whole_group": "Remove the whole group", "models.default_assistant_model": "Default Assistant Model", "models.default_assistant_model_description": "Model used when creating a new assistant, if the assistant is not set, this model will be used", "models.empty": "No models found", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 9672824a..a99ed5b4 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -752,6 +752,8 @@ "models.add.model_id.tooltip": "例:gpt-3.5-turbo", "models.add.model_name": "モデル名", "models.add.model_name.placeholder": "例:GPT-3.5", + "models.manage.add_whole_group": "グループ全体を追加", + "models.manage.remove_whole_group": "グループ全体を削除", "models.default_assistant_model": "デフォルトアシスタントモデル", "models.default_assistant_model_description": "新しいアシスタントを作成する際に使用されるモデル。アシスタントがモデルを設定していない場合、このモデルが使用されます", "models.empty": "モデルが見つかりません", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index b693ff70..7c665715 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -752,6 +752,8 @@ "models.add.model_id.tooltip": "Пример: gpt-3.5-turbo", "models.add.model_name": "Имя модели", "models.add.model_name.placeholder": "Необязательно, например, GPT-4", + "models.manage.add_whole_group": "Добавить всю группу", + "models.manage.remove_whole_group": "Удалить всю группу", "models.default_assistant_model": "Модель ассистента по умолчанию", "models.default_assistant_model_description": "Модель, используемая при создании нового ассистента, если ассистент не имеет настроенной модели, будет использоваться эта модель", "models.empty": "Модели не найдены", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 67880149..8799a1a5 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -752,6 +752,8 @@ "models.add.model_id.tooltip": "例如 gpt-3.5-turbo", "models.add.model_name": "模型名称", "models.add.model_name.placeholder": "例如 GPT-3.5", + "models.manage.add_whole_group": "添加整个分组", + "models.manage.remove_whole_group": "移除整个分组", "models.default_assistant_model": "默认助手模型", "models.default_assistant_model_description": "创建新助手时使用的模型,如果助手未设置模型,则使用此模型", "models.empty": "没有模型", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 5d16d4bb..69a86104 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -751,6 +751,8 @@ "models.add.model_id.tooltip": "例如 gpt-3.5-turbo", "models.add.model_name": "模型名稱", "models.add.model_name.placeholder": "可選,例如 GPT-4", + "models.manage.add_whole_group": "添加整個分組", + "models.manage.remove_whole_group": "移除整個分組", "models.default_assistant_model": "預設助手模型", "models.default_assistant_model_description": "建立新助手時使用的模型,如果助手未設定模型,則使用此模型", "models.empty": "找不到模型", diff --git a/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx index 7cd2e7ac..7bf68eca 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx @@ -30,6 +30,11 @@ interface Props extends ShowParams { resolve: (data: any) => void } +// Check if the model exists in the provider's model list +const isModelInProvider = (provider: Provider, modelId: string): boolean => { + return provider.models.some((m) => m.id === modelId) +} + const PopupContainer: React.FC = ({ provider: _provider, resolve }) => { const [open, setOpen] = useState(true) const { provider, models, addModel, removeModel } = useProvider(_provider.id) @@ -156,14 +161,38 @@ const PopupContainer: React.FC = ({ provider: _provider, resolve }) => { {t('models.embedding')} - + setSearchText(e.target.value)} + onSearch={setSearchText} + /> {Object.keys(modelGroups).map((group) => (
- {group} + + {group} +
+
+
{modelGroups[group].map((model) => { - const hasModel = provider.models.find((m) => m.id === model.id) return ( @@ -186,7 +215,7 @@ const PopupContainer: React.FC = ({ provider: _provider, resolve }) => { )} - {hasModel ? ( + {isModelInProvider(provider, model.id) ? (