import type { ChangeEvent } from 'react' import type { DefaultModel } from '@/app/components/header/account-setting/model-provider-page/declarations' import type { SummaryIndexSetting as SummaryIndexSettingType } from '@/models/datasets' import { memo, useCallback, useMemo, } from 'react' import { useTranslation } from 'react-i18next' import Switch from '@/app/components/base/switch' import Textarea from '@/app/components/base/textarea' 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' type SummaryIndexSettingProps = { entry?: 'knowledge-base' | 'dataset-settings' | 'create-document' summaryIndexSetting?: SummaryIndexSettingType onSummaryIndexSettingChange?: (payload: SummaryIndexSettingType) => void readonly?: boolean } const SummaryIndexSetting = ({ entry = 'knowledge-base', summaryIndexSetting, onSummaryIndexSettingChange, readonly = false, }: SummaryIndexSettingProps) => { const { t } = useTranslation() const { data: textGenerationModelList, } = useModelList(ModelTypeEnum.textGeneration) const summaryIndexModelConfig = useMemo(() => { if (!summaryIndexSetting?.model_name || !summaryIndexSetting?.model_provider_name) return undefined return { providerName: summaryIndexSetting?.model_provider_name, modelName: summaryIndexSetting?.model_name, } }, [summaryIndexSetting?.model_name, summaryIndexSetting?.model_provider_name]) const handleSummaryIndexEnableChange = useCallback((value: boolean) => { onSummaryIndexSettingChange?.({ enable: value, }) }, [onSummaryIndexSettingChange]) const handleSummaryIndexModelChange = useCallback((model: DefaultModel) => { onSummaryIndexSettingChange?.({ model_provider_name: model.provider, model_name: model.model, }) }, [onSummaryIndexSettingChange]) const handleSummaryIndexPromptChange = useCallback((e: ChangeEvent) => { onSummaryIndexSettingChange?.({ summary_prompt: e.target.value, }) }, [onSummaryIndexSettingChange]) if (entry === 'knowledge-base') { return (
{t('form.summaryAutoGen', { ns: 'datasetSettings' })}
{ summaryIndexSetting?.enable && (
{t('form.summaryModel', { ns: 'datasetSettings' })}
{t('form.summaryInstructions', { ns: 'datasetSettings' })}