feat: workflow new nodes (#4683)
Co-authored-by: Joel <iamjoel007@gmail.com> Co-authored-by: Patryk Garstecki <patryk20120@yahoo.pl> Co-authored-by: Sebastian.W <thiner@gmail.com> Co-authored-by: 呆萌闷油瓶 <253605712@qq.com> Co-authored-by: takatost <takatost@users.noreply.github.com> Co-authored-by: rechardwang <wh_goodjob@163.com> Co-authored-by: Nite Knite <nkCoding@gmail.com> Co-authored-by: Chenhe Gu <guchenhe@gmail.com> Co-authored-by: Joshua <138381132+joshua20231026@users.noreply.github.com> Co-authored-by: Weaxs <459312872@qq.com> Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com> Co-authored-by: leejoo0 <81673835+leejoo0@users.noreply.github.com> Co-authored-by: JzoNg <jzongcode@gmail.com> Co-authored-by: sino <sino2322@gmail.com> Co-authored-by: Vikey Chen <vikeytk@gmail.com> Co-authored-by: wanghl <Wang-HL@users.noreply.github.com> Co-authored-by: Haolin Wang-汪皓临 <haolin.wang@atlaslovestravel.com> Co-authored-by: Zixuan Cheng <61724187+Theysua@users.noreply.github.com> Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com> Co-authored-by: Bowen Liang <bowenliang@apache.org> Co-authored-by: Bowen Liang <liangbowen@gf.com.cn> Co-authored-by: fanghongtai <42790567+fanghongtai@users.noreply.github.com> Co-authored-by: wxfanghongtai <wxfanghongtai@gf.com.cn> Co-authored-by: Matri <qjp@bithuman.io> Co-authored-by: Benjamin <benjaminx@gmail.com>
This commit is contained in:
parent
444fdb79dc
commit
45deaee762
210 changed files with 9951 additions and 2223 deletions
|
|
@ -284,6 +284,7 @@ const translation = {
|
|||
'varName': 'Variable Name',
|
||||
'labelName': 'Label Name',
|
||||
'inputPlaceholder': 'Please input',
|
||||
'content': 'Content',
|
||||
'required': 'Required',
|
||||
'errorMsg': {
|
||||
varNameRequired: 'Variable name is required',
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
const translation = {
|
||||
title: 'Tools',
|
||||
createCustomTool: 'Create Custom Tool',
|
||||
customToolTip: 'Learn more about Dify custom tools',
|
||||
type: {
|
||||
all: 'All',
|
||||
builtIn: 'Built-in',
|
||||
custom: 'Custom',
|
||||
workflow: 'Workflow',
|
||||
},
|
||||
contribute: {
|
||||
line1: 'I\'m interested in ',
|
||||
|
|
@ -21,12 +23,26 @@ const translation = {
|
|||
},
|
||||
includeToolNum: '{{num}} tools included',
|
||||
addTool: 'Add Tool',
|
||||
addToolModal: {
|
||||
type: 'type',
|
||||
category: 'category',
|
||||
add: 'add',
|
||||
added: 'added',
|
||||
manageInTools: 'Manage in Tools',
|
||||
emptyTitle: 'No workflow tool available',
|
||||
emptyTip: 'Go to "Workflow -> Publish as Tool"',
|
||||
},
|
||||
createTool: {
|
||||
title: 'Create Custom Tool',
|
||||
editAction: 'Configure',
|
||||
editTitle: 'Edit Custom Tool',
|
||||
name: 'Name',
|
||||
toolNamePlaceHolder: 'Enter the tool name',
|
||||
nameForToolCall: 'Tool call name',
|
||||
nameForToolCallPlaceHolder: 'Used for machine recognition, such as getCurrentWeather, list_pets',
|
||||
nameForToolCallTip: 'Only supports numbers, letters, and underscores.',
|
||||
description: 'Description',
|
||||
descriptionPlaceholder: 'Brief description of the tool\'s purpose, e.g., get the temperature for a specific location.',
|
||||
schema: 'Schema',
|
||||
schemaPlaceHolder: 'Enter your OpenAPI schema here',
|
||||
viewSchemaSpec: 'View the OpenAPI-Swagger Specification',
|
||||
|
|
@ -71,8 +87,24 @@ const translation = {
|
|||
},
|
||||
privacyPolicy: 'Privacy policy',
|
||||
privacyPolicyPlaceholder: 'Please enter privacy policy',
|
||||
toolInput: {
|
||||
title: 'Tool Input',
|
||||
name: 'Name',
|
||||
required: 'Required',
|
||||
method: 'Method',
|
||||
methodSetting: 'Setting',
|
||||
methodSettingTip: 'User fills in the tool configuration',
|
||||
methodParameter: 'Parameter',
|
||||
methodParameterTip: 'LLM fills during inference',
|
||||
label: 'Tags',
|
||||
labelPlaceholder: 'Choose tags(optional)',
|
||||
description: 'Description',
|
||||
descriptionPlaceholder: 'Description of the parameter\'s meaning',
|
||||
},
|
||||
customDisclaimer: 'Custom disclaimer',
|
||||
customDisclaimerPlaceholder: 'Please enter custom disclaimer',
|
||||
confirmTitle: 'Confirm to save ?',
|
||||
confirmTip: 'Apps using this tool will be affected',
|
||||
},
|
||||
test: {
|
||||
title: 'Test',
|
||||
|
|
@ -112,6 +144,8 @@ const translation = {
|
|||
toolRemoved: 'Tool removed',
|
||||
notAuthorized: 'Tool not authorized',
|
||||
howToGet: 'How to get',
|
||||
openInStudio: 'Open in Studio',
|
||||
toolNameUsageTip: 'Tool call name for agent reasoning and prompting',
|
||||
}
|
||||
|
||||
export default translation
|
||||
|
|
|
|||
|
|
@ -60,6 +60,13 @@ const translation = {
|
|||
pasteHere: 'Paste Here',
|
||||
pointerMode: 'Pointer Mode',
|
||||
handMode: 'Hand Mode',
|
||||
model: 'Model',
|
||||
workflowAsTool: 'Workflow as Tool',
|
||||
configureRequired: 'Configure Required',
|
||||
configure: 'Configure',
|
||||
manageInTools: 'Manage in Tools',
|
||||
workflowAsToolTip: 'Tool reconfiguration is required after the workflow update.',
|
||||
viewDetailInTracingPanel: 'View details',
|
||||
},
|
||||
errorMsg: {
|
||||
fieldRequired: '{{field}} is required',
|
||||
|
|
@ -78,12 +85,18 @@ const translation = {
|
|||
testRun: 'Test Run ',
|
||||
startRun: 'Start Run',
|
||||
running: 'Running',
|
||||
testRunIteration: 'Test Run Iteration',
|
||||
back: 'Back',
|
||||
iteration: 'Iteration',
|
||||
},
|
||||
tabs: {
|
||||
'searchBlock': 'Search block',
|
||||
'blocks': 'Blocks',
|
||||
'builtInTool': 'Built-in Tool',
|
||||
'customTool': 'Custom Tool',
|
||||
'tools': 'Tools',
|
||||
'allTool': 'All',
|
||||
'builtInTool': 'Built-in',
|
||||
'customTool': 'Custom',
|
||||
'workflowTool': 'Workflow',
|
||||
'question-understand': 'Question Understand',
|
||||
'logic': 'Logic',
|
||||
'transform': 'Transform',
|
||||
|
|
@ -101,7 +114,11 @@ const translation = {
|
|||
'code': 'Code',
|
||||
'template-transform': 'Template',
|
||||
'http-request': 'HTTP Request',
|
||||
'variable-assigner': 'Variable Assigner',
|
||||
'variable-assigner': 'Variable Aggregator',
|
||||
'variable-aggregator': 'Variable Aggregator',
|
||||
'iteration-start': 'Iteration Start',
|
||||
'iteration': 'Iteration',
|
||||
'parameter-extractor': 'Parameter Extractor',
|
||||
},
|
||||
blocksAbout: {
|
||||
'start': 'Define the initial parameters for launching a workflow',
|
||||
|
|
@ -114,7 +131,10 @@ const translation = {
|
|||
'code': 'Execute a piece of Python or NodeJS code to implement custom logic',
|
||||
'template-transform': 'Convert data to string using Jinja template syntax',
|
||||
'http-request': 'Allow server requests to be sent over the HTTP protocol',
|
||||
'variable-assigner': 'Assign variables in different branches to the same variable to achieve unified configuration of post-nodes',
|
||||
'variable-assigner': 'Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.',
|
||||
'variable-aggregator': 'Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.',
|
||||
'iteration': 'Perform multiple steps on a list object until all results are outputted.',
|
||||
'parameter-extractor': 'Use LLM to extract structured parameters from natural language for tool invocations or HTTP requests.',
|
||||
},
|
||||
operator: {
|
||||
zoomIn: 'Zoom In',
|
||||
|
|
@ -312,7 +332,6 @@ const translation = {
|
|||
variableAssigner: {
|
||||
title: 'Assign variables',
|
||||
outputType: 'Output Type',
|
||||
outputVarType: 'Output Variable Type',
|
||||
varNotSet: 'Variable not set',
|
||||
noVarTip: 'Add the variables to be assigned',
|
||||
type: {
|
||||
|
|
@ -321,9 +340,13 @@ const translation = {
|
|||
object: 'Object',
|
||||
array: 'Array',
|
||||
},
|
||||
aggregationGroup: 'Aggregation Group',
|
||||
aggregationGroupTip: 'Enabling this feature allows the variable aggregator to aggregate multiple sets of variables.',
|
||||
addGroup: 'Add Group',
|
||||
outputVars: {
|
||||
output: 'Assigned variable value',
|
||||
varDescribe: '{{groupName}} output',
|
||||
},
|
||||
setAssignVariable: 'Set assign variable',
|
||||
},
|
||||
tool: {
|
||||
toAuthorize: 'To authorize',
|
||||
|
|
@ -352,8 +375,42 @@ const translation = {
|
|||
topicPlaceholder: 'Write your topic name',
|
||||
addClass: 'Add Class',
|
||||
instruction: 'Instruction',
|
||||
instructionTip: 'Input additional instructions to help the question classifier better understand how to categorize questions.',
|
||||
instructionPlaceholder: 'Write your instruction',
|
||||
},
|
||||
parameterExtractor: {
|
||||
inputVar: 'Input Variable',
|
||||
extractParameters: 'Extract Parameters',
|
||||
importFromTool: 'Import from tools',
|
||||
addExtractParameter: 'Add Extract Parameter',
|
||||
addExtractParameterContent: {
|
||||
name: 'Name',
|
||||
namePlaceholder: 'Extract Parameter Name',
|
||||
type: 'Type',
|
||||
typePlaceholder: 'Extract Parameter Type',
|
||||
description: 'Description',
|
||||
descriptionPlaceholder: 'Extract Parameter Description',
|
||||
required: 'Required',
|
||||
requiredContent: 'Required is only used as a reference for model inference, and not for mandatory validation of parameter output.',
|
||||
},
|
||||
extractParametersNotSet: 'Extract Parameters not setup',
|
||||
instruction: 'Instruction',
|
||||
instructionTip: 'Input additional instructions to help the parameter extractor understand how to extract parameters.',
|
||||
advancedSetting: 'Advanced Setting',
|
||||
reasoningMode: 'Reasoning Mode',
|
||||
reasoningModeTip: 'You can choose the appropriate reasoning mode based on the model\'s ability to respond to instructions for function calling or prompts.',
|
||||
isSuccess: 'Is Success.On success the value is 1, on failure the value is 0.',
|
||||
errorReason: 'Error Reason',
|
||||
},
|
||||
iteration: {
|
||||
deleteTitle: 'Delete Iteration Node?',
|
||||
deleteDesc: 'Deleting the iteration node will delete all child nodes',
|
||||
input: 'Input',
|
||||
output: 'Output Variables',
|
||||
iteration_one: '{{count}} Iteration',
|
||||
iteration_other: '{{count}} Iterations',
|
||||
currentIteration: 'Current Iteration',
|
||||
},
|
||||
},
|
||||
tracing: {
|
||||
stopBy: 'Stop by {{user}}',
|
||||
|
|
|
|||
|
|
@ -281,6 +281,7 @@ const translation = {
|
|||
'inputPlaceholder': '请输入',
|
||||
'labelName': '显示名称',
|
||||
'required': '必填',
|
||||
'content': '内容',
|
||||
'errorMsg': {
|
||||
varNameRequired: '变量名称必填',
|
||||
labelNameRequired: '显示名称必填',
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
const translation = {
|
||||
title: '工具',
|
||||
createCustomTool: '创建自定义工具',
|
||||
customToolTip: '了解更多关于 Dify 自定义工具的信息',
|
||||
type: {
|
||||
all: '全部',
|
||||
builtIn: '内置',
|
||||
custom: '自定义',
|
||||
workflow: '工作流',
|
||||
},
|
||||
contribute: {
|
||||
line1: '我有兴趣为 ',
|
||||
|
|
@ -21,12 +23,26 @@ const translation = {
|
|||
},
|
||||
includeToolNum: '包含 {{num}} 个工具',
|
||||
addTool: '添加工具',
|
||||
addToolModal: {
|
||||
type: '类型',
|
||||
category: '类别',
|
||||
add: '添加',
|
||||
added: '已添加',
|
||||
manageInTools: '去工具列表管理',
|
||||
emptyTitle: '没有可用的工作流工具',
|
||||
emptyTip: '去 “工作流 -> 发布为工具” 添加',
|
||||
},
|
||||
createTool: {
|
||||
title: '创建自定义工具',
|
||||
editAction: '编辑',
|
||||
editTitle: '编辑自定义工具',
|
||||
name: '名称',
|
||||
toolNamePlaceHolder: '输入工具名称',
|
||||
nameForToolCall: '工具调用名称',
|
||||
nameForToolCallPlaceHolder: '用于机器识别,如 getCurrentWeather, list_pets',
|
||||
nameForToolCallTip: '仅支持数字、字母、下划线。',
|
||||
description: '工具描述',
|
||||
descriptionPlaceholder: '工具用途的简要描述,例如获取特定位置的温度。',
|
||||
schema: 'Schema',
|
||||
schemaPlaceHolder: '在此处输入您的 OpenAPI schema',
|
||||
viewSchemaSpec: '查看 OpenAPI-Swagger 规范',
|
||||
|
|
@ -71,8 +87,24 @@ const translation = {
|
|||
},
|
||||
privacyPolicy: '隐私协议',
|
||||
privacyPolicyPlaceholder: '请输入隐私协议',
|
||||
toolInput: {
|
||||
title: '工具入参',
|
||||
name: '名称',
|
||||
required: '必须',
|
||||
method: '方式',
|
||||
methodSetting: '用户输入',
|
||||
methodSettingTip: '用户在工具配置中填写',
|
||||
methodParameter: 'LLM 填入',
|
||||
methodParameterTip: 'LLM 在推理过程中填写',
|
||||
label: '标签',
|
||||
labelPlaceholder: '选择标签(可选)',
|
||||
description: '描述',
|
||||
descriptionPlaceholder: '参数意义的描述',
|
||||
},
|
||||
customDisclaimer: '自定义免责声明',
|
||||
customDisclaimerPlaceholder: '请输入自定义免责声明',
|
||||
confirmTitle: '确认保存?',
|
||||
confirmTip: '发布新的工具版本可能会影响该工具已关联的应用',
|
||||
},
|
||||
test: {
|
||||
title: '测试',
|
||||
|
|
@ -112,6 +144,8 @@ const translation = {
|
|||
toolRemoved: '工具已被移除',
|
||||
notAuthorized: '工具未授权',
|
||||
howToGet: '如何获取',
|
||||
openInStudio: '在工作室中打开',
|
||||
toolNameUsageTip: '工具调用名称,用于 Agent 推理和提示词',
|
||||
}
|
||||
|
||||
export default translation
|
||||
|
|
|
|||
|
|
@ -60,6 +60,13 @@ const translation = {
|
|||
pasteHere: '粘贴到这里',
|
||||
pointerMode: '指针模式',
|
||||
handMode: '手模式',
|
||||
model: '模型',
|
||||
workflowAsTool: '发布为工具',
|
||||
configureRequired: '需要进行配置',
|
||||
configure: '配置',
|
||||
manageInTools: '访问工具页',
|
||||
workflowAsToolTip: '工作流更新后需要重新配置工具参数',
|
||||
viewDetailInTracingPanel: '查看详细信息',
|
||||
},
|
||||
errorMsg: {
|
||||
fieldRequired: '{{field}} 不能为空',
|
||||
|
|
@ -78,12 +85,18 @@ const translation = {
|
|||
testRun: '测试运行 ',
|
||||
startRun: '开始运行',
|
||||
running: '运行中',
|
||||
testRunIteration: '测试运行迭代',
|
||||
back: '返回',
|
||||
iteration: '迭代',
|
||||
},
|
||||
tabs: {
|
||||
'searchBlock': '搜索节点',
|
||||
'blocks': '节点',
|
||||
'builtInTool': '内置工具',
|
||||
'customTool': '自定义工具',
|
||||
'tools': '工具',
|
||||
'allTool': '全部',
|
||||
'builtInTool': '内置',
|
||||
'customTool': '自定义',
|
||||
'workflowTool': '工作流',
|
||||
'question-understand': '问题理解',
|
||||
'logic': '逻辑',
|
||||
'transform': '转换',
|
||||
|
|
@ -101,7 +114,11 @@ const translation = {
|
|||
'code': '代码执行',
|
||||
'template-transform': '模板转换',
|
||||
'http-request': 'HTTP 请求',
|
||||
'variable-assigner': '变量赋值',
|
||||
'variable-assigner': '变量聚合器',
|
||||
'variable-aggregator': '变量聚合器',
|
||||
'iteration-start': '迭代开始',
|
||||
'iteration': '迭代',
|
||||
'parameter-extractor': '参数提取器',
|
||||
},
|
||||
blocksAbout: {
|
||||
'start': '定义一个 workflow 流程启动的初始参数',
|
||||
|
|
@ -114,7 +131,10 @@ const translation = {
|
|||
'code': '执行一段 Python 或 NodeJS 代码实现自定义逻辑',
|
||||
'template-transform': '使用 Jinja 模板语法将数据转换为字符串',
|
||||
'http-request': '允许通过 HTTP 协议发送服务器请求',
|
||||
'variable-assigner': '将不同分支中的变量指派给同一个变量,以实现后置节点统一配置',
|
||||
'variable-assigner': '将多路分支的变量聚合为一个变量,以实现下游节点统一配置。',
|
||||
'variable-aggregator': '将多路分支的变量聚合为一个变量,以实现下游节点统一配置。',
|
||||
'iteration': '对列表对象执行多次步骤直至输出所有结果。',
|
||||
'parameter-extractor': '利用 LLM 从自然语言内推理提取出结构化参数,用于后置的工具调用或 HTTP 请求。',
|
||||
},
|
||||
operator: {
|
||||
zoomIn: '放大',
|
||||
|
|
@ -312,7 +332,6 @@ const translation = {
|
|||
variableAssigner: {
|
||||
title: '变量赋值',
|
||||
outputType: '输出类型',
|
||||
outputVarType: '输出变量类型',
|
||||
varNotSet: '未设置变量',
|
||||
noVarTip: '添加需要赋值的变量',
|
||||
type: {
|
||||
|
|
@ -321,9 +340,13 @@ const translation = {
|
|||
object: 'Object',
|
||||
array: 'Array',
|
||||
},
|
||||
aggregationGroup: '聚合分组',
|
||||
aggregationGroupTip: '开启该功能后,变量聚合器内可以同时聚合多组变量',
|
||||
addGroup: '添加分组',
|
||||
outputVars: {
|
||||
output: '指派的变量值',
|
||||
varDescribe: '{{groupName}}的输出变量',
|
||||
},
|
||||
setAssignVariable: '设置赋值变量',
|
||||
},
|
||||
tool: {
|
||||
toAuthorize: '授权',
|
||||
|
|
@ -352,8 +375,42 @@ const translation = {
|
|||
topicPlaceholder: '在这里输入你的主题内容',
|
||||
addClass: '添加分类',
|
||||
instruction: '指令',
|
||||
instructionTip: '你可以输入额外的附加指令,帮助问题分类器更好的理解如何分类',
|
||||
instructionPlaceholder: '在这里输入你的指令',
|
||||
},
|
||||
parameterExtractor: {
|
||||
inputVar: '输入变量',
|
||||
extractParameters: '提取参数',
|
||||
importFromTool: '从工具导入',
|
||||
addExtractParameter: '添加提取参数',
|
||||
addExtractParameterContent: {
|
||||
name: '名称',
|
||||
namePlaceholder: '提取参数名称',
|
||||
type: '类型',
|
||||
typePlaceholder: '提取参数类型',
|
||||
description: '描述',
|
||||
descriptionPlaceholder: '提取参数描述',
|
||||
required: '必填',
|
||||
requiredContent: '必填仅作为模型推理的参考,不用于参数输出的强制验证。',
|
||||
},
|
||||
extractParametersNotSet: '提取参数未设置',
|
||||
instruction: '指令',
|
||||
instructionTip: '你可以输入额外的附加指令,帮助参数提取器理解如何提取参数',
|
||||
advancedSetting: '高级设置',
|
||||
reasoningMode: '推理模式',
|
||||
reasoningModeTip: '你可以根据模型对于 Function calling 或 Prompt 的指令响应能力选择合适的推理模式',
|
||||
isSuccess: '是否成功。成功时值为 1,失败时值为 0。',
|
||||
errorReason: '错误原因',
|
||||
},
|
||||
iteration: {
|
||||
deleteTitle: '删除迭代节点?',
|
||||
deleteDesc: '删除迭代节点将删除所有子节点',
|
||||
input: '输入',
|
||||
output: '输出变量',
|
||||
iteration_one: '{{count}}个迭代',
|
||||
iteration_other: '{{count}}个迭代',
|
||||
currentIteration: '当前迭代',
|
||||
},
|
||||
},
|
||||
tracing: {
|
||||
stopBy: '由{{user}}终止',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue