diff --git a/web/app/components/workflow/nodes/_base/components/editor/base.tsx b/web/app/components/workflow/nodes/_base/components/editor/base.tsx index 3835f6b26d..09f004c44c 100644 --- a/web/app/components/workflow/nodes/_base/components/editor/base.tsx +++ b/web/app/components/workflow/nodes/_base/components/editor/base.tsx @@ -8,7 +8,7 @@ import { Clipboard, ClipboardCheck } from '@/app/components/base/icons/src/vende import { Expand04 } from '@/app/components/base/icons/src/vender/solid/arrows' type Props = { className?: string - title: JSX.Element + title: JSX.Element | string headerRight?: JSX.Element children: JSX.Element minHeight?: number diff --git a/web/app/components/workflow/nodes/_base/components/editor/text-editor.tsx b/web/app/components/workflow/nodes/_base/components/editor/text-editor.tsx index 85e2bb5d42..26eefedfb3 100644 --- a/web/app/components/workflow/nodes/_base/components/editor/text-editor.tsx +++ b/web/app/components/workflow/nodes/_base/components/editor/text-editor.tsx @@ -7,7 +7,7 @@ import Base from './base' type Props = { value: string onChange: (value: string) => void - title: JSX.Element + title: JSX.Element | string headerRight?: JSX.Element minHeight?: number onBlur?: () => void diff --git a/web/app/components/workflow/nodes/question-classifier/components/advanced-setting.tsx b/web/app/components/workflow/nodes/question-classifier/components/advanced-setting.tsx new file mode 100644 index 0000000000..24b7df6746 --- /dev/null +++ b/web/app/components/workflow/nodes/question-classifier/components/advanced-setting.tsx @@ -0,0 +1,41 @@ +'use client' +import type { FC } from 'react' +import React from 'react' +import { useTranslation } from 'react-i18next' +import TextEditor from '../../_base/components/editor/text-editor' +import type { Memory } from '@/app/components/workflow/types' + +const i18nPrefix = 'workflow.nodes.questionClassifiers' + +type Props = { + instruction: string + onInstructionChange: (instruction: string) => void + memory: Memory +} + +const AdvancedSetting: FC = ({ + instruction, + onInstructionChange, + memory, +}) => { + const { t } = useTranslation() + + return ( +
+ +
{instruction.length}
+
+
+ )} + /> + + ) +} +export default React.memo(AdvancedSetting) diff --git a/web/app/components/workflow/nodes/question-classifier/components/class-list.tsx b/web/app/components/workflow/nodes/question-classifier/components/class-list.tsx index 319da67aba..110accfd0d 100644 --- a/web/app/components/workflow/nodes/question-classifier/components/class-list.tsx +++ b/web/app/components/workflow/nodes/question-classifier/components/class-list.tsx @@ -34,7 +34,7 @@ const ClassList: FC = ({ draft.push({ id: '', name: t(`${i18nPrefix}.class`) + (list.length + 1), topic: '' }) }) onChange(newList) - }, [list, onChange]) + }, [list, onChange, t]) const handleRemoveClass = useCallback((index: number) => { return () => { diff --git a/web/app/components/workflow/nodes/question-classifier/panel.tsx b/web/app/components/workflow/nodes/question-classifier/panel.tsx index bd20cf2dde..d33b506479 100644 --- a/web/app/components/workflow/nodes/question-classifier/panel.tsx +++ b/web/app/components/workflow/nodes/question-classifier/panel.tsx @@ -4,9 +4,9 @@ import VarReferencePicker from '../_base/components/variable/var-reference-picke import useConfig from './use-config' import { mockData } from './mock' import ClassList from './components/class-list' +import AdvancedSetting from './components/advanced-setting' import Field from '@/app/components/workflow/nodes/_base/components/field' import ModelParameterModal from '@/app/components/header/account-setting/model-provider-page/model-parameter-modal' - const i18nPrefix = 'workflow.nodes.questionClassifiers' const Panel: FC = () => { @@ -19,6 +19,7 @@ const Panel: FC = () => { handleCompletionParamsChange, handleQueryVarChange, handleTopicsChange, + handleInstructionChange, } = useConfig(mockData) const model = inputs.model @@ -60,7 +61,11 @@ const Panel: FC = () => { - advancedSetting + ) diff --git a/web/app/components/workflow/nodes/question-classifier/use-config.ts b/web/app/components/workflow/nodes/question-classifier/use-config.ts index 567fa08fc5..293c676c9a 100644 --- a/web/app/components/workflow/nodes/question-classifier/use-config.ts +++ b/web/app/components/workflow/nodes/question-classifier/use-config.ts @@ -37,12 +37,20 @@ const useConfig = (initInputs: QuestionClassifierNodeType) => { setInputs(newInputs) }, [inputs, setInputs]) + const handleInstructionChange = useCallback((instruction: string) => { + const newInputs = produce(inputs, (draft) => { + draft.instruction = instruction + }) + setInputs(newInputs) + }, [inputs, setInputs]) + return { inputs, handleModelChanged, handleCompletionParamsChange, handleQueryVarChange, handleTopicsChange, + handleInstructionChange, } } diff --git a/web/i18n/en-US/workflow.ts b/web/i18n/en-US/workflow.ts index ab68d01d21..5c561b6964 100644 --- a/web/i18n/en-US/workflow.ts +++ b/web/i18n/en-US/workflow.ts @@ -133,6 +133,8 @@ const translation = { advancedSetting: 'Advanced Setting', topicPlaceholder: 'Write your topic name', addClass: 'Add Class', + instruction: 'Instruction', + instructionPlaceholder: 'Write your instruction', }, }, } diff --git a/web/i18n/zh-Hans/workflow.ts b/web/i18n/zh-Hans/workflow.ts index 37c92fd95d..fea6d9e6df 100644 --- a/web/i18n/zh-Hans/workflow.ts +++ b/web/i18n/zh-Hans/workflow.ts @@ -132,6 +132,8 @@ const translation = { advancedSetting: '高级设置', topicPlaceholder: '在这里输入你的主题内容', addClass: '添加分类', + instruction: '指令', + instructionPlaceholder: '在这里输入你的指令', }, }, }