import Tooltip from '@/app/components/base/tooltip' import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations' import { useModelList } from '@/app/components/header/account-setting/model-provider-page/hooks' import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector' import Indicator from '@/app/components/header/indicator' import { type FC, useMemo } from 'react' import { useTranslation } from 'react-i18next' export type ModelBarProps = { provider: string model: string } | {} const useAllModel = () => { const { data: textGeneration } = useModelList(ModelTypeEnum.textGeneration) const { data: moderation } = useModelList(ModelTypeEnum.moderation) const { data: rerank } = useModelList(ModelTypeEnum.rerank) const { data: speech2text } = useModelList(ModelTypeEnum.speech2text) const { data: textEmbedding } = useModelList(ModelTypeEnum.textEmbedding) const { data: tts } = useModelList(ModelTypeEnum.tts) const models = useMemo(() => { return textGeneration .concat(moderation) .concat(rerank) .concat(speech2text) .concat(textEmbedding) .concat(tts) }, [textGeneration, moderation, rerank, speech2text, textEmbedding, tts]) if (!textGeneration || !moderation || !rerank || !speech2text || !textEmbedding || !tts) return undefined return models } export const ModelBar: FC = (props) => { const { t } = useTranslation() const modelList = useAllModel() if (!('provider' in props)) { return
} const modelInstalled = modelList?.some( provider => provider.provider === props.provider && provider.models.some(model => model.model === props.model)) const showWarn = modelList && !modelInstalled return modelList &&
{showWarn && }
}