mirror of
https://github.com/langgenius/dify.git
synced 2026-03-21 22:38:26 +08:00
Signed-off-by: yyh <yuanyouhuilyz@gmail.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: CodingOnStar <hanxujiang@dify.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Coding On Star <447357187@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: -LAN- <laipz8200@outlook.com> Co-authored-by: statxc <tyleradams93226@gmail.com>
62 lines
2.0 KiB
TypeScript
62 lines
2.0 KiB
TypeScript
import type {
|
|
Model,
|
|
ModelItem,
|
|
ModelProvider,
|
|
} from '@/app/components/header/account-setting/model-provider-page/declarations'
|
|
import { useMemo } from 'react'
|
|
import { deriveModelStatus } from '@/app/components/header/account-setting/model-provider-page/derive-model-status'
|
|
import { useCredentialPanelState } from '@/app/components/header/account-setting/model-provider-page/provider-added-card/use-credential-panel-state'
|
|
import { useProviderContext } from '@/context/provider-context'
|
|
|
|
type UseEmbeddingModelStatusProps = {
|
|
embeddingModel?: string
|
|
embeddingModelProvider?: string
|
|
embeddingModelList: Model[]
|
|
}
|
|
|
|
type UseEmbeddingModelStatusResult = {
|
|
providerMeta: ModelProvider | undefined
|
|
modelProvider: Model | undefined
|
|
currentModel: ModelItem | undefined
|
|
status: ReturnType<typeof deriveModelStatus>
|
|
}
|
|
|
|
export const useEmbeddingModelStatus = ({
|
|
embeddingModel,
|
|
embeddingModelProvider,
|
|
embeddingModelList,
|
|
}: UseEmbeddingModelStatusProps): UseEmbeddingModelStatusResult => {
|
|
const { modelProviders } = useProviderContext()
|
|
|
|
const providerMeta = useMemo(() => {
|
|
return modelProviders.find(provider => provider.provider === embeddingModelProvider)
|
|
}, [embeddingModelProvider, modelProviders])
|
|
|
|
const modelProvider = useMemo(() => {
|
|
return embeddingModelList.find(provider => provider.provider === embeddingModelProvider)
|
|
}, [embeddingModelList, embeddingModelProvider])
|
|
|
|
const currentModel = useMemo(() => {
|
|
return modelProvider?.models.find(model => model.model === embeddingModel)
|
|
}, [embeddingModel, modelProvider])
|
|
|
|
const credentialState = useCredentialPanelState(providerMeta)
|
|
|
|
const status = useMemo(() => {
|
|
return deriveModelStatus(
|
|
embeddingModel,
|
|
embeddingModelProvider,
|
|
providerMeta,
|
|
currentModel,
|
|
credentialState,
|
|
)
|
|
}, [credentialState, currentModel, embeddingModel, embeddingModelProvider, providerMeta])
|
|
|
|
return {
|
|
providerMeta,
|
|
modelProvider,
|
|
currentModel,
|
|
status,
|
|
}
|
|
}
|