| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | import { RETRIEVE_METHOD, type RetrievalConfig } from '@/types/app'import type {  DefaultModelResponse,  Model,} from '@/app/components/header/account-setting/model-provider-page/declarations'import { RerankingModeEnum } from '@/models/datasets'export const isReRankModelSelected = ({  rerankDefaultModel,  isRerankDefaultModelVaild,  retrievalConfig,  rerankModelList,  indexMethod,}: {  rerankDefaultModel?: DefaultModelResponse  isRerankDefaultModelVaild: boolean  retrievalConfig: RetrievalConfig  rerankModelList: Model[]  indexMethod?: string}) => {  const rerankModelSelected = (() => {    if (retrievalConfig.reranking_model?.reranking_model_name) {      const provider = rerankModelList.find(({ provider }) => provider === retrievalConfig.reranking_model?.reranking_provider_name)      return provider?.models.find(({ model }) => model === retrievalConfig.reranking_model?.reranking_model_name)    }    if (isRerankDefaultModelVaild)      return !!rerankDefaultModel    return false  })()  if (    indexMethod === 'high_quality'    && (retrievalConfig.search_method === RETRIEVE_METHOD.hybrid && retrievalConfig.reranking_mode !== RerankingModeEnum.WeightedScore)    && !rerankModelSelected  )    return false  return true}export const ensureRerankModelSelected = ({  rerankDefaultModel,  indexMethod,  retrievalConfig,}: {  rerankDefaultModel: DefaultModelResponse  retrievalConfig: RetrievalConfig  indexMethod?: string}) => {  const rerankModel = retrievalConfig.reranking_model?.reranking_model_name ? retrievalConfig.reranking_model : undefined  if (    indexMethod === 'high_quality'    && (retrievalConfig.reranking_enable || retrievalConfig.search_method === RETRIEVE_METHOD.hybrid)    && !rerankModel    && rerankDefaultModel  ) {    return {      ...retrievalConfig,      reranking_model: {        reranking_provider_name: rerankDefaultModel.provider.provider,        reranking_model_name: rerankDefaultModel.model,      },    }  }  return retrievalConfig}
 |