From 7b9fbccf608a15dc59cc33a0d998d2fc90cac1bc Mon Sep 17 00:00:00 2001 From: Joel Date: Mon, 18 Mar 2024 21:59:38 +0800 Subject: [PATCH] feat: support add files and vision --- .../components/workflow/nodes/llm/default.ts | 2 +- .../components/workflow/nodes/llm/panel.tsx | 12 ++++---- .../workflow/nodes/llm/use-config.ts | 28 +++++++++++++++---- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/web/app/components/workflow/nodes/llm/default.ts b/web/app/components/workflow/nodes/llm/default.ts index ef045e261c..352b040e03 100644 --- a/web/app/components/workflow/nodes/llm/default.ts +++ b/web/app/components/workflow/nodes/llm/default.ts @@ -26,7 +26,7 @@ const nodeDefault: NodeDefault = { text: '', }], context: { - enabled: true, + enabled: false, variable_selector: [], }, vision: { diff --git a/web/app/components/workflow/nodes/llm/panel.tsx b/web/app/components/workflow/nodes/llm/panel.tsx index 015db68bf6..0b1fa46c19 100644 --- a/web/app/components/workflow/nodes/llm/panel.tsx +++ b/web/app/components/workflow/nodes/llm/panel.tsx @@ -81,12 +81,12 @@ const Panel: FC> = ({ label: t(`${i18nPrefix}.context`)!, inputs: [{ label: '', - variable: 'contexts', + variable: '#context#', type: InputVarType.contexts, required: false, }], - values: { contexts }, - onChange: keyValue => setContexts((keyValue as any).contexts), + values: { '#context#': contexts }, + onChange: keyValue => setContexts((keyValue as any)['#context#']), }, ) } @@ -97,12 +97,12 @@ const Panel: FC> = ({ label: t(`${i18nPrefix}.vision`)!, inputs: [{ label: t(`${i18nPrefix}.files`)!, - variable: 'visionFiles', + variable: '#files#', type: InputVarType.files, required: false, }], - values: { visionFiles }, - onChange: keyValue => setVisionFiles((keyValue as any).visionFiles), + values: { '#files#': visionFiles }, + onChange: keyValue => setVisionFiles((keyValue as any)['#files#']), }, ) } diff --git a/web/app/components/workflow/nodes/llm/use-config.ts b/web/app/components/workflow/nodes/llm/use-config.ts index 8600f97d78..b6a9df9adf 100644 --- a/web/app/components/workflow/nodes/llm/use-config.ts +++ b/web/app/components/workflow/nodes/llm/use-config.ts @@ -148,6 +148,7 @@ const useConfig = (id: string, payload: LLMNodeType) => { const handleContextVarChange = useCallback((newVar: ValueSelector | string) => { const newInputs = produce(inputs, (draft) => { draft.context.variable_selector = newVar as ValueSelector + draft.context.enabled = !!(newVar && newVar.length > 0) }) setInputs(newInputs) }, [inputs, setInputs]) @@ -198,14 +199,31 @@ const useConfig = (id: string, payload: LLMNodeType) => { data: inputs, defaultRunInputData: { '#context#': [RETRIEVAL_OUTPUT_STRUCT], - '#vision#': [], + '#files#': [], }, }) + // const handleRun = (submitData: Record) => { + // console.log(submitData) + // const res = produce(submitData, (draft) => { + // debugger + // if (draft.contexts) { + // draft['#context#'] = draft.contexts + // delete draft.contexts + // } + // if (draft.visionFiles) { + // draft['#files#'] = draft.visionFiles + // delete draft.visionFiles + // } + // }) + + // doHandleRun(res) + // } + const inputVarValues = (() => { const vars: Record = {} Object.keys(runInputData) - .filter(key => !['#context#', '#vision#'].includes(key)) + .filter(key => !['#context#', '#files#'].includes(key)) .forEach((key) => { vars[key] = runInputData[key] }) @@ -216,7 +234,7 @@ const useConfig = (id: string, payload: LLMNodeType) => { const newVars = { ...newPayload, '#context#': runInputData['#context#'], - '#vision#': runInputData['#vision#'], + '#files#': runInputData['#files#'], } setRunInputData(newVars) }, [runInputData, setRunInputData]) @@ -229,11 +247,11 @@ const useConfig = (id: string, payload: LLMNodeType) => { }) }, [runInputData, setRunInputData]) - const visionFiles = runInputData['#vision'] + const visionFiles = runInputData['#files#'] const setVisionFiles = useCallback((newFiles: any[]) => { setRunInputData({ ...runInputData, - '#vision#': newFiles, + '#files#': newFiles, }) }, [runInputData, setRunInputData])