diff --git a/web/src/i18n/en.ts b/web/src/i18n/en.ts index e986562c..0962c4a6 100644 --- a/web/src/i18n/en.ts +++ b/web/src/i18n/en.ts @@ -557,6 +557,7 @@ export const en = { add: 'Add', item: 'item', apiKeyNum: ' API Keys', + official: 'Official', llm: 'LLM', chat: 'Chat', diff --git a/web/src/i18n/zh.ts b/web/src/i18n/zh.ts index 87f96cf0..70899093 100644 --- a/web/src/i18n/zh.ts +++ b/web/src/i18n/zh.ts @@ -1123,6 +1123,7 @@ export const zh = { add: '添加', item: '个', apiKeyNum: '个 API Key', + official: '官方', llm: 'LLM', chat: 'Chat', diff --git a/web/src/views/ModelManagement/Square.tsx b/web/src/views/ModelManagement/Square.tsx index ad5d2441..f52d158e 100644 --- a/web/src/views/ModelManagement/Square.tsx +++ b/web/src/views/ModelManagement/Square.tsx @@ -56,7 +56,10 @@ const ModelSquare = forwardRef {t(`modelNew.${item.type}`)}} + subTitle={ + {t(`modelNew.${item.type}`)} + {item.is_official && {t(`modelNew.official`)}} + } avatarUrl={getLogoUrl(item.logo)} avatar={
diff --git a/web/src/views/ModelManagement/components/ModelImplement/SubModelModal.tsx b/web/src/views/ModelManagement/components/ModelImplement/SubModelModal.tsx index 23b30062..d5b3ad45 100644 --- a/web/src/views/ModelManagement/components/ModelImplement/SubModelModal.tsx +++ b/web/src/views/ModelManagement/components/ModelImplement/SubModelModal.tsx @@ -1,8 +1,8 @@ -import { forwardRef, useImperativeHandle, useState, useMemo, useEffect } from 'react'; +import { forwardRef, useImperativeHandle, useState, useEffect } from 'react'; import { Form, Cascader, App, type CascaderProps } from 'antd'; import { useTranslation } from 'react-i18next'; -import type { SubModelModalForm, SubModelModalRef, SubModelModalProps, ModelList } from './types'; +import type { SubModelModalForm, SubModelModalRef, SubModelModalProps } from './types'; import RbModal from '@/components/RbModal' import CustomSelect from '@/components/CustomSelect' import { modelProviderUrl, getModelNewList } from '@/api/models' @@ -59,7 +59,8 @@ const SubModelModal = forwardRef(({ ...vo[0], model_name: vo[0].name, model_config_ids: [vo[0].id], - id: vo[1].value + id: vo[1].value, + api_key: vo[1].label }))) handleClose() }) diff --git a/web/src/views/ModelManagement/components/ModelImplement/index.tsx b/web/src/views/ModelManagement/components/ModelImplement/index.tsx index 73a4239b..779d6541 100644 --- a/web/src/views/ModelManagement/components/ModelImplement/index.tsx +++ b/web/src/views/ModelManagement/components/ModelImplement/index.tsx @@ -24,15 +24,15 @@ const ModelImplement: FC = ({ type, value, onChange }) => { } subModelModalRef.current?.handleOpen() } - const handleDelete = (provider: string) => { + const handleDelete = (vo: any) => { modal.confirm({ - title: t('common.confirmDeleteDesc', { name: provider }), + title: t('common.confirmDeleteDesc', { name: [vo.model_name, vo.api_key].join(' / ') }), content: t('application.apiKeyDeleteContent'), okText: t('common.delete'), cancelText: t('common.cancel'), okType: 'danger', onOk: () => { - onChange?.(value?.filter((item: any) => item.provider !== provider)) + onChange?.(value?.filter((item: any) => item.id !== vo.id)) } }) } @@ -70,18 +70,18 @@ const ModelImplement: FC = ({ type, value, onChange }) => {
{!value || value.length === 0 ? - : Object.entries(groupedByProvider).map(([provider, items]: [string, ModelList[]]) => { + : value.map((item: any) => { return ( -
- -
{[...new Set(items?.map((vo) => vo.model_name))].join(', ')}
+
+ +
{[item.model_name, item.api_key].join(' / ')}
handleDelete(provider)} + onClick={() => handleDelete(item)} >
- {t(`modelNew.${provider}`)} + {t(`modelNew.${item.provider}`)}
) })} diff --git a/web/src/views/ModelManagement/components/ModelSquareDetail.tsx b/web/src/views/ModelManagement/components/ModelSquareDetail.tsx index 55d4ff63..50b5b64f 100644 --- a/web/src/views/ModelManagement/components/ModelSquareDetail.tsx +++ b/web/src/views/ModelManagement/components/ModelSquareDetail.tsx @@ -65,7 +65,10 @@ const ModelSquareDetail = forwardRef{t(`modelNew.${item.type}`)}} + subTitle={ + {t(`modelNew.${item.type}`)} + {item.is_official && {t(`modelNew.official`)}} + } avatarUrl={getLogoUrl(item.logo)} avatar={