mirror of https://github.com/langgenius/dify.git
feat: knowledge support single run
This commit is contained in:
parent
55b5d76e0b
commit
425e162a91
|
|
@ -32,7 +32,7 @@ const allMockData = {
|
|||
[BlockEnum.End]: EndNodeMock,
|
||||
}
|
||||
const nodes = [
|
||||
BlockEnum.LLM/* 3 */, BlockEnum.Start/* 1 */, BlockEnum.DirectAnswer/* 2 */, BlockEnum.KnowledgeRetrieval/* 4 */, BlockEnum.QuestionClassifier/* 5 */,
|
||||
BlockEnum.KnowledgeRetrieval/* 4 */, BlockEnum.Start/* 1 */, BlockEnum.DirectAnswer/* 2 */, BlockEnum.LLM/* 3 */, BlockEnum.QuestionClassifier/* 5 */,
|
||||
BlockEnum.IfElse/* 6 */, BlockEnum.Code/* 7 */, BlockEnum.TemplateTransform/* 8 */, BlockEnum.HttpRequest/* 9 */, BlockEnum.Tool/* 10 */,
|
||||
BlockEnum.VariableAssigner/* 11 */, BlockEnum.End/* 12 */,
|
||||
].map((item, i) => {
|
||||
|
|
|
|||
|
|
@ -23,6 +23,13 @@ const useOneStepRun = <T>({ id, data, defaultRunInputData }: Params<T>) => {
|
|||
}
|
||||
|
||||
const [runningStatus, setRunningStatus] = useState('un started')
|
||||
const handleRun = () => {
|
||||
setRunningStatus('running')
|
||||
}
|
||||
|
||||
const handleStop = () => {
|
||||
setRunningStatus('not started')
|
||||
}
|
||||
|
||||
// TODO: store to node
|
||||
const [runInputData, setRunInputData] = useState<Record<string, any>>(defaultRunInputData || {})
|
||||
|
|
@ -50,6 +57,8 @@ const useOneStepRun = <T>({ id, data, defaultRunInputData }: Params<T>) => {
|
|||
hideSingleRun,
|
||||
toVarInputs,
|
||||
runningStatus,
|
||||
handleRun,
|
||||
handleStop,
|
||||
setRunningStatus,
|
||||
runInputData,
|
||||
setRunInputData,
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@ import type { KnowledgeRetrievalNodeType } from './types'
|
|||
import Field from '@/app/components/workflow/nodes/_base/components/field'
|
||||
import Split from '@/app/components/workflow/nodes/_base/components/split'
|
||||
import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars'
|
||||
import type { NodePanelProps } from '@/app/components/workflow/types'
|
||||
import { InputVarType, type NodePanelProps } from '@/app/components/workflow/types'
|
||||
import BeforeRunForm from '@/app/components/workflow/nodes/_base/components/before-run-form'
|
||||
|
||||
const i18nPrefix = 'workflow.nodes.knowledgeRetrieval'
|
||||
|
||||
|
|
@ -28,6 +29,13 @@ const Panel: FC<NodePanelProps<KnowledgeRetrievalNodeType>> = ({
|
|||
handleMultipleRetrievalConfigChange,
|
||||
selectedDatasets,
|
||||
handleOnDatasetsChange,
|
||||
isShowSingleRun,
|
||||
hideSingleRun,
|
||||
runningStatus,
|
||||
handleRun,
|
||||
handleStop,
|
||||
query,
|
||||
setQuery,
|
||||
} = useConfig(id, data)
|
||||
|
||||
return (
|
||||
|
|
@ -111,6 +119,27 @@ const Panel: FC<NodePanelProps<KnowledgeRetrievalNodeType>> = ({
|
|||
|
||||
</>
|
||||
</OutputVars>
|
||||
{isShowSingleRun && (
|
||||
<BeforeRunForm
|
||||
nodeName={inputs.title}
|
||||
onHide={hideSingleRun}
|
||||
forms={[
|
||||
{
|
||||
inputs: [{
|
||||
label: t(`${i18nPrefix}.queryVariable`)!,
|
||||
variable: 'query',
|
||||
type: InputVarType.paragraph,
|
||||
required: true,
|
||||
}],
|
||||
values: { query },
|
||||
onChange: keyValue => setQuery((keyValue as any).query),
|
||||
},
|
||||
]}
|
||||
runningStatus={runningStatus}
|
||||
onRun={handleRun}
|
||||
onStop={handleStop}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import type { RETRIEVE_TYPE } from '@/types/app'
|
|||
import type { DataSet } from '@/models/datasets'
|
||||
import { fetchDatasets } from '@/service/datasets'
|
||||
import useNodeCrud from '@/app/components/workflow/nodes/_base/hooks/use-node-crud'
|
||||
import useOneStepRun from '@/app/components/workflow/nodes/_base/hooks/use-one-step-run'
|
||||
|
||||
const useConfig = (id: string, payload: KnowledgeRetrievalNodeType) => {
|
||||
const { inputs, setInputs } = useNodeCrud<KnowledgeRetrievalNodeType>(id, payload)
|
||||
|
|
@ -54,6 +55,31 @@ const useConfig = (id: string, payload: KnowledgeRetrievalNodeType) => {
|
|||
setSelectedDatasets(newDatasets)
|
||||
}, [inputs, setInputs])
|
||||
|
||||
// single run
|
||||
const {
|
||||
isShowSingleRun,
|
||||
hideSingleRun,
|
||||
runningStatus,
|
||||
handleRun,
|
||||
handleStop,
|
||||
runInputData,
|
||||
setRunInputData,
|
||||
} = useOneStepRun<KnowledgeRetrievalNodeType>({
|
||||
id,
|
||||
data: inputs,
|
||||
defaultRunInputData: {
|
||||
query: 'What is the capital of France?',
|
||||
},
|
||||
})
|
||||
|
||||
const query = runInputData.query
|
||||
const setQuery = useCallback((newQuery: string) => {
|
||||
setRunInputData({
|
||||
...runInputData,
|
||||
query: newQuery,
|
||||
})
|
||||
}, [runInputData, setRunInputData])
|
||||
|
||||
return {
|
||||
inputs,
|
||||
handleQueryVarChange,
|
||||
|
|
@ -61,6 +87,13 @@ const useConfig = (id: string, payload: KnowledgeRetrievalNodeType) => {
|
|||
handleMultipleRetrievalConfigChange,
|
||||
selectedDatasets,
|
||||
handleOnDatasetsChange,
|
||||
isShowSingleRun,
|
||||
hideSingleRun,
|
||||
runningStatus,
|
||||
handleRun,
|
||||
handleStop,
|
||||
query,
|
||||
setQuery,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -216,7 +216,6 @@ const Panel: FC<NodePanelProps<LLMNodeType>> = ({
|
|||
onStop={handleStop}
|
||||
/>
|
||||
)}
|
||||
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,7 +95,8 @@ const useConfig = (id: string, payload: LLMNodeType) => {
|
|||
hideSingleRun,
|
||||
toVarInputs,
|
||||
runningStatus,
|
||||
setRunningStatus,
|
||||
handleRun,
|
||||
handleStop,
|
||||
runInputData,
|
||||
setRunInputData,
|
||||
} = useOneStepRun<LLMNodeType>({
|
||||
|
|
@ -145,13 +146,6 @@ const useConfig = (id: string, payload: LLMNodeType) => {
|
|||
}, [runInputData, setRunInputData])
|
||||
|
||||
const varInputs = toVarInputs(inputs.variables)
|
||||
const handleRun = () => {
|
||||
setRunningStatus('running')
|
||||
}
|
||||
|
||||
const handleStop = () => {
|
||||
setRunningStatus('not started')
|
||||
}
|
||||
|
||||
return {
|
||||
inputs,
|
||||
|
|
|
|||
Loading…
Reference in New Issue