| | |
| | | import { useTranslation } from 'react-i18next' |
| | | import VarReferencePicker from '../_base/components/variable/var-reference-picker' |
| | | import ConfigVision from '../_base/components/config-vision' |
| | | import { findVariableWhenOnLLMVision } from '../utils' |
| | | import useConfig from './use-config' |
| | | import ClassList from './components/class-list' |
| | | import AdvancedSetting from './components/advanced-setting' |
| | |
| | | import Split from '@/app/components/workflow/nodes/_base/components/split' |
| | | import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' |
| | | import { FieldCollapse } from '@/app/components/workflow/nodes/_base/components/collapse' |
| | | import type { Props as FormProps } from '@/app/components/workflow/nodes/_base/components/before-run-form/form' |
| | | |
| | | const i18nPrefix = 'workflow.nodes.questionClassifiers' |
| | | |
| | |
| | | hasSetBlockStatus, |
| | | availableVars, |
| | | availableNodesWithParent, |
| | | availableVisionVars, |
| | | handleInstructionChange, |
| | | inputVarValues, |
| | | varInputs, |
| | |
| | | handleStop, |
| | | runResult, |
| | | filterVar, |
| | | visionFiles, |
| | | setVisionFiles, |
| | | } = useConfig(id, data) |
| | | |
| | | const model = inputs.model |
| | | |
| | | const singleRunForms = (() => { |
| | | const forms: FormProps[] = [] |
| | | |
| | | forms.push( |
| | | { |
| | | label: t('workflow.nodes.llm.singleRun.variable')!, |
| | | inputs: [{ |
| | | label: t(`${i18nPrefix}.inputVars`)!, |
| | | variable: 'query', |
| | | type: InputVarType.paragraph, |
| | | required: true, |
| | | }, ...varInputs], |
| | | values: inputVarValues, |
| | | onChange: setInputVarValues, |
| | | }, |
| | | ) |
| | | |
| | | if (isVisionModel && data.vision?.enabled && data.vision?.configs?.variable_selector) { |
| | | const currentVariable = findVariableWhenOnLLMVision(data.vision.configs.variable_selector, availableVisionVars) |
| | | |
| | | forms.push( |
| | | { |
| | | label: t('workflow.nodes.llm.vision')!, |
| | | inputs: [{ |
| | | label: currentVariable?.variable as any, |
| | | variable: '#files#', |
| | | type: currentVariable?.formType as any, |
| | | required: false, |
| | | }], |
| | | values: { '#files#': visionFiles }, |
| | | onChange: keyValue => setVisionFiles(keyValue['#files#']), |
| | | }, |
| | | ) |
| | | } |
| | | |
| | | return forms |
| | | })() |
| | | |
| | | return ( |
| | | <div className='pt-2'> |
| | | <div className='space-y-4 px-4'> |
| | | <div className='px-4 space-y-4'> |
| | | <Field |
| | | title={t(`${i18nPrefix}.model`)} |
| | | required |
| | | > |
| | | <ModelParameterModal |
| | | popupClassName='!w-[387px]' |
| | |
| | | </Field> |
| | | <Field |
| | | title={t(`${i18nPrefix}.inputVars`)} |
| | | required |
| | | > |
| | | <VarReferencePicker |
| | | readonly={readOnly} |
| | |
| | | /> |
| | | <Field |
| | | title={t(`${i18nPrefix}.class`)} |
| | | required |
| | | > |
| | | <ClassList |
| | | nodeId={id} |
| | | id={id} |
| | | list={inputs.classes} |
| | | onChange={handleTopicsChange} |
| | | readonly={readOnly} |
| | | filterVar={filterVar} |
| | | /> |
| | | </Field> |
| | | <Split /> |
| | |
| | | <BeforeRunForm |
| | | nodeName={inputs.title} |
| | | onHide={hideSingleRun} |
| | | forms={singleRunForms} |
| | | forms={[ |
| | | { |
| | | inputs: [{ |
| | | label: t(`${i18nPrefix}.inputVars`)!, |
| | | variable: 'query', |
| | | type: InputVarType.paragraph, |
| | | required: true, |
| | | }, ...varInputs], |
| | | values: inputVarValues, |
| | | onChange: setInputVarValues, |
| | | }, |
| | | ]} |
| | | runningStatus={runningStatus} |
| | | onRun={handleRun} |
| | | onStop={handleStop} |