| | |
| | | import Editor from '../_base/components/prompt/editor' |
| | | import ResultPanel from '../../run/result-panel' |
| | | import ConfigVision from '../_base/components/config-vision' |
| | | import { findVariableWhenOnLLMVision } from '../utils' |
| | | import useConfig from './use-config' |
| | | import type { ParameterExtractorNodeType } from './types' |
| | | import ExtractParameter from './components/extract-parameter/list' |
| | |
| | | import BeforeRunForm from '@/app/components/workflow/nodes/_base/components/before-run-form' |
| | | import { VarType } from '@/app/components/workflow/types' |
| | | 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.parameterExtractor' |
| | | const i18nCommonPrefix = 'workflow.common' |
| | |
| | | handleReasoningModeChange, |
| | | availableVars, |
| | | availableNodesWithParent, |
| | | availableVisionVars, |
| | | inputVarValues, |
| | | varInputs, |
| | | isVisionModel, |
| | |
| | | handleStop, |
| | | runResult, |
| | | setInputVarValues, |
| | | 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}.inputVar`)!, |
| | | 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 as any)['#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(`${i18nCommonPrefix}.model`)} |
| | | required |
| | | > |
| | | <ModelParameterModal |
| | | popupClassName='!w-[387px]' |
| | |
| | | </Field> |
| | | <Field |
| | | title={t(`${i18nPrefix}.inputVar`)} |
| | | required |
| | | > |
| | | <> |
| | | <VarReferencePicker |
| | |
| | | /> |
| | | <Field |
| | | title={t(`${i18nPrefix}.extractParameters`)} |
| | | required |
| | | operations={ |
| | | !readOnly |
| | | ? ( |
| | |
| | | {!readOnly && ( |
| | | <ImportFromTool onImport={handleImportFromTool} /> |
| | | )} |
| | | {!readOnly && (<div className='h-3 w-px bg-divider-regular'></div>)} |
| | | {!readOnly && (<div className='w-px h-3 bg-gray-200'></div>)} |
| | | <AddExtractParameter type='add' onSave={addExtractParameter} /> |
| | | </div> |
| | | ) |
| | |
| | | <BeforeRunForm |
| | | nodeName={inputs.title} |
| | | onHide={hideSingleRun} |
| | | forms={singleRunForms} |
| | | forms={[ |
| | | { |
| | | inputs: [{ |
| | | label: t(`${i18nPrefix}.inputVar`)!, |
| | | variable: 'query', |
| | | type: InputVarType.paragraph, |
| | | required: true, |
| | | }, ...varInputs], |
| | | values: inputVarValues, |
| | | onChange: setInputVarValues, |
| | | }, |
| | | ]} |
| | | runningStatus={runningStatus} |
| | | onRun={handleRun} |
| | | onStop={handleStop} |