dify/web/app/components/datasets/settings/utils/index.tsx
Wu Tianwei 14d1b3f9b3
Some checks are pending
autofix.ci / autofix (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions
Main CI Pipeline / Check Changed Files (push) Waiting to run
Main CI Pipeline / API Tests (push) Blocked by required conditions
Main CI Pipeline / Web Tests (push) Blocked by required conditions
Main CI Pipeline / Style Check (push) Waiting to run
Main CI Pipeline / VDB Tests (push) Blocked by required conditions
Main CI Pipeline / DB Migration Test (push) Blocked by required conditions
Check i18n Files and Create PR / check-and-update (push) Waiting to run
feat: multimodal support (image) (#27793)
Co-authored-by: zxhlyh <jasonapring2015@outlook.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-09 11:44:50 +08:00

47 lines
1.9 KiB
TypeScript

import { type DefaultModel, type Model, ModelFeatureEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
import { IndexingType } from '../../create/step-two'
type ShowMultiModalTipProps = {
embeddingModel: DefaultModel
rerankingEnable: boolean
rerankModel: {
rerankingProviderName: string
rerankingModelName: string
}
indexMethod: IndexingType | undefined
embeddingModelList: Model[]
rerankModelList: Model[]
}
export const checkShowMultiModalTip = ({
embeddingModel,
rerankingEnable,
rerankModel,
indexMethod,
embeddingModelList,
rerankModelList,
}: ShowMultiModalTipProps) => {
if (indexMethod !== IndexingType.QUALIFIED || !embeddingModel.provider || !embeddingModel.model)
return false
const currentEmbeddingModelProvider = embeddingModelList.find(model => model.provider === embeddingModel.provider)
if (!currentEmbeddingModelProvider)
return false
const currentEmbeddingModel = currentEmbeddingModelProvider.models.find(model => model.model === embeddingModel.model)
if (!currentEmbeddingModel)
return false
const isCurrentEmbeddingModelSupportMultiModal = !!currentEmbeddingModel.features?.includes(ModelFeatureEnum.vision)
if (!isCurrentEmbeddingModelSupportMultiModal)
return false
const { rerankingModelName, rerankingProviderName } = rerankModel
if (!rerankingEnable || !rerankingModelName || !rerankingProviderName)
return false
const currentRerankingModelProvider = rerankModelList.find(model => model.provider === rerankingProviderName)
if (!currentRerankingModelProvider)
return false
const currentRerankingModel = currentRerankingModelProvider.models.find(model => model.model === rerankingModelName)
if (!currentRerankingModel)
return false
const isRerankingModelSupportMultiModal = !!currentRerankingModel.features?.includes(ModelFeatureEnum.vision)
return !isRerankingModelSupportMultiModal
}