| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 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<ModelBarProps> = (props) => {
- const { t } = useTranslation()
- const modelList = useAllModel()
- if (!('provider' in props)) {
- return <Tooltip
- popupContent={t('workflow.nodes.agent.modelNotSelected')}
- triggerMethod='hover'
- >
- <div className='relative'>
- <ModelSelector
- modelList={[]}
- triggerClassName='bg-workflow-block-parma-bg !h-6 !rounded-md'
- defaultModel={undefined}
- showDeprecatedWarnIcon={false}
- readonly
- deprecatedClassName='opacity-50'
- />
- <Indicator color={'red'} className='absolute -right-0.5 -top-0.5' />
- </div>
- </Tooltip>
- }
- const modelInstalled = modelList?.some(
- provider => provider.provider === props.provider && provider.models.some(model => model.model === props.model))
- const showWarn = modelList && !modelInstalled
- return modelList && <Tooltip
- popupContent={t('workflow.nodes.agent.modelNotInstallTooltip')}
- triggerMethod='hover'
- disabled={!modelList || modelInstalled}
- >
- <div className='relative'>
- <ModelSelector
- modelList={modelList}
- triggerClassName='bg-workflow-block-parma-bg !h-6 !rounded-md'
- defaultModel={props}
- showDeprecatedWarnIcon={false}
- readonly
- deprecatedClassName='opacity-50'
- />
- {showWarn && <Indicator color={'red'} className='absolute -right-0.5 -top-0.5' />}
- </div>
- </Tooltip>
- }
|