feat: support show dataset in knowledge

This commit is contained in:
Joel 2025-10-14 18:31:42 +08:00
parent 1539d86f7d
commit e1f8b4b387
4 changed files with 55 additions and 17 deletions

View File

@ -98,13 +98,15 @@ const Item: FC<ItemProps> = ({
text={t('dataset.externalTag') as string}
/>
}
<Drawer isOpen={showSettingsModal} onClose={() => setShowSettingsModal(false)} footer={null} mask={isMobile} panelClassName='mt-16 mx-2 sm:mr-2 mb-3 !p-0 !max-w-[640px] rounded-xl'>
<SettingsModal
currentDataset={config}
onCancel={() => setShowSettingsModal(false)}
onSave={handleSave}
/>
</Drawer>
{showSettingsModal && (
<Drawer isOpen={showSettingsModal} onClose={() => setShowSettingsModal(false)} footer={null} mask={isMobile} panelClassName='mt-16 mx-2 sm:mr-2 mb-3 !p-0 !max-w-[640px] rounded-xl'>
<SettingsModal
currentDataset={config}
onCancel={() => setShowSettingsModal(false)}
onSave={handleSave}
/>
</Drawer>
)}
</div >
)
}

View File

@ -21,7 +21,7 @@ import type { Features as FeaturesData, FileUpload } from '@/app/components/base
import { FILE_EXTS } from '@/app/components/base/prompt-editor/constants'
import { SupportUploadFileTypes } from '@/app/components/workflow/types'
import { useGetTryAppInfo } from '@/service/use-try-app'
import { useGetTryAppDataSets, useGetTryAppInfo } from '@/service/use-try-app'
import { noop } from 'lodash'
import { correctModelProvider } from '@/utils'
import { userInputsFormToPromptVariables } from '@/utils/model-config'
@ -57,12 +57,36 @@ const Configuration: FC<Props> = ({
const media = useBreakpoints()
const isMobile = media === MediaType.mobile
const { data: appDetail, isLoading } = useGetTryAppInfo(appId)
const { data: appDetail, isLoading: isLoadingAppDetail } = useGetTryAppInfo(appId)
const datasetIds = (() => {
if(isLoadingAppDetail)
return []
const modelConfig = appDetail?.model_config
if(!modelConfig)
return []
let datasets: any = null
if (modelConfig.agent_mode?.tools?.find(({ dataset }: any) => dataset?.enabled))
datasets = modelConfig.agent_mode?.tools.filter(({ dataset }: any) => dataset?.enabled)
// new dataset struct
else if (modelConfig.dataset_configs.datasets?.datasets?.length > 0)
datasets = modelConfig.dataset_configs?.datasets?.datasets
if (datasets?.length && datasets?.length > 0)
return datasets.map(({ dataset }: any) => dataset.id)
return []
})()
const { data: dataSetData, isLoading: isLoadingDatasets } = useGetTryAppDataSets(appId, datasetIds)
const dataSets = dataSetData?.data || []
const isLoading = isLoadingAppDetail || isLoadingDatasets
const modelConfig = ((modelConfig?: BackendModelConfig) => {
if(isLoading || !modelConfig)
return defaultModelConfig
const model = modelConfig.model
const newModelConfig = {
provider: correctModelProvider(model.provider),
model_id: model.name,
@ -105,7 +129,7 @@ const Configuration: FC<Props> = ({
retriever_resource: modelConfig.retriever_resource,
annotation_reply: modelConfig.annotation_reply,
external_data_tools: modelConfig.external_data_tools,
dataSets: [],
dataSets,
agentConfig: appDetail?.mode === 'agent-chat' ? {
max_iteration: DEFAULT_AGENT_SETTING.max_iteration,
...modelConfig.agent_mode,
@ -143,12 +167,6 @@ const Configuration: FC<Props> = ({
// completion configuration
const completionPromptConfig = modelConfig?.completion_prompt_config || clone(DEFAULT_COMPLETION_PROMPT_CONFIG) as any
// datasets
const dataSets = (() => {
return []
})()
// const selectedIds = dataSets.map(item => item.id)
// prompt & model config
const inputs = {}
const query = ''

View File

@ -6,6 +6,8 @@ import type {
SiteInfo,
} from '@/models/share'
import type { ModelConfig } from '@/types/app'
import qs from 'qs'
import type { DataSetListResponse } from '@/models/datasets'
type TryAppInfo = {
name: string
@ -17,3 +19,8 @@ type TryAppInfo = {
export const fetchTryAppInfo = async (appId: string) => {
return get(`/trial-apps/${appId}`) as Promise<TryAppInfo>
}
export const fetchTryAppDatasets = (appId: string, ids: string[]) => {
const urlParams = qs.stringify({ ids }, { indices: false })
return get<DataSetListResponse>(`/trial-apps/${appId}/datasets?${urlParams}`)
}

View File

@ -1,6 +1,7 @@
import { useQuery } from '@tanstack/react-query'
import { fetchTryAppInfo } from './try-app'
import { fetchTryAppDatasets, fetchTryAppInfo } from './try-app'
import { AppSourceType, fetchAppParams } from './share'
import type { DataSetListResponse } from '@/models/datasets'
const NAME_SPACE = 'try-app'
@ -21,3 +22,13 @@ export const useGetTryAppParams = (appId: string) => {
},
})
}
export const useGetTryAppDataSets = (appId: string, ids: string[]) => {
return useQuery<DataSetListResponse>({
queryKey: [NAME_SPACE, 'dataSets', ids],
queryFn: () => {
return fetchTryAppDatasets(appId, ids)
},
enabled: ids.length > 0,
})
}