Commit 425e162a authored by Joel's avatar Joel

feat: knowledge support single run

parent 55b5d76e
...@@ -32,7 +32,7 @@ const allMockData = { ...@@ -32,7 +32,7 @@ const allMockData = {
[BlockEnum.End]: EndNodeMock, [BlockEnum.End]: EndNodeMock,
} }
const nodes = [ 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.IfElse/* 6 */, BlockEnum.Code/* 7 */, BlockEnum.TemplateTransform/* 8 */, BlockEnum.HttpRequest/* 9 */, BlockEnum.Tool/* 10 */,
BlockEnum.VariableAssigner/* 11 */, BlockEnum.End/* 12 */, BlockEnum.VariableAssigner/* 11 */, BlockEnum.End/* 12 */,
].map((item, i) => { ].map((item, i) => {
......
...@@ -23,6 +23,13 @@ const useOneStepRun = <T>({ id, data, defaultRunInputData }: Params<T>) => { ...@@ -23,6 +23,13 @@ const useOneStepRun = <T>({ id, data, defaultRunInputData }: Params<T>) => {
} }
const [runningStatus, setRunningStatus] = useState('un started') const [runningStatus, setRunningStatus] = useState('un started')
const handleRun = () => {
setRunningStatus('running')
}
const handleStop = () => {
setRunningStatus('not started')
}
// TODO: store to node // TODO: store to node
const [runInputData, setRunInputData] = useState<Record<string, any>>(defaultRunInputData || {}) const [runInputData, setRunInputData] = useState<Record<string, any>>(defaultRunInputData || {})
...@@ -50,6 +57,8 @@ const useOneStepRun = <T>({ id, data, defaultRunInputData }: Params<T>) => { ...@@ -50,6 +57,8 @@ const useOneStepRun = <T>({ id, data, defaultRunInputData }: Params<T>) => {
hideSingleRun, hideSingleRun,
toVarInputs, toVarInputs,
runningStatus, runningStatus,
handleRun,
handleStop,
setRunningStatus, setRunningStatus,
runInputData, runInputData,
setRunInputData, setRunInputData,
......
...@@ -10,7 +10,8 @@ import type { KnowledgeRetrievalNodeType } from './types' ...@@ -10,7 +10,8 @@ import type { KnowledgeRetrievalNodeType } from './types'
import Field from '@/app/components/workflow/nodes/_base/components/field' import Field from '@/app/components/workflow/nodes/_base/components/field'
import Split from '@/app/components/workflow/nodes/_base/components/split' import Split from '@/app/components/workflow/nodes/_base/components/split'
import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' 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' const i18nPrefix = 'workflow.nodes.knowledgeRetrieval'
...@@ -28,6 +29,13 @@ const Panel: FC<NodePanelProps<KnowledgeRetrievalNodeType>> = ({ ...@@ -28,6 +29,13 @@ const Panel: FC<NodePanelProps<KnowledgeRetrievalNodeType>> = ({
handleMultipleRetrievalConfigChange, handleMultipleRetrievalConfigChange,
selectedDatasets, selectedDatasets,
handleOnDatasetsChange, handleOnDatasetsChange,
isShowSingleRun,
hideSingleRun,
runningStatus,
handleRun,
handleStop,
query,
setQuery,
} = useConfig(id, data) } = useConfig(id, data)
return ( return (
...@@ -111,6 +119,27 @@ const Panel: FC<NodePanelProps<KnowledgeRetrievalNodeType>> = ({ ...@@ -111,6 +119,27 @@ const Panel: FC<NodePanelProps<KnowledgeRetrievalNodeType>> = ({
</> </>
</OutputVars> </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>
</div> </div>
) )
......
...@@ -6,6 +6,7 @@ import type { RETRIEVE_TYPE } from '@/types/app' ...@@ -6,6 +6,7 @@ import type { RETRIEVE_TYPE } from '@/types/app'
import type { DataSet } from '@/models/datasets' import type { DataSet } from '@/models/datasets'
import { fetchDatasets } from '@/service/datasets' import { fetchDatasets } from '@/service/datasets'
import useNodeCrud from '@/app/components/workflow/nodes/_base/hooks/use-node-crud' 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 useConfig = (id: string, payload: KnowledgeRetrievalNodeType) => {
const { inputs, setInputs } = useNodeCrud<KnowledgeRetrievalNodeType>(id, payload) const { inputs, setInputs } = useNodeCrud<KnowledgeRetrievalNodeType>(id, payload)
...@@ -54,6 +55,31 @@ const useConfig = (id: string, payload: KnowledgeRetrievalNodeType) => { ...@@ -54,6 +55,31 @@ const useConfig = (id: string, payload: KnowledgeRetrievalNodeType) => {
setSelectedDatasets(newDatasets) setSelectedDatasets(newDatasets)
}, [inputs, setInputs]) }, [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 { return {
inputs, inputs,
handleQueryVarChange, handleQueryVarChange,
...@@ -61,6 +87,13 @@ const useConfig = (id: string, payload: KnowledgeRetrievalNodeType) => { ...@@ -61,6 +87,13 @@ const useConfig = (id: string, payload: KnowledgeRetrievalNodeType) => {
handleMultipleRetrievalConfigChange, handleMultipleRetrievalConfigChange,
selectedDatasets, selectedDatasets,
handleOnDatasetsChange, handleOnDatasetsChange,
isShowSingleRun,
hideSingleRun,
runningStatus,
handleRun,
handleStop,
query,
setQuery,
} }
} }
......
...@@ -216,7 +216,6 @@ const Panel: FC<NodePanelProps<LLMNodeType>> = ({ ...@@ -216,7 +216,6 @@ const Panel: FC<NodePanelProps<LLMNodeType>> = ({
onStop={handleStop} onStop={handleStop}
/> />
)} )}
</div> </div>
) )
} }
......
...@@ -95,7 +95,8 @@ const useConfig = (id: string, payload: LLMNodeType) => { ...@@ -95,7 +95,8 @@ const useConfig = (id: string, payload: LLMNodeType) => {
hideSingleRun, hideSingleRun,
toVarInputs, toVarInputs,
runningStatus, runningStatus,
setRunningStatus, handleRun,
handleStop,
runInputData, runInputData,
setRunInputData, setRunInputData,
} = useOneStepRun<LLMNodeType>({ } = useOneStepRun<LLMNodeType>({
...@@ -145,13 +146,6 @@ const useConfig = (id: string, payload: LLMNodeType) => { ...@@ -145,13 +146,6 @@ const useConfig = (id: string, payload: LLMNodeType) => {
}, [runInputData, setRunInputData]) }, [runInputData, setRunInputData])
const varInputs = toVarInputs(inputs.variables) const varInputs = toVarInputs(inputs.variables)
const handleRun = () => {
setRunningStatus('running')
}
const handleStop = () => {
setRunningStatus('not started')
}
return { return {
inputs, inputs,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment