Improve ModelTypeEnum type (#3051)

This commit is contained in:
Nanguan Lin 2024-04-04 15:54:59 +08:00 committed by GitHub
parent e4f686deb7
commit 718ac3f83b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 47 additions and 44 deletions

View File

@ -26,6 +26,7 @@ import { useModalContext } from '@/context/modal-context'
import ConfigParamModal from '@/app/components/app/configuration/toolbox/annotation/config-param-modal' import ConfigParamModal from '@/app/components/app/configuration/toolbox/annotation/config-param-modal'
import AnnotationFullModal from '@/app/components/billing/annotation-full/modal' import AnnotationFullModal from '@/app/components/billing/annotation-full/modal'
import { useDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks' import { useDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
const Config: FC = () => { const Config: FC = () => {
const { const {
@ -61,8 +62,8 @@ const Config: FC = () => {
setModerationConfig, setModerationConfig,
} = useContext(ConfigContext) } = useContext(ConfigContext)
const isChatApp = mode === AppType.chat const isChatApp = mode === AppType.chat
const { data: speech2textDefaultModel } = useDefaultModel(4) const { data: speech2textDefaultModel } = useDefaultModel(ModelTypeEnum.speech2text)
const { data: text2speechDefaultModel } = useDefaultModel(5) const { data: text2speechDefaultModel } = useDefaultModel(ModelTypeEnum.tts)
const { setShowModerationSettingModal } = useModalContext() const { setShowModerationSettingModal } = useModalContext()
const formattingChangedDispatcher = useFormattingChangedDispatcher() const formattingChangedDispatcher = useFormattingChangedDispatcher()

View File

@ -20,6 +20,7 @@ import {
} from '@/app/components/base/icons/src/public/common' } from '@/app/components/base/icons/src/public/common'
import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector' import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector'
import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks' import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
const ParamsConfig: FC = () => { const ParamsConfig: FC = () => {
const { t } = useTranslation() const { t } = useTranslation()
@ -41,7 +42,7 @@ const ParamsConfig: FC = () => {
modelList: rerankModelList, modelList: rerankModelList,
defaultModel: rerankDefaultModel, defaultModel: rerankDefaultModel,
currentModel: isRerankDefaultModelVaild, currentModel: isRerankDefaultModelVaild,
} = useModelListAndDefaultModelAndCurrentProviderAndModel(3) } = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.rerank)
const rerankModel = (() => { const rerankModel = (() => {
if (tempDataSetConfigs.reranking_model) { if (tempDataSetConfigs.reranking_model) {

View File

@ -22,6 +22,7 @@ import {
useModelList, useModelList,
useModelListAndDefaultModelAndCurrentProviderAndModel, useModelListAndDefaultModelAndCurrentProviderAndModel,
} from '@/app/components/header/account-setting/model-provider-page/hooks' } from '@/app/components/header/account-setting/model-provider-page/hooks'
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
type SettingsModalProps = { type SettingsModalProps = {
currentDataset: DataSet currentDataset: DataSet
@ -42,12 +43,12 @@ const SettingsModal: FC<SettingsModalProps> = ({
onCancel, onCancel,
onSave, onSave,
}) => { }) => {
const { data: embeddingsModelList } = useModelList(2) const { data: embeddingsModelList } = useModelList(ModelTypeEnum.textEmbedding)
const { const {
modelList: rerankModelList, modelList: rerankModelList,
defaultModel: rerankDefaultModel, defaultModel: rerankDefaultModel,
currentModel: isRerankDefaultModelVaild, currentModel: isRerankDefaultModelVaild,
} = useModelListAndDefaultModelAndCurrentProviderAndModel(3) } = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.rerank)
const { t } = useTranslation() const { t } = useTranslation()
const { notify } = useToastContext() const { notify } = useToastContext()
const ref = useRef(null) const ref = useRef(null)

View File

@ -31,7 +31,7 @@ import { IS_CE_EDITION } from '@/config'
import type { Inputs } from '@/models/debug' import type { Inputs } from '@/models/debug'
import { fetchFileUploadConfig } from '@/service/common' import { fetchFileUploadConfig } from '@/service/common'
import { useDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks' import { useDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
import { ModelFeatureEnum } from '@/app/components/header/account-setting/model-provider-page/declarations' import { ModelFeatureEnum, ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
import type { ModelParameterModalProps } from '@/app/components/header/account-setting/model-provider-page/model-parameter-modal' import type { ModelParameterModalProps } from '@/app/components/header/account-setting/model-provider-page/model-parameter-modal'
import { Plus } from '@/app/components/base/icons/src/vender/line/general' import { Plus } from '@/app/components/base/icons/src/vender/line/general'
import { useEventEmitterContextContext } from '@/context/event-emitter' import { useEventEmitterContextContext } from '@/context/event-emitter'
@ -84,7 +84,7 @@ const Debug: FC<IDebug> = ({
setVisionConfig, setVisionConfig,
} = useContext(ConfigContext) } = useContext(ConfigContext)
const { eventEmitter } = useEventEmitterContextContext() const { eventEmitter } = useEventEmitterContextContext()
const { data: text2speechDefaultModel } = useDefaultModel(5) const { data: text2speechDefaultModel } = useDefaultModel(ModelTypeEnum.textEmbedding)
const { data: fileUploadConfigResponse } = useSWR({ url: '/files/upload' }, fetchFileUploadConfig) const { data: fileUploadConfigResponse } = useSWR({ url: '/files/upload' }, fetchFileUploadConfig)
useEffect(() => { useEffect(() => {
setAutoFreeze(false) setAutoFreeze(false)

View File

@ -11,6 +11,7 @@ import type { AnnotationReplyConfig } from '@/models/debug'
import { ANNOTATION_DEFAULT } from '@/config' import { ANNOTATION_DEFAULT } from '@/config'
import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector' import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector'
import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks' import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
type Props = { type Props = {
appId: string appId: string
@ -36,7 +37,7 @@ const ConfigParamModal: FC<Props> = ({
modelList: embeddingsModelList, modelList: embeddingsModelList,
defaultModel: embeddingsDefaultModel, defaultModel: embeddingsDefaultModel,
currentModel: isEmbeddingsDefaultModelValid, currentModel: isEmbeddingsDefaultModelValid,
} = useModelListAndDefaultModelAndCurrentProviderAndModel(2) } = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.textEmbedding)
const [annotationConfig, setAnnotationConfig] = useState(oldAnnotationConfig) const [annotationConfig, setAnnotationConfig] = useState(oldAnnotationConfig)
const [isLoading, setLoading] = useState(false) const [isLoading, setLoading] = useState(false)

View File

@ -10,6 +10,7 @@ import { PatternRecognition, Semantic } from '@/app/components/base/icons/src/ve
import { FileSearch02 } from '@/app/components/base/icons/src/vender/solid/files' import { FileSearch02 } from '@/app/components/base/icons/src/vender/solid/files'
import { useProviderContext } from '@/context/provider-context' import { useProviderContext } from '@/context/provider-context'
import { useDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks' import { useDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
type Props = { type Props = {
value: RetrievalConfig value: RetrievalConfig
@ -22,7 +23,7 @@ const RetrievalMethodConfig: FC<Props> = ({
}) => { }) => {
const { t } = useTranslation() const { t } = useTranslation()
const { supportRetrievalMethods } = useProviderContext() const { supportRetrievalMethods } = useProviderContext()
const { data: rerankDefaultModel } = useDefaultModel(3) const { data: rerankDefaultModel } = useDefaultModel(ModelTypeEnum.rerank)
const value = (() => { const value = (() => {
if (!passValue.reranking_model.reranking_model_name) { if (!passValue.reranking_model.reranking_model_name) {
return { return {

View File

@ -12,6 +12,7 @@ import { HelpCircle } from '@/app/components/base/icons/src/vender/line/general'
import type { RetrievalConfig } from '@/types/app' import type { RetrievalConfig } from '@/types/app'
import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector' import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector'
import { useModelListAndDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks' import { useModelListAndDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
type Props = { type Props = {
type: RETRIEVE_METHOD type: RETRIEVE_METHOD
@ -30,7 +31,7 @@ const RetrievalParamConfig: FC<Props> = ({
const { const {
defaultModel: rerankDefaultModel, defaultModel: rerankDefaultModel,
modelList: rerankModelList, modelList: rerankModelList,
} = useModelListAndDefaultModel(3) } = useModelListAndDefaultModel(ModelTypeEnum.rerank)
const rerankModel = (() => { const rerankModel = (() => {
if (value.reranking_model) { if (value.reranking_model) {

View File

@ -2,6 +2,7 @@
import React, { useCallback, useEffect, useState } from 'react' import React, { useCallback, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import AppUnavailable from '../../base/app-unavailable' import AppUnavailable from '../../base/app-unavailable'
import { ModelTypeEnum } from '../../header/account-setting/model-provider-page/declarations'
import StepsNavBar from './steps-nav-bar' import StepsNavBar from './steps-nav-bar'
import StepOne from './step-one' import StepOne from './step-one'
import StepTwo from './step-two' import StepTwo from './step-two'
@ -28,7 +29,7 @@ const DatasetUpdateForm = ({ datasetId }: DatasetUpdateFormProps) => {
const [fileList, setFiles] = useState<FileItem[]>([]) const [fileList, setFiles] = useState<FileItem[]>([])
const [result, setResult] = useState<createDocumentResponse | undefined>() const [result, setResult] = useState<createDocumentResponse | undefined>()
const [hasError, setHasError] = useState(false) const [hasError, setHasError] = useState(false)
const { data: embeddingsDefaultModel } = useDefaultModel(2) const { data: embeddingsDefaultModel } = useDefaultModel(ModelTypeEnum.textEmbedding)
const [notionPages, setNotionPages] = useState<NotionPage[]>([]) const [notionPages, setNotionPages] = useState<NotionPage[]>([])
const updateNotionPages = (value: NotionPage[]) => { const updateNotionPages = (value: NotionPage[]) => {

View File

@ -43,6 +43,7 @@ import Tooltip from '@/app/components/base/tooltip'
import TooltipPlus from '@/app/components/base/tooltip-plus' import TooltipPlus from '@/app/components/base/tooltip-plus'
import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks' import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
import { LanguagesSupported } from '@/i18n/language' import { LanguagesSupported } from '@/i18n/language'
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
type ValueOf<T> = T[keyof T] type ValueOf<T> = T[keyof T]
type StepTwoProps = { type StepTwoProps = {
@ -275,7 +276,7 @@ const StepTwo = ({
modelList: rerankModelList, modelList: rerankModelList,
defaultModel: rerankDefaultModel, defaultModel: rerankDefaultModel,
currentModel: isRerankDefaultModelVaild, currentModel: isRerankDefaultModelVaild,
} = useModelListAndDefaultModelAndCurrentProviderAndModel(3) } = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.rerank)
const getCreationParams = () => { const getCreationParams = () => {
let params let params
if (segmentationType === SegmentType.CUSTOM && overlap > max) { if (segmentationType === SegmentType.CUSTOM && overlap > max) {

View File

@ -14,6 +14,7 @@ import StepTwo from '@/app/components/datasets/create/step-two'
import AccountSetting from '@/app/components/header/account-setting' import AccountSetting from '@/app/components/header/account-setting'
import AppUnavailable from '@/app/components/base/app-unavailable' import AppUnavailable from '@/app/components/base/app-unavailable'
import { useDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks' import { useDefaultModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
type DocumentSettingsProps = { type DocumentSettingsProps = {
datasetId: string datasetId: string
@ -26,7 +27,7 @@ const DocumentSettings = ({ datasetId, documentId }: DocumentSettingsProps) => {
const [isShowSetAPIKey, { setTrue: showSetAPIKey, setFalse: hideSetAPIkey }] = useBoolean() const [isShowSetAPIKey, { setTrue: showSetAPIKey, setFalse: hideSetAPIkey }] = useBoolean()
const [hasError, setHasError] = useState(false) const [hasError, setHasError] = useState(false)
const { indexingTechnique, dataset } = useContext(DatasetDetailContext) const { indexingTechnique, dataset } = useContext(DatasetDetailContext)
const { data: embeddingsDefaultModel } = useDefaultModel(2) const { data: embeddingsDefaultModel } = useDefaultModel(ModelTypeEnum.textEmbedding)
const saveHandler = () => router.push(`/datasets/${datasetId}/documents/${documentId}`) const saveHandler = () => router.push(`/datasets/${datasetId}/documents/${documentId}`)

View File

@ -3,6 +3,7 @@ import type { FC } from 'react'
import React, { useRef, useState } from 'react' import React, { useRef, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Toast from '../../base/toast' import Toast from '../../base/toast'
import { ModelTypeEnum } from '../../header/account-setting/model-provider-page/declarations'
import { XClose } from '@/app/components/base/icons/src/vender/line/general' import { XClose } from '@/app/components/base/icons/src/vender/line/general'
import type { RetrievalConfig } from '@/types/app' import type { RetrievalConfig } from '@/types/app'
import RetrievalMethodConfig from '@/app/components/datasets/common/retrieval-method-config' import RetrievalMethodConfig from '@/app/components/datasets/common/retrieval-method-config'
@ -39,7 +40,7 @@ const ModifyRetrievalModal: FC<Props> = ({
modelList: rerankModelList, modelList: rerankModelList,
defaultModel: rerankDefaultModel, defaultModel: rerankDefaultModel,
currentModel: isRerankDefaultModelVaild, currentModel: isRerankDefaultModelVaild,
} = useModelListAndDefaultModelAndCurrentProviderAndModel(3) } = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.rerank)
const handleSave = () => { const handleSave = () => {
if ( if (

View File

@ -24,6 +24,7 @@ import {
useModelList, useModelList,
useModelListAndDefaultModelAndCurrentProviderAndModel, useModelListAndDefaultModelAndCurrentProviderAndModel,
} from '@/app/components/header/account-setting/model-provider-page/hooks' } from '@/app/components/header/account-setting/model-provider-page/hooks'
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
const rowClass = ` const rowClass = `
flex justify-between py-4 flex-wrap gap-y-2 flex justify-between py-4 flex-wrap gap-y-2
@ -63,8 +64,8 @@ const Form = () => {
modelList: rerankModelList, modelList: rerankModelList,
defaultModel: rerankDefaultModel, defaultModel: rerankDefaultModel,
currentModel: isRerankDefaultModelVaild, currentModel: isRerankDefaultModelVaild,
} = useModelListAndDefaultModelAndCurrentProviderAndModel(3) } = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.rerank)
const { data: embeddingModelList } = useModelList(2) const { data: embeddingModelList } = useModelList(ModelTypeEnum.textEmbedding)
const handleSave = async () => { const handleSave = async () => {
if (loading) if (loading)

View File

@ -11,10 +11,11 @@ import type {
DefaultModel, DefaultModel,
DefaultModelResponse, DefaultModelResponse,
Model, Model,
ModelTypeEnum,
} from './declarations' } from './declarations'
import { import {
ConfigurateMethodEnum, ConfigurateMethodEnum,
ModelTypeEnum,
} from './declarations' } from './declarations'
import I18n from '@/context/i18n' import I18n from '@/context/i18n'
import { import {
@ -99,17 +100,8 @@ export const useProviderCrenditialsFormSchemasValue = (
return value return value
} }
export type ModelTypeIndex = 1 | 2 | 3 | 4 | 5 export const useModelList = (type: ModelTypeEnum) => {
export const MODEL_TYPE_MAPS = { const { data, mutate, isLoading } = useSWR(`/workspaces/current/models/model-types/${type}`, fetchModelList)
1: ModelTypeEnum.textGeneration,
2: ModelTypeEnum.textEmbedding,
3: ModelTypeEnum.rerank,
4: ModelTypeEnum.speech2text,
5: ModelTypeEnum.tts,
}
export const useModelList = (type: ModelTypeIndex) => {
const { data, mutate, isLoading } = useSWR(`/workspaces/current/models/model-types/${MODEL_TYPE_MAPS[type]}`, fetchModelList)
return { return {
data: data?.data || [], data: data?.data || [],
@ -118,8 +110,8 @@ export const useModelList = (type: ModelTypeIndex) => {
} }
} }
export const useDefaultModel = (type: ModelTypeIndex) => { export const useDefaultModel = (type: ModelTypeEnum) => {
const { data, mutate, isLoading } = useSWR(`/workspaces/current/default-model?model_type=${MODEL_TYPE_MAPS[type]}`, fetchDefaultModal) const { data, mutate, isLoading } = useSWR(`/workspaces/current/default-model?model_type=${type}`, fetchDefaultModal)
return { return {
data: data?.data, data: data?.data,
@ -152,7 +144,7 @@ export const useTextGenerationCurrentProviderAndModelAndModelList = (defaultMode
} }
} }
export const useModelListAndDefaultModel = (type: ModelTypeIndex) => { export const useModelListAndDefaultModel = (type: ModelTypeEnum) => {
const { data: modelList } = useModelList(type) const { data: modelList } = useModelList(type)
const { data: defaultModel } = useDefaultModel(type) const { data: defaultModel } = useDefaultModel(type)
@ -162,7 +154,7 @@ export const useModelListAndDefaultModel = (type: ModelTypeIndex) => {
} }
} }
export const useModelListAndDefaultModelAndCurrentProviderAndModel = (type: ModelTypeIndex) => { export const useModelListAndDefaultModelAndCurrentProviderAndModel = (type: ModelTypeEnum) => {
const { modelList, defaultModel } = useModelListAndDefaultModel(type) const { modelList, defaultModel } = useModelListAndDefaultModel(type)
const { currentProvider, currentModel } = useCurrentProviderAndModel( const { currentProvider, currentModel } = useCurrentProviderAndModel(
modelList, modelList,
@ -180,9 +172,8 @@ export const useModelListAndDefaultModelAndCurrentProviderAndModel = (type: Mode
export const useUpdateModelList = () => { export const useUpdateModelList = () => {
const { mutate } = useSWRConfig() const { mutate } = useSWRConfig()
const updateModelList = useCallback((type: ModelTypeIndex | ModelTypeEnum) => { const updateModelList = useCallback((type: ModelTypeEnum) => {
const modelType = typeof type === 'number' ? MODEL_TYPE_MAPS[type] : type mutate(`/workspaces/current/models/model-types/${type}`)
mutate(`/workspaces/current/models/model-types/${modelType}`)
}, [mutate]) }, [mutate])
return updateModelList return updateModelList

View File

@ -10,6 +10,7 @@ import type {
import { import {
ConfigurateMethodEnum, ConfigurateMethodEnum,
CustomConfigurationStatusEnum, CustomConfigurationStatusEnum,
ModelTypeEnum,
} from './declarations' } from './declarations'
import { import {
useDefaultModel, useDefaultModel,
@ -26,11 +27,11 @@ const ModelProviderPage = () => {
const { eventEmitter } = useEventEmitterContextContext() const { eventEmitter } = useEventEmitterContextContext()
const updateModelProviders = useUpdateModelProviders() const updateModelProviders = useUpdateModelProviders()
const updateModelList = useUpdateModelList() const updateModelList = useUpdateModelList()
const { data: textGenerationDefaultModel } = useDefaultModel(1) const { data: textGenerationDefaultModel } = useDefaultModel(ModelTypeEnum.textGeneration)
const { data: embeddingsDefaultModel } = useDefaultModel(2) const { data: embeddingsDefaultModel } = useDefaultModel(ModelTypeEnum.textEmbedding)
const { data: rerankDefaultModel } = useDefaultModel(3) const { data: rerankDefaultModel } = useDefaultModel(ModelTypeEnum.rerank)
const { data: speech2textDefaultModel } = useDefaultModel(4) const { data: speech2textDefaultModel } = useDefaultModel(ModelTypeEnum.speech2text)
const { data: ttsDefaultModel } = useDefaultModel(5) const { data: ttsDefaultModel } = useDefaultModel(ModelTypeEnum.tts)
const { modelProviders: providers } = useProviderContext() const { modelProviders: providers } = useProviderContext()
const { setShowModelModal } = useModalContext() const { setShowModelModal } = useModalContext()
const defaultModelNotConfigured = !textGenerationDefaultModel && !embeddingsDefaultModel && !speech2textDefaultModel && !rerankDefaultModel && !ttsDefaultModel const defaultModelNotConfigured = !textGenerationDefaultModel && !embeddingsDefaultModel && !speech2textDefaultModel && !rerankDefaultModel && !ttsDefaultModel

View File

@ -42,10 +42,10 @@ const SystemModel: FC<SystemModelSelectorProps> = ({
const { notify } = useToastContext() const { notify } = useToastContext()
const { textGenerationModelList } = useProviderContext() const { textGenerationModelList } = useProviderContext()
const updateModelList = useUpdateModelList() const updateModelList = useUpdateModelList()
const { data: embeddingModelList } = useModelList(2) const { data: embeddingModelList } = useModelList(ModelTypeEnum.textEmbedding)
const { data: rerankModelList } = useModelList(3) const { data: rerankModelList } = useModelList(ModelTypeEnum.rerank)
const { data: speech2textModelList } = useModelList(4) const { data: speech2textModelList } = useModelList(ModelTypeEnum.speech2text)
const { data: ttsModelList } = useModelList(5) const { data: ttsModelList } = useModelList(ModelTypeEnum.tts)
const [changedModelTypes, setChangedModelTypes] = useState<ModelTypeEnum[]>([]) const [changedModelTypes, setChangedModelTypes] = useState<ModelTypeEnum[]>([])
const [currentTextGenerationDefaultModel, changeCurrentTextGenerationDefaultModel] = useSystemDefaultModelAndModelList(textGenerationDefaultModel, textGenerationModelList) const [currentTextGenerationDefaultModel, changeCurrentTextGenerationDefaultModel] = useSystemDefaultModelAndModelList(textGenerationDefaultModel, textGenerationModelList)
const [currentEmbeddingsDefaultModel, changeCurrentEmbeddingsDefaultModel] = useSystemDefaultModelAndModelList(embeddingsDefaultModel, embeddingModelList) const [currentEmbeddingsDefaultModel, changeCurrentEmbeddingsDefaultModel] = useSystemDefaultModelAndModelList(embeddingsDefaultModel, embeddingModelList)