mirror of https://github.com/langgenius/dify.git
feat: support show dataset in knowledge
This commit is contained in:
parent
1539d86f7d
commit
e1f8b4b387
|
|
@ -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 >
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 = ''
|
||||
|
|
|
|||
|
|
@ -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}`)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue