diff --git a/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts b/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts index a5114a6762..1de22548aa 100644 --- a/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts +++ b/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts @@ -2,14 +2,14 @@ import { useState } from 'react' import { useWorkflow } from '@/app/components/workflow/hooks' import type { CommonNodeType, InputVar, Variable } from '@/app/components/workflow/types' import { InputVarType } from '@/app/components/workflow/types' -import { RETRIEVAL_OUTPUT_STRUCT } from '@/app/components/workflow/constants' type Params = { id: string data: CommonNodeType + defaultRunInputData: Record } -const useOneStepRun = ({ id, data }: Params) => { +const useOneStepRun = ({ id, data, defaultRunInputData }: Params) => { const { handleNodeDataUpdate } = useWorkflow() const isShowSingleRun = data._isSingleRun const hideSingleRun = () => { @@ -24,15 +24,8 @@ const useOneStepRun = ({ id, data }: Params) => { const [runningStatus, setRunningStatus] = useState('un started') - // TODO: test - const [inputVarValues, setInputVarValues] = useState>({ - name: 'Joel', - age: '18', - }) - - const [visionFiles, setVisionFiles] = useState([]) - - const [contexts, setContexts] = useState([RETRIEVAL_OUTPUT_STRUCT]) + // TODO: store to node + const [runInputData, setRunInputData] = useState>(defaultRunInputData || {}) const toVarInputs = (variables: Variable[]): InputVar[] => { if (!variables) @@ -58,12 +51,8 @@ const useOneStepRun = ({ id, data }: Params) => { toVarInputs, runningStatus, setRunningStatus, - inputVarValues, - setInputVarValues, - visionFiles, - setVisionFiles, - contexts, - setContexts, + runInputData, + setRunInputData, } } diff --git a/web/app/components/workflow/nodes/llm/use-config.ts b/web/app/components/workflow/nodes/llm/use-config.ts index 558d306a75..78dc309e89 100644 --- a/web/app/components/workflow/nodes/llm/use-config.ts +++ b/web/app/components/workflow/nodes/llm/use-config.ts @@ -9,6 +9,7 @@ import { ModelFeatureEnum } from '@/app/components/header/account-setting/model- 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' import type { PromptItem } from '@/models/debug' +import { RETRIEVAL_OUTPUT_STRUCT } from '@/app/components/workflow/constants' const useConfig = (id: string, payload: LLMNodeType) => { const { inputs, setInputs } = useNodeCrud(id, payload) @@ -95,18 +96,53 @@ const useConfig = (id: string, payload: LLMNodeType) => { toVarInputs, runningStatus, setRunningStatus, - inputVarValues, - setInputVarValues, - visionFiles, - setVisionFiles, - contexts, - setContexts, + runInputData, + setRunInputData, } = useOneStepRun({ id, data: inputs, + defaultRunInputData: { + 'name': 'Joel', + 'age': '18', + '#context#': [RETRIEVAL_OUTPUT_STRUCT], + '#vision#': [], + }, }) - console.log(contexts) + const inputVarValues = (() => { + const vars: Record = {} + Object.keys(runInputData) + .filter(key => !['#context#', '#vision#'].includes(key)) + .forEach((key) => { + vars[key] = runInputData[key] + }) + return vars + })() + + const setInputVarValues = useCallback((newPayload: Record) => { + const newVars = { + ...newPayload, + '#context#': runInputData['#context#'], + '#vision#': runInputData['#vision#'], + } + setRunInputData(newVars) + }, [runInputData, setRunInputData]) + + const contexts = runInputData['#context#'] + const setContexts = useCallback((newContexts: string[]) => { + setRunInputData({ + ...runInputData, + '#context#': newContexts, + }) + }, [runInputData, setRunInputData]) + + const visionFiles = runInputData['#vision'] + const setVisionFiles = useCallback((newFiles: any[]) => { + setRunInputData({ + ...runInputData, + '#vision#': newFiles, + }) + }, [runInputData, setRunInputData]) const varInputs = toVarInputs(inputs.variables) const handleRun = () => {