Commit 425e162a authored by Joel's avatar Joel

feat: knowledge support single run

parent 55b5d76e
......@@ -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,
......
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