mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 21:13:50 +00:00
perf: change value desc position & fix templates (#2413)
This commit is contained in:
@@ -126,61 +126,70 @@ export enum FlowNodeTypeEnum {
|
|||||||
export const FlowValueTypeMap = {
|
export const FlowValueTypeMap = {
|
||||||
[WorkflowIOValueTypeEnum.string]: {
|
[WorkflowIOValueTypeEnum.string]: {
|
||||||
label: 'string',
|
label: 'string',
|
||||||
value: WorkflowIOValueTypeEnum.string,
|
value: WorkflowIOValueTypeEnum.string
|
||||||
description: ''
|
|
||||||
},
|
},
|
||||||
[WorkflowIOValueTypeEnum.number]: {
|
[WorkflowIOValueTypeEnum.number]: {
|
||||||
label: 'number',
|
label: 'number',
|
||||||
value: WorkflowIOValueTypeEnum.number,
|
value: WorkflowIOValueTypeEnum.number
|
||||||
description: ''
|
|
||||||
},
|
},
|
||||||
[WorkflowIOValueTypeEnum.boolean]: {
|
[WorkflowIOValueTypeEnum.boolean]: {
|
||||||
label: 'boolean',
|
label: 'boolean',
|
||||||
value: WorkflowIOValueTypeEnum.boolean,
|
value: WorkflowIOValueTypeEnum.boolean
|
||||||
description: ''
|
|
||||||
},
|
},
|
||||||
[WorkflowIOValueTypeEnum.object]: {
|
[WorkflowIOValueTypeEnum.object]: {
|
||||||
label: 'object',
|
label: 'object',
|
||||||
value: WorkflowIOValueTypeEnum.object,
|
value: WorkflowIOValueTypeEnum.object
|
||||||
description: ''
|
|
||||||
},
|
},
|
||||||
[WorkflowIOValueTypeEnum.arrayString]: {
|
[WorkflowIOValueTypeEnum.arrayString]: {
|
||||||
label: 'array<string>',
|
label: 'array<string>',
|
||||||
value: WorkflowIOValueTypeEnum.arrayString,
|
value: WorkflowIOValueTypeEnum.arrayString
|
||||||
description: ''
|
|
||||||
},
|
},
|
||||||
[WorkflowIOValueTypeEnum.arrayNumber]: {
|
[WorkflowIOValueTypeEnum.arrayNumber]: {
|
||||||
label: 'array<number>',
|
label: 'array<number>',
|
||||||
value: WorkflowIOValueTypeEnum.arrayNumber,
|
value: WorkflowIOValueTypeEnum.arrayNumber
|
||||||
description: ''
|
|
||||||
},
|
},
|
||||||
[WorkflowIOValueTypeEnum.arrayBoolean]: {
|
[WorkflowIOValueTypeEnum.arrayBoolean]: {
|
||||||
label: 'array<boolean>',
|
label: 'array<boolean>',
|
||||||
value: WorkflowIOValueTypeEnum.arrayBoolean,
|
value: WorkflowIOValueTypeEnum.arrayBoolean
|
||||||
description: ''
|
|
||||||
},
|
},
|
||||||
[WorkflowIOValueTypeEnum.arrayObject]: {
|
[WorkflowIOValueTypeEnum.arrayObject]: {
|
||||||
label: 'array<object>',
|
label: 'array<object>',
|
||||||
value: WorkflowIOValueTypeEnum.arrayObject,
|
value: WorkflowIOValueTypeEnum.arrayObject
|
||||||
description: ''
|
|
||||||
},
|
},
|
||||||
[WorkflowIOValueTypeEnum.any]: {
|
[WorkflowIOValueTypeEnum.any]: {
|
||||||
label: 'any',
|
label: 'any',
|
||||||
value: WorkflowIOValueTypeEnum.any,
|
value: WorkflowIOValueTypeEnum.any
|
||||||
description: ''
|
|
||||||
},
|
},
|
||||||
[WorkflowIOValueTypeEnum.chatHistory]: {
|
[WorkflowIOValueTypeEnum.chatHistory]: {
|
||||||
label: '历史记录',
|
label: '历史记录',
|
||||||
value: WorkflowIOValueTypeEnum.chatHistory,
|
value: WorkflowIOValueTypeEnum.chatHistory
|
||||||
description: `{
|
|
||||||
obj: System | Human | AI;
|
|
||||||
value: string;
|
|
||||||
}[]`
|
|
||||||
},
|
},
|
||||||
[WorkflowIOValueTypeEnum.datasetQuote]: {
|
[WorkflowIOValueTypeEnum.datasetQuote]: {
|
||||||
label: '知识库引用',
|
label: '知识库引用',
|
||||||
value: WorkflowIOValueTypeEnum.datasetQuote,
|
value: WorkflowIOValueTypeEnum.datasetQuote
|
||||||
description: `{
|
},
|
||||||
|
[WorkflowIOValueTypeEnum.selectApp]: {
|
||||||
|
label: '选择应用',
|
||||||
|
value: WorkflowIOValueTypeEnum.selectApp
|
||||||
|
},
|
||||||
|
[WorkflowIOValueTypeEnum.selectDataset]: {
|
||||||
|
label: '选择知识库',
|
||||||
|
value: WorkflowIOValueTypeEnum.selectDataset
|
||||||
|
},
|
||||||
|
[WorkflowIOValueTypeEnum.dynamic]: {
|
||||||
|
label: '动态输入',
|
||||||
|
value: WorkflowIOValueTypeEnum.dynamic
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const EDGE_TYPE = 'default';
|
||||||
|
export const defaultNodeVersion = '481';
|
||||||
|
|
||||||
|
export const chatHistoryValueDesc = `{
|
||||||
|
obj: System | Human | AI;
|
||||||
|
value: string;
|
||||||
|
}[]`;
|
||||||
|
export const datasetQuoteValueDesc = `{
|
||||||
id: string;
|
id: string;
|
||||||
datasetId: string;
|
datasetId: string;
|
||||||
collectionId: string;
|
collectionId: string;
|
||||||
@@ -188,26 +197,4 @@ export const FlowValueTypeMap = {
|
|||||||
sourceId?: string;
|
sourceId?: string;
|
||||||
q: string;
|
q: string;
|
||||||
a: string
|
a: string
|
||||||
}[]`
|
}[]`;
|
||||||
},
|
|
||||||
[WorkflowIOValueTypeEnum.selectApp]: {
|
|
||||||
label: '选择应用',
|
|
||||||
value: WorkflowIOValueTypeEnum.selectApp,
|
|
||||||
description: ''
|
|
||||||
},
|
|
||||||
[WorkflowIOValueTypeEnum.selectDataset]: {
|
|
||||||
label: '选择知识库',
|
|
||||||
value: WorkflowIOValueTypeEnum.selectDataset,
|
|
||||||
description: `{
|
|
||||||
datasetId: string;
|
|
||||||
}`
|
|
||||||
},
|
|
||||||
[WorkflowIOValueTypeEnum.dynamic]: {
|
|
||||||
label: '动态输入',
|
|
||||||
value: WorkflowIOValueTypeEnum.dynamic,
|
|
||||||
description: ''
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const EDGE_TYPE = 'default';
|
|
||||||
export const defaultNodeVersion = '481';
|
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
|
chatHistoryValueDesc,
|
||||||
FlowNodeInputTypeEnum,
|
FlowNodeInputTypeEnum,
|
||||||
FlowNodeOutputTypeEnum,
|
FlowNodeOutputTypeEnum,
|
||||||
FlowNodeTypeEnum
|
FlowNodeTypeEnum
|
||||||
@@ -97,6 +98,7 @@ export const AiChatModule: FlowNodeTemplateType = {
|
|||||||
label: 'core.module.output.label.New context',
|
label: 'core.module.output.label.New context',
|
||||||
description: 'core.module.output.description.New context',
|
description: 'core.module.output.description.New context',
|
||||||
valueType: WorkflowIOValueTypeEnum.chatHistory,
|
valueType: WorkflowIOValueTypeEnum.chatHistory,
|
||||||
|
valueDesc: chatHistoryValueDesc,
|
||||||
type: FlowNodeOutputTypeEnum.static
|
type: FlowNodeOutputTypeEnum.static
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
|
datasetQuoteValueDesc,
|
||||||
FlowNodeInputTypeEnum,
|
FlowNodeInputTypeEnum,
|
||||||
FlowNodeOutputTypeEnum,
|
FlowNodeOutputTypeEnum,
|
||||||
FlowNodeTypeEnum
|
FlowNodeTypeEnum
|
||||||
@@ -14,8 +15,6 @@ import { getNanoid } from '../../../../common/string/tools';
|
|||||||
import { getHandleConfig } from '../utils';
|
import { getHandleConfig } from '../utils';
|
||||||
import { FlowNodeInputItemType } from '../../type/io.d';
|
import { FlowNodeInputItemType } from '../../type/io.d';
|
||||||
|
|
||||||
const defaultQuoteKey = 'defaultQuoteKey';
|
|
||||||
|
|
||||||
export const getOneQuoteInputTemplate = ({
|
export const getOneQuoteInputTemplate = ({
|
||||||
key = getNanoid(),
|
key = getNanoid(),
|
||||||
index
|
index
|
||||||
@@ -63,7 +62,8 @@ export const DatasetConcatModule: FlowNodeTemplateType = {
|
|||||||
key: NodeOutputKeyEnum.datasetQuoteQA,
|
key: NodeOutputKeyEnum.datasetQuoteQA,
|
||||||
label: 'core.module.Dataset quote.label',
|
label: 'core.module.Dataset quote.label',
|
||||||
type: FlowNodeOutputTypeEnum.static,
|
type: FlowNodeOutputTypeEnum.static,
|
||||||
valueType: WorkflowIOValueTypeEnum.datasetQuote
|
valueType: WorkflowIOValueTypeEnum.datasetQuote,
|
||||||
|
valueDesc: datasetQuoteValueDesc
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
|
datasetQuoteValueDesc,
|
||||||
FlowNodeInputTypeEnum,
|
FlowNodeInputTypeEnum,
|
||||||
FlowNodeOutputTypeEnum,
|
FlowNodeOutputTypeEnum,
|
||||||
FlowNodeTypeEnum
|
FlowNodeTypeEnum
|
||||||
@@ -118,7 +119,8 @@ export const DatasetSearchModule: FlowNodeTemplateType = {
|
|||||||
label: 'core.module.Dataset quote.label',
|
label: 'core.module.Dataset quote.label',
|
||||||
description: '特殊数组格式,搜索结果为空时,返回空数组。',
|
description: '特殊数组格式,搜索结果为空时,返回空数组。',
|
||||||
type: FlowNodeOutputTypeEnum.static,
|
type: FlowNodeOutputTypeEnum.static,
|
||||||
valueType: WorkflowIOValueTypeEnum.datasetQuote
|
valueType: WorkflowIOValueTypeEnum.datasetQuote,
|
||||||
|
valueDesc: datasetQuoteValueDesc
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
|
chatHistoryValueDesc,
|
||||||
FlowNodeInputTypeEnum,
|
FlowNodeInputTypeEnum,
|
||||||
FlowNodeOutputTypeEnum,
|
FlowNodeOutputTypeEnum,
|
||||||
FlowNodeTypeEnum
|
FlowNodeTypeEnum
|
||||||
@@ -47,6 +48,7 @@ export const RunAppModule: FlowNodeTemplateType = {
|
|||||||
label: '新的上下文',
|
label: '新的上下文',
|
||||||
description: '将该应用回复内容拼接到历史记录中,作为新的上下文返回',
|
description: '将该应用回复内容拼接到历史记录中,作为新的上下文返回',
|
||||||
valueType: WorkflowIOValueTypeEnum.chatHistory,
|
valueType: WorkflowIOValueTypeEnum.chatHistory,
|
||||||
|
valueDesc: chatHistoryValueDesc,
|
||||||
required: true,
|
required: true,
|
||||||
type: FlowNodeOutputTypeEnum.static
|
type: FlowNodeOutputTypeEnum.static
|
||||||
},
|
},
|
||||||
|
2
packages/global/core/workflow/type/io.d.ts
vendored
2
packages/global/core/workflow/type/io.d.ts
vendored
@@ -43,6 +43,7 @@ export type FlowNodeInputItemType = InputComponentPropsType & {
|
|||||||
|
|
||||||
key: `${NodeInputKeyEnum}` | string;
|
key: `${NodeInputKeyEnum}` | string;
|
||||||
valueType?: WorkflowIOValueTypeEnum; // data type
|
valueType?: WorkflowIOValueTypeEnum; // data type
|
||||||
|
valueDesc?: string; // data desc
|
||||||
value?: any;
|
value?: any;
|
||||||
label: string;
|
label: string;
|
||||||
debugLabel?: string;
|
debugLabel?: string;
|
||||||
@@ -60,6 +61,7 @@ export type FlowNodeOutputItemType = {
|
|||||||
type: FlowNodeOutputTypeEnum;
|
type: FlowNodeOutputTypeEnum;
|
||||||
key: `${NodeOutputKeyEnum}` | string;
|
key: `${NodeOutputKeyEnum}` | string;
|
||||||
valueType?: WorkflowIOValueTypeEnum;
|
valueType?: WorkflowIOValueTypeEnum;
|
||||||
|
valueDesc?: string;
|
||||||
value?: any;
|
value?: any;
|
||||||
|
|
||||||
label?: string;
|
label?: string;
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
"name": "系统配置",
|
"name": "系统配置",
|
||||||
"intro": "可以配置应用的系统参数",
|
"intro": "可以配置应用的系统参数",
|
||||||
"avatar": "core/workflow/template/systemConfig",
|
"avatar": "core/workflow/template/systemConfig",
|
||||||
"flowNodeType": "FlowNodeTypeEnum.systemConfig",
|
"flowNodeType": "userGuide",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 531.2422736065552,
|
"x": 531.2422736065552,
|
||||||
"y": -486.7611729549753
|
"y": -486.7611729549753
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
"name": "流程开始",
|
"name": "流程开始",
|
||||||
"intro": "",
|
"intro": "",
|
||||||
"avatar": "core/workflow/template/workflowStart",
|
"avatar": "core/workflow/template/workflowStart",
|
||||||
"flowNodeType": "FlowNodeTypeEnum.workflowStart",
|
"flowNodeType": "workflowStart",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 558.4082376415505,
|
"x": 558.4082376415505,
|
||||||
"y": 123.72387429194112
|
"y": 123.72387429194112
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
"name": "AI 对话",
|
"name": "AI 对话",
|
||||||
"intro": "AI 大模型对话",
|
"intro": "AI 大模型对话",
|
||||||
"avatar": "core/workflow/template/aiChat",
|
"avatar": "core/workflow/template/aiChat",
|
||||||
"flowNodeType": "FlowNodeTypeEnum.chatNode",
|
"flowNodeType": "chatNode",
|
||||||
"showStatus": true,
|
"showStatus": true,
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2701.1267277679685,
|
"x": 2701.1267277679685,
|
||||||
@@ -229,7 +229,7 @@
|
|||||||
"name": "问题分类",
|
"name": "问题分类",
|
||||||
"intro": "根据用户的历史记录和当前问题判断该次提问的类型。可以添加多组问题类型,下面是一个模板例子:\n类型1: 打招呼\n类型2: 关于商品\"使用\"问题\n类型3: 关于商品\"购买\"问题\n类型4: 其他问题",
|
"intro": "根据用户的历史记录和当前问题判断该次提问的类型。可以添加多组问题类型,下面是一个模板例子:\n类型1: 打招呼\n类型2: 关于商品\"使用\"问题\n类型3: 关于商品\"购买\"问题\n类型4: 其他问题",
|
||||||
"avatar": "core/workflow/template/questionClassify",
|
"avatar": "core/workflow/template/questionClassify",
|
||||||
"flowNodeType": "FlowNodeTypeEnum.classifyQuestion",
|
"flowNodeType": "classifyQuestion",
|
||||||
"showStatus": true,
|
"showStatus": true,
|
||||||
"position": {
|
"position": {
|
||||||
"x": 1020.9667229609946,
|
"x": 1020.9667229609946,
|
||||||
@@ -316,7 +316,7 @@
|
|||||||
"name": "指定回复",
|
"name": "指定回复",
|
||||||
"intro": "该模块可以直接回复一段指定的内容。常用于引导、提示。非字符串内容传入时,会转成字符串进行输出。",
|
"intro": "该模块可以直接回复一段指定的内容。常用于引导、提示。非字符串内容传入时,会转成字符串进行输出。",
|
||||||
"avatar": "core/workflow/template/reply",
|
"avatar": "core/workflow/template/reply",
|
||||||
"flowNodeType": "FlowNodeTypeEnum.answerNode",
|
"flowNodeType": "answerNode",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 1874.9167551056487,
|
"x": 1874.9167551056487,
|
||||||
"y": 434.98431875888207
|
"y": 434.98431875888207
|
||||||
@@ -341,7 +341,7 @@
|
|||||||
"name": "知识库搜索",
|
"name": "知识库搜索",
|
||||||
"intro": "调用\"语义检索\"和\"全文检索\"能力,从\"知识库\"中查找可能与问题相关的参考内容",
|
"intro": "调用\"语义检索\"和\"全文检索\"能力,从\"知识库\"中查找可能与问题相关的参考内容",
|
||||||
"avatar": "core/workflow/template/datasetSearch",
|
"avatar": "core/workflow/template/datasetSearch",
|
||||||
"flowNodeType": "FlowNodeTypeEnum.datasetSearchNode",
|
"flowNodeType": "datasetSearchNode",
|
||||||
"showStatus": true,
|
"showStatus": true,
|
||||||
"position": {
|
"position": {
|
||||||
"x": 1851.010152279949,
|
"x": 1851.010152279949,
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
"name": "系统配置",
|
"name": "系统配置",
|
||||||
"intro": "可以配置应用的系统参数",
|
"intro": "可以配置应用的系统参数",
|
||||||
"avatar": "core/workflow/template/systemConfig",
|
"avatar": "core/workflow/template/systemConfig",
|
||||||
"flowNodeType": "FlowNodeTypeEnum.systemConfig",
|
"flowNodeType": "userGuide",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 531.2422736065552,
|
"x": 531.2422736065552,
|
||||||
"y": -486.7611729549753
|
"y": -486.7611729549753
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
"name": "流程开始",
|
"name": "流程开始",
|
||||||
"intro": "",
|
"intro": "",
|
||||||
"avatar": "core/workflow/template/workflowStart",
|
"avatar": "core/workflow/template/workflowStart",
|
||||||
"flowNodeType": "FlowNodeTypeEnum.workflowStart",
|
"flowNodeType": "workflowStart",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 558.4082376415505,
|
"x": 558.4082376415505,
|
||||||
"y": 123.72387429194112
|
"y": 123.72387429194112
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
"name": "AI 对话",
|
"name": "AI 对话",
|
||||||
"intro": "AI 大模型对话",
|
"intro": "AI 大模型对话",
|
||||||
"avatar": "core/workflow/template/aiChat",
|
"avatar": "core/workflow/template/aiChat",
|
||||||
"flowNodeType": "FlowNodeTypeEnum.chatNode",
|
"flowNodeType": "chatNode",
|
||||||
"showStatus": true,
|
"showStatus": true,
|
||||||
"position": {
|
"position": {
|
||||||
"x": 1638.509551404687,
|
"x": 1638.509551404687,
|
||||||
@@ -229,7 +229,7 @@
|
|||||||
"name": "知识库搜索",
|
"name": "知识库搜索",
|
||||||
"intro": "调用\"语义检索\"和\"全文检索\"能力,从\"知识库\"中查找可能与问题相关的参考内容",
|
"intro": "调用\"语义检索\"和\"全文检索\"能力,从\"知识库\"中查找可能与问题相关的参考内容",
|
||||||
"avatar": "core/workflow/template/datasetSearch",
|
"avatar": "core/workflow/template/datasetSearch",
|
||||||
"flowNodeType": "FlowNodeTypeEnum.datasetSearchNode",
|
"flowNodeType": "datasetSearchNode",
|
||||||
"showStatus": true,
|
"showStatus": true,
|
||||||
"position": {
|
"position": {
|
||||||
"x": 918.5901682164496,
|
"x": 918.5901682164496,
|
||||||
|
@@ -7,11 +7,7 @@ import RenderInput from './render/RenderInput';
|
|||||||
import { Box, Button, Flex, HStack } from '@chakra-ui/react';
|
import { Box, Button, Flex, HStack } from '@chakra-ui/react';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { SmallAddIcon } from '@chakra-ui/icons';
|
import { SmallAddIcon } from '@chakra-ui/icons';
|
||||||
import {
|
import { NodeInputKeyEnum, VARIABLE_NODE_ID } from '@fastgpt/global/core/workflow/constants';
|
||||||
WorkflowIOValueTypeEnum,
|
|
||||||
NodeInputKeyEnum,
|
|
||||||
VARIABLE_NODE_ID
|
|
||||||
} from '@fastgpt/global/core/workflow/constants';
|
|
||||||
import { getOneQuoteInputTemplate } from '@fastgpt/global/core/workflow/template/system/datasetConcat';
|
import { getOneQuoteInputTemplate } from '@fastgpt/global/core/workflow/template/system/datasetConcat';
|
||||||
import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
|
import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
|
||||||
import { useSystemStore } from '@/web/common/system/useSystemStore';
|
import { useSystemStore } from '@/web/common/system/useSystemStore';
|
||||||
@@ -189,7 +185,7 @@ function Reference({
|
|||||||
<Flex alignItems={'center'} mb={1}>
|
<Flex alignItems={'center'} mb={1}>
|
||||||
<FormLabel required={inputChildren.required}>{inputChildren.label}</FormLabel>
|
<FormLabel required={inputChildren.required}>{inputChildren.label}</FormLabel>
|
||||||
{/* value */}
|
{/* value */}
|
||||||
<ValueTypeLabel valueType={inputChildren.valueType} />
|
<ValueTypeLabel valueType={inputChildren.valueType} valueDesc={inputChildren.valueDesc} />
|
||||||
|
|
||||||
<MyIcon
|
<MyIcon
|
||||||
className="delete"
|
className="delete"
|
||||||
|
@@ -176,7 +176,7 @@ function Reference({
|
|||||||
<FormLabel required={input.required}>{input.label}</FormLabel>
|
<FormLabel required={input.required}>{input.label}</FormLabel>
|
||||||
{input.description && <QuestionTip ml={0.5} label={input.description}></QuestionTip>}
|
{input.description && <QuestionTip ml={0.5} label={input.description}></QuestionTip>}
|
||||||
{/* value */}
|
{/* value */}
|
||||||
<ValueTypeLabel valueType={input.valueType} />
|
<ValueTypeLabel valueType={input.valueType} valueDesc={input.valueDesc} />
|
||||||
|
|
||||||
<MyIcon
|
<MyIcon
|
||||||
name={'common/settingLight'}
|
name={'common/settingLight'}
|
||||||
|
@@ -11,7 +11,10 @@ import { WorkflowContext } from '../../context';
|
|||||||
import { useCreation } from 'ahooks';
|
import { useCreation } from 'ahooks';
|
||||||
import { getWorkflowGlobalVariables } from '@/web/core/workflow/utils';
|
import { getWorkflowGlobalVariables } from '@/web/core/workflow/utils';
|
||||||
import { FlowNodeOutputItemType } from '@fastgpt/global/core/workflow/type/io';
|
import { FlowNodeOutputItemType } from '@fastgpt/global/core/workflow/type/io';
|
||||||
import { FlowNodeOutputTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
|
import {
|
||||||
|
chatHistoryValueDesc,
|
||||||
|
FlowNodeOutputTypeEnum
|
||||||
|
} from '@fastgpt/global/core/workflow/node/constant';
|
||||||
import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants';
|
import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants';
|
||||||
import { AppContext } from '@/pages/app/detail/components/context';
|
import { AppContext } from '@/pages/app/detail/components/context';
|
||||||
import { userFilesInput } from '@fastgpt/global/core/workflow/template/system/workflowStart';
|
import { userFilesInput } from '@fastgpt/global/core/workflow/template/system/workflowStart';
|
||||||
@@ -30,14 +33,27 @@ const NodeStart = ({ data, selected }: NodeProps<FlowNodeItemType>) => {
|
|||||||
t
|
t
|
||||||
});
|
});
|
||||||
|
|
||||||
return variables.map<FlowNodeOutputItemType>((item) => ({
|
return variables.map<FlowNodeOutputItemType>((item) => {
|
||||||
id: item.key,
|
if (item.valueType === WorkflowIOValueTypeEnum.chatHistory) {
|
||||||
type: FlowNodeOutputTypeEnum.static,
|
return {
|
||||||
key: item.key,
|
id: item.key,
|
||||||
required: item.required,
|
type: FlowNodeOutputTypeEnum.static,
|
||||||
valueType: item.valueType || WorkflowIOValueTypeEnum.any,
|
key: item.key,
|
||||||
label: item.label
|
required: item.required,
|
||||||
}));
|
valueType: item.valueType,
|
||||||
|
valueDesc: chatHistoryValueDesc,
|
||||||
|
label: item.label
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
id: item.key,
|
||||||
|
type: FlowNodeOutputTypeEnum.static,
|
||||||
|
key: item.key,
|
||||||
|
required: item.required,
|
||||||
|
valueType: item.valueType || WorkflowIOValueTypeEnum.any,
|
||||||
|
label: item.label
|
||||||
|
};
|
||||||
|
});
|
||||||
}, [nodeList, t]);
|
}, [nodeList, t]);
|
||||||
|
|
||||||
// Dynamic add or delete userFilesInput
|
// Dynamic add or delete userFilesInput
|
||||||
|
@@ -24,8 +24,6 @@ import { useForm } from 'react-hook-form';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { useMount } from 'ahooks';
|
import { useMount } from 'ahooks';
|
||||||
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
|
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
|
||||||
import { useContextSelector } from 'use-context-selector';
|
|
||||||
import { WorkflowContext } from '../../../../context';
|
|
||||||
|
|
||||||
const FieldModal = ({
|
const FieldModal = ({
|
||||||
customInputConfig,
|
customInputConfig,
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { FlowNodeInputItemType } from '@fastgpt/global/core/workflow/type/io.d';
|
import { FlowNodeInputItemType } from '@fastgpt/global/core/workflow/type/io.d';
|
||||||
import React, { useCallback, useMemo } from 'react';
|
import React, { useCallback, useMemo } from 'react';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { Box, Flex, HStack } from '@chakra-ui/react';
|
import { Box, Flex } from '@chakra-ui/react';
|
||||||
|
|
||||||
import NodeInputSelect from '@fastgpt/web/components/core/workflow/NodeInputSelect';
|
import NodeInputSelect from '@fastgpt/web/components/core/workflow/NodeInputSelect';
|
||||||
import { FlowNodeInputTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
|
import { FlowNodeInputTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
|
||||||
@@ -10,9 +10,6 @@ import { useContextSelector } from 'use-context-selector';
|
|||||||
import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
|
import { WorkflowContext } from '@/pages/app/detail/components/WorkflowComponents/context';
|
||||||
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
|
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
|
||||||
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
|
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
|
||||||
import MyTooltip from '@fastgpt/web/components/common/MyTooltip';
|
|
||||||
import MyIcon from '@fastgpt/web/components/common/Icon';
|
|
||||||
import MyTag from '@fastgpt/web/components/common/Tag/index';
|
|
||||||
import VariableTip from '@/components/common/Textarea/MyTextarea/VariableTip';
|
import VariableTip from '@/components/common/Textarea/MyTextarea/VariableTip';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
@@ -25,7 +22,8 @@ const InputLabel = ({ nodeId, input }: Props) => {
|
|||||||
|
|
||||||
const onChangeNode = useContextSelector(WorkflowContext, (v) => v.onChangeNode);
|
const onChangeNode = useContextSelector(WorkflowContext, (v) => v.onChangeNode);
|
||||||
|
|
||||||
const { description, required, label, selectedTypeIndex, renderTypeList, valueType } = input;
|
const { description, required, label, selectedTypeIndex, renderTypeList, valueType, valueDesc } =
|
||||||
|
input;
|
||||||
|
|
||||||
const onChangeRenderType = useCallback(
|
const onChangeRenderType = useCallback(
|
||||||
(e: string) => {
|
(e: string) => {
|
||||||
@@ -60,7 +58,9 @@ const InputLabel = ({ nodeId, input }: Props) => {
|
|||||||
{description && <QuestionTip ml={1} label={t(description as any)}></QuestionTip>}
|
{description && <QuestionTip ml={1} label={t(description as any)}></QuestionTip>}
|
||||||
</Flex>
|
</Flex>
|
||||||
{/* value type */}
|
{/* value type */}
|
||||||
{renderType === FlowNodeInputTypeEnum.reference && <ValueTypeLabel valueType={valueType} />}
|
{renderType === FlowNodeInputTypeEnum.reference && (
|
||||||
|
<ValueTypeLabel valueType={valueType} valueDesc={valueDesc} />
|
||||||
|
)}
|
||||||
|
|
||||||
{/* input type select */}
|
{/* input type select */}
|
||||||
{renderTypeList && renderTypeList.length > 1 && (
|
{renderTypeList && renderTypeList.length > 1 && (
|
||||||
|
@@ -184,7 +184,7 @@ function Reference({
|
|||||||
<QuestionTip ml={1} label={inputChildren.description}></QuestionTip>
|
<QuestionTip ml={1} label={inputChildren.description}></QuestionTip>
|
||||||
)}
|
)}
|
||||||
{/* value */}
|
{/* value */}
|
||||||
<ValueTypeLabel valueType={inputChildren.valueType} />
|
<ValueTypeLabel valueType={inputChildren.valueType} valueDesc={inputChildren.valueDesc} />
|
||||||
|
|
||||||
<MyIcon
|
<MyIcon
|
||||||
name={'common/settingLight'}
|
name={'common/settingLight'}
|
||||||
|
@@ -24,6 +24,7 @@ import { useCreation } from 'ahooks';
|
|||||||
import { AppContext } from '@/pages/app/detail/components/context';
|
import { AppContext } from '@/pages/app/detail/components/context';
|
||||||
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
|
import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip';
|
||||||
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
|
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
|
||||||
|
import { datasetQuoteValueDesc } from '@fastgpt/global/core/workflow/node/constant';
|
||||||
|
|
||||||
const LabelStyles: BoxProps = {
|
const LabelStyles: BoxProps = {
|
||||||
fontSize: ['sm', 'md']
|
fontSize: ['sm', 'md']
|
||||||
@@ -154,7 +155,10 @@ const SettingQuotePrompt = (props: RenderInputProps) => {
|
|||||||
<Box position={'relative'} color={'myGray.600'} fontWeight={'medium'}>
|
<Box position={'relative'} color={'myGray.600'} fontWeight={'medium'}>
|
||||||
{t('common:core.module.Dataset quote.label')}
|
{t('common:core.module.Dataset quote.label')}
|
||||||
</Box>
|
</Box>
|
||||||
<ValueTypeLabel valueType={WorkflowIOValueTypeEnum.datasetQuote} />
|
<ValueTypeLabel
|
||||||
|
valueType={WorkflowIOValueTypeEnum.datasetQuote}
|
||||||
|
valueDesc={datasetQuoteValueDesc}
|
||||||
|
/>
|
||||||
|
|
||||||
<MyTooltip label={t('common:core.module.Setting quote prompt')}>
|
<MyTooltip label={t('common:core.module.Setting quote prompt')}>
|
||||||
<MyIcon
|
<MyIcon
|
||||||
|
@@ -14,7 +14,6 @@ import {
|
|||||||
Textarea
|
Textarea
|
||||||
} from '@chakra-ui/react';
|
} from '@chakra-ui/react';
|
||||||
import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants';
|
import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants';
|
||||||
import { FlowNodeInputTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
|
|
||||||
import {
|
import {
|
||||||
CustomFieldConfigType,
|
CustomFieldConfigType,
|
||||||
FlowNodeOutputItemType
|
FlowNodeOutputItemType
|
||||||
@@ -25,7 +24,6 @@ import { useToast } from '@fastgpt/web/hooks/useToast';
|
|||||||
import React, { useCallback, useMemo } from 'react';
|
import React, { useCallback, useMemo } from 'react';
|
||||||
import { useForm } from 'react-hook-form';
|
import { useForm } from 'react-hook-form';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { useMount } from 'ahooks';
|
|
||||||
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
|
import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel';
|
||||||
import { getNanoid } from '@fastgpt/global/common/string/tools';
|
import { getNanoid } from '@fastgpt/global/common/string/tools';
|
||||||
|
|
||||||
|
@@ -11,7 +11,7 @@ import ValueTypeLabel from '../ValueTypeLabel';
|
|||||||
|
|
||||||
const OutputLabel = ({ nodeId, output }: { nodeId: string; output: FlowNodeOutputItemType }) => {
|
const OutputLabel = ({ nodeId, output }: { nodeId: string; output: FlowNodeOutputItemType }) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const { label = '', description, valueType } = output;
|
const { label = '', description, valueType, valueDesc } = output;
|
||||||
|
|
||||||
const Render = useMemo(() => {
|
const Render = useMemo(() => {
|
||||||
return (
|
return (
|
||||||
@@ -36,7 +36,7 @@ const OutputLabel = ({ nodeId, output }: { nodeId: string; output: FlowNodeOutpu
|
|||||||
{t(label as any)}
|
{t(label as any)}
|
||||||
</Box>
|
</Box>
|
||||||
{description && <QuestionTip ml={1} label={t(description as any)} />}
|
{description && <QuestionTip ml={1} label={t(description as any)} />}
|
||||||
<ValueTypeLabel valueType={valueType} />
|
<ValueTypeLabel valueType={valueType} valueDesc={valueDesc} />
|
||||||
</Flex>
|
</Flex>
|
||||||
{output.type === FlowNodeOutputTypeEnum.source && (
|
{output.type === FlowNodeOutputTypeEnum.source && (
|
||||||
<SourceHandle
|
<SourceHandle
|
||||||
|
@@ -4,14 +4,19 @@ import { WorkflowIOValueTypeEnum } from '@fastgpt/global/core/workflow/constants
|
|||||||
import MyTooltip from '@fastgpt/web/components/common/MyTooltip';
|
import MyTooltip from '@fastgpt/web/components/common/MyTooltip';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
const ValueTypeLabel = ({ valueType }: { valueType?: WorkflowIOValueTypeEnum }) => {
|
const ValueTypeLabel = ({
|
||||||
|
valueType,
|
||||||
|
valueDesc
|
||||||
|
}: {
|
||||||
|
valueType?: WorkflowIOValueTypeEnum;
|
||||||
|
valueDesc?: string;
|
||||||
|
}) => {
|
||||||
const valueTypeData = valueType ? FlowValueTypeMap[valueType] : undefined;
|
const valueTypeData = valueType ? FlowValueTypeMap[valueType] : undefined;
|
||||||
|
|
||||||
const label = valueTypeData?.label || '';
|
const label = valueTypeData?.label || '';
|
||||||
const description = valueTypeData?.description || '';
|
|
||||||
|
|
||||||
return !!label ? (
|
return !!label ? (
|
||||||
<MyTooltip label={description}>
|
<MyTooltip label={valueDesc}>
|
||||||
<Box
|
<Box
|
||||||
bg={'myGray.100'}
|
bg={'myGray.100'}
|
||||||
color={'myGray.500'}
|
color={'myGray.500'}
|
||||||
|
Reference in New Issue
Block a user