FEAT: NEW WORKFLOW ENGINE (#3160)

Co-authored-by: Joel <iamjoel007@gmail.com>
Co-authored-by: Yeuoly <admin@srmxy.cn>
Co-authored-by: JzoNg <jzongcode@gmail.com>
Co-authored-by: StyleZhang <jasonapring2015@outlook.com>
Co-authored-by: jyong <jyong@dify.ai>
Co-authored-by: nite-knite <nkCoding@gmail.com>
Co-authored-by: jyong <718720800@qq.com>
This commit is contained in:
takatost
2024-04-08 18:51:46 +08:00
committed by GitHub
parent 2fb9850af5
commit 7753ba2d37
1161 changed files with 103836 additions and 10327 deletions

View File

@@ -262,18 +262,32 @@ const translation = {
queryNoBeEmpty: '提示词中必须设置查询内容',
},
variableConig: {
modalTitle: '变量设置',
description: '设置变量 {{varName}}',
fieldType: '字段类型',
string: '文本',
paragraph: '段落',
select: '下拉选项',
notSet: '未设置,在 Prompt 中输入 {{input}} 试试',
stringTitle: '文本框设置',
maxLength: '最大长度',
options: '选项',
addOption: '添加选项',
apiBasedVar: '基于 API 的变量',
'addModalTitle': '添加变量',
'editModalTitle': '编辑变量',
'description': '设置变量 {{varName}}',
'fieldType': '字段类型',
'string': '文本',
'text-input': '文本',
'paragraph': '段落',
'select': '下拉选项',
'number': '数字',
'notSet': '未设置,在 Prompt 中输入 {{input}} 试试',
'stringTitle': '文本框设置',
'maxLength': '最大长度',
'options': '选项',
'addOption': '添加选项',
'apiBasedVar': '基于 API 的变量',
'varName': '变量名称',
'inputPlaceholder': '请输入',
'labelName': '显示名称',
'required': '必填',
'errorMsg': {
varNameRequired: '变量名称必填',
labelNameRequired: '显示名称必填',
varNameCanBeRepeat: '变量名称不能重复',
atLeastOneOption: '至少需要一个选项',
optionRepeat: '选项不能重复',
},
},
vision: {
name: '视觉',
@@ -342,6 +356,7 @@ const translation = {
result: '结果',
datasetConfig: {
settingTitle: '召回设置',
knowledgeTip: '点击 “+” 按钮添加知识库',
retrieveOneWay: {
title: 'N选1召回',
description: '根据用户意图和知识库描述,由 Agent 自主判断选择最匹配的单个知识库来查询相关文本,适合知识库区分度大且知识库数量偏少的应用。',

View File

@@ -12,6 +12,12 @@ const translation = {
messageCount: '消息数',
userRate: '用户反馈',
adminRate: '管理员反馈',
startTime: '开始时间',
status: '状态',
runtime: '运行时间',
tokens: 'TOKENS',
user: '用户',
version: '版本',
},
pagination: {
previous: '上一页',
@@ -64,6 +70,14 @@ const translation = {
not_annotated: '未标注',
},
},
workflowTitle: '日志',
workflowSubtitle: '日志记录了应用的执行情况',
runDetail: {
title: '对话日志',
workflowTitle: '日志详情',
},
promptLog: 'Prompt 日志',
viewLog: '查看日志',
}
export default translation

View File

@@ -121,6 +121,10 @@ const translation = {
title: '平均会话互动数',
explanation: '反应每个会话用户的持续沟通次数,如果用户与 AI 问答了 10 轮,即为 10。该指标反映了用户粘性。仅在对话型应用提供。',
},
avgUserInteractions: {
title: '平均用户调用次数',
explanation: '反应每天用户的使用次数。该指标反映了用户粘性。',
},
userSatisfactionRate: {
title: '用户满意度',
explanation: '每 1000 条消息的点赞数。反应了用户对回答十分满意的比例。',

View File

@@ -2,14 +2,17 @@ const translation = {
createApp: '创建应用',
types: {
all: '全部',
assistant: '助手',
chatbot: '聊天助手',
agent: 'Agent',
workflow: '工作流',
completion: '文本生成',
},
modes: {
completion: '文本生成型',
chat: '基础助手',
},
createFromConfigFile: '通过导入应用配置文件创建',
duplicate: '复制',
duplicateTitle: '复制应用',
export: '导出 DSL',
exportFailed: '导出 DSL 失败',
importDSL: '导入 DSL 文件',
createFromConfigFile: '通过 DSL 文件创建',
deleteAppConfirmTitle: '确认删除应用?',
deleteAppConfirmContent:
'删除应用将无法撤销。用户将不能访问你的应用,所有 Prompt 编排配置和日志均将一并被删除。',
@@ -18,11 +21,29 @@ const translation = {
join: '参与社区',
communityIntro: '与团队成员、贡献者和开发者在不同频道中交流',
roadmap: '产品路线图',
appNamePlaceholder: '请输入应用名称',
newApp: {
startToCreate: '开始创建一个新应用',
captionName: '图标 & 名称',
startFromBlank: '创建空白应用',
startFromTemplate: '从应用模版创建',
captionAppType: '想要哪种应用类型?',
chatbotDescription: '使用大型语言模型构建基于聊天的助手',
completionDescription: '构建一个根据提示生成高质量文本的应用程序,例如生成文章、摘要、翻译等。',
completionWarning: '该类型不久后将不再支持创建',
agentDescription: '构建一个智能Agent可以自主选择工具来完成任务',
workflowDescription: '以工作流的形式编排生成型应用,提供更多的自定义能力。 它适合有经验的用户。',
workflowWarning: '正在进行 Beta 测试',
chatbotType: '聊天助手编排方法',
basic: '基础编排',
basicTip: '新手适用,可以切换成工作流编排',
basicFor: '新手适用',
basicDescription: '基本编排允许使用简单的设置编排聊天机器人应用程序,而无需修改内置提示。 它适合初学者。',
advanced: '工作流编排',
advancedFor: '进阶用户适用',
advancedDescription: '工作流编排以工作流的形式编排聊天机器人,提供高度的自定义,包括编辑内置提示的能力。 它适合有经验的用户。',
captionName: '图标 & 名称',
appNamePlaceholder: '给你的应用起个名字',
captionDescription: '描述',
appDescriptionPlaceholder: '输入应用的描述',
useTemplate: '使用该模板',
previewDemo: '预览 Demo',
chatApp: '助手',
chatAppIntro:
@@ -41,13 +62,28 @@ const translation = {
appCreated: '应用已创建',
appCreateFailed: '应用创建失败',
},
editApp: {
startToEdit: '编辑应用',
},
editApp: '编辑信息',
editAppTitle: '编辑应用信息',
editDone: '应用信息已更新',
editFailed: '更新应用信息失败',
emoji: {
ok: '确认',
cancel: '取消',
},
switch: '迁移为工作流编排',
switchTipStart: '将为您创建一个使用工作流编排的新应用。新应用将',
switchTip: '不能够',
switchTipEnd: '迁移回基础编排',
switchLabel: '新应用创建为',
removeOriginal: '删除原应用',
switchStart: '开始迁移',
typeSelector: {
all: '所有类型',
chatbot: '聊天助手',
agent: 'Agent',
workflow: '工作流',
completion: '文本生成',
},
}
export default translation

View File

@@ -400,6 +400,7 @@ const translation = {
promptEng: '编排',
apiAccess: '访问 API',
logAndAnn: '日志与标注',
logs: '日志',
},
environment: {
testing: '测试环境',
@@ -477,6 +478,10 @@ const translation = {
title: '变量 & 外部工具',
desc: '插入变量和外部工具',
},
outputToolDisabledItem: {
title: '变量',
desc: '插入变量',
},
modal: {
add: '添加新变量',
addTool: '添加工具',

View File

@@ -18,7 +18,7 @@ const translation = {
apps: {
title: '探索 Dify 的应用',
description: '使用这些模板应用程序,或根据模板自定义您自己的应用程序。',
allCategories: '所有类别',
allCategories: '推荐',
},
appCard: {
addToWorkspace: '添加到工作区',

View File

@@ -0,0 +1,23 @@
const translation = {
input: '输入',
result: '结果',
detail: '详情',
tracing: '追踪',
resultPanel: {
status: '状态',
time: '运行时间',
tokens: '总 token 数',
},
meta: {
title: '元数据',
status: '状态',
version: '版本',
executor: '执行人',
startTime: '开始时间',
time: '运行时间',
tokens: '总 token 数',
steps: '运行步数',
},
}
export default translation

View File

@@ -0,0 +1,333 @@
const translation = {
common: {
editing: '编辑中',
autoSaved: '自动保存',
unpublished: '未发布',
published: '已发布',
publish: '发布',
update: '更新',
run: '运行',
running: '运行中',
inRunMode: '在运行模式中',
inPreview: '预览中',
inPreviewMode: '预览中',
preview: '预览',
viewRunHistory: '查看运行历史',
runHistory: '运行历史',
goBackToEdit: '返回编辑模式',
conversationLog: '对话记录',
features: '功能',
debugAndPreview: '调试和预览',
restart: '重新开始',
currentDraft: '当前草稿',
currentDraftUnpublished: '当前草稿未发布',
latestPublished: '最新发布',
publishedAt: '发布于',
restore: '恢复',
runApp: '运行',
batchRunApp: '批量运行',
accessAPIReference: '访问 API',
embedIntoSite: '嵌入网站',
addTitle: '添加标题...',
addDescription: '添加描述...',
noVar: '没有变量',
variableNamePlaceholder: '变量名',
searchVar: '搜索变量',
setVarValuePlaceholder: '设置变量值',
needConnecttip: '此节点尚未连接到其他节点',
maxTreeDepth: '每个分支最大限制 {{depth}} 个节点',
needEndNode: '必须添加结束节点',
needAnswerNode: '必须添加直接回复节点',
workflowProcess: '工作流',
notRunning: '尚未运行',
previewPlaceholder: '在下面的框中输入内容开始调试聊天机器人',
effectVarConfirm: {
title: '移除变量',
content: '该变量在其他节点中使用。您是否仍要删除它?',
},
insertVarTip: '按 \'/\' 键快速插入',
},
errorMsg: {
fieldRequired: '{{field}} 不能为空',
authRequired: '请先授权',
invalidJson: '{{field}} 是非法的 JSON',
fields: {
variable: '变量名',
variableValue: '变量值',
code: '代码',
model: '模型',
rerankModel: 'Rerank 模型',
},
invalidVariable: '无效的变量',
},
singleRun: {
testRun: '测试运行 ',
startRun: '开始运行',
running: '运行中',
},
tabs: {
'searchBlock': '搜索节点',
'blocks': '节点',
'builtInTool': '内置工具',
'customTool': '自定义工具',
'question-understand': '问题理解',
'logic': '逻辑',
'transform': '转换',
'utilities': '工具',
'noResult': '未找到匹配项',
},
blocks: {
'start': '开始',
'end': '结束',
'answer': '直接回复',
'llm': 'LLM',
'knowledge-retrieval': '知识检索',
'question-classifier': '问题分类器',
'if-else': '条件分支',
'code': '代码执行',
'template-transform': '模板转换',
'http-request': 'HTTP 请求',
'variable-assigner': '变量赋值',
},
blocksAbout: {
'start': '定义一个 workflow 流程启动的初始参数',
'end': '定义一个 workflow 流程的结束和结果类型',
'answer': '定义一个聊天对话的回复内容',
'llm': '调用大语言模型回答问题或者对自然语言进行处理',
'knowledge-retrieval': '允许你从知识库中查询与用户问题相关的文本内容',
'question-classifier': '定义用户问题的分类条件LLM 能够根据分类描述定义对话的进展方式',
'if-else': '允许你根据 if/else 条件将 workflow 拆分成两个分支',
'code': '执行一段 Python 或 NodeJS 代码实现自定义逻辑',
'template-transform': '使用 Jinja 模板语法将数据转换为字符串',
'http-request': '允许通过 HTTP 协议发送服务器请求',
'variable-assigner': '将不同分支中的变量指派给同一个变量,以实现后置节点统一配置',
},
operator: {
zoomIn: '放大',
zoomOut: '缩小',
zoomTo50: '缩放到 50%',
zoomTo100: '放大到 100%',
zoomToFit: '自适应视图',
},
panel: {
userInputField: '用户输入字段',
changeBlock: '更改节点',
helpLink: '帮助链接',
about: '关于',
createdBy: '作者',
nextStep: '下一步',
addNextStep: '添加此工作流程中的下一个节点',
selectNextStep: '选择下一个节点',
runThisStep: '运行此步骤',
checklist: '检查清单',
checklistTip: '发布前确保所有问题均已解决',
checklistResolved: '所有问题均已解决',
organizeBlocks: '整理节点',
change: '更改',
},
nodes: {
common: {
outputVars: '输出变量',
insertVarTip: '插入变量',
memory: {
memory: '记忆',
memoryTip: '聊天记忆设置',
windowSize: '记忆窗口',
conversationRoleName: '对话角色名',
user: '用户前缀',
assistant: '助手前缀',
},
memories: {
title: '记忆',
tip: '聊天记忆',
builtIn: '内置',
},
},
start: {
required: '必填',
inputField: '输入字段',
builtInVar: '内置变量',
outputVars: {
query: '用户输入',
memories: {
des: '会话历史',
type: '消息类型',
content: '消息内容',
},
files: '文件列表',
},
noVarTip: '设置的输入可在工作流程中使用',
},
end: {
outputs: '输出',
output: {
type: '输出类型',
variable: '输出变量',
},
type: {
'none': '无',
'plain-text': '纯文本',
'structured': '结构化',
},
},
answer: {
answer: '回复',
outputVars: '输出变量',
},
llm: {
model: '模型',
variables: '变量',
context: '上下文',
contextTooltip: '您可以导入知识库作为上下文',
notSetContextInPromptTip: '要启用上下文功能,请在提示中填写上下文变量。',
prompt: '提示词',
addMessage: '添加消息',
roleDescription: {
system: '为对话提供高层指导',
user: '向模型提供指令、查询或任何基于文本的输入',
assistant: '基于用户消息的模型回复',
},
vision: '视觉',
files: '文件',
resolution: {
name: '分辨率',
high: '高',
low: '低',
},
outputVars: {
output: '生成内容',
usage: '模型用量信息',
},
singleRun: {
variable: '变量',
},
},
knowledgeRetrieval: {
queryVariable: '查询变量',
knowledge: '知识库',
outputVars: {
output: '召回的分段',
content: '分段内容',
title: '分段标题',
icon: '分段图标',
url: '分段链接',
metadata: '其他元数据',
},
},
http: {
inputVars: '输入变量',
api: 'API',
apiPlaceholder: '输入 URL输入变量时请键入/',
notStartWithHttp: 'API 应该以 http:// 或 https:// 开头',
key: '键',
value: '值',
bulkEdit: '批量编辑',
keyValueEdit: '键值编辑',
headers: 'Headers',
params: 'Params',
body: 'Body',
outputVars: {
body: '响应内容',
statusCode: '响应状态码',
headers: '响应头列表 JSON',
files: '文件列表',
},
authorization: {
'authorization': '鉴权',
'authorizationType': '鉴权类型',
'no-auth': '无',
'api-key': 'API-Key',
'auth-type': 'API 鉴权类型',
'basic': '基础',
'bearer': 'Bearer',
'custom': '自定义',
'api-key-title': 'API Key',
'header': 'Header',
},
insertVarPlaceholder: '键入 \'/\' 键快速插入变量',
},
code: {
inputVars: '输入变量',
outputVars: '输出变量',
},
templateTransform: {
inputVars: '输入变量',
code: '代码',
codeSupportTip: '只支持 Jinja2',
outputVars: {
output: '转换后内容',
},
},
ifElse: {
if: 'If',
else: 'Else',
elseDescription: '用于定义当 if 条件不满足时应执行的逻辑。',
and: 'and',
or: 'or',
operator: '操作符',
notSetVariable: '请先设置变量',
comparisonOperator: {
'contains': '包含',
'not contains': '不包含',
'start with': '开始是',
'end with': '结束是',
'is': '是',
'is not': '不是',
'empty': '为空',
'not empty': '不为空',
'null': '空',
'not null': '不为空',
},
enterValue: '输入值',
addCondition: '添加条件',
conditionNotSetup: '条件未设置',
},
variableAssigner: {
title: '变量赋值',
outputType: '输出类型',
outputVarType: '输出变量类型',
varNotSet: '未设置变量',
noVarTip: '添加需要赋值的变量',
type: {
string: 'String',
number: 'Number',
object: 'Object',
array: 'Array',
},
outputVars: {
output: '指派的变量值',
},
},
tool: {
toAuthorize: '授权',
inputVars: '输入变量',
outputVars: {
text: '工具生成的内容',
files: {
title: '工具生成的文件',
type: '支持类型。现在只支持图片',
transfer_method: '传输方式。值为 remote_url 或 local_file',
url: '图片链接',
upload_file_id: '上传文件ID',
},
},
},
questionClassifiers: {
model: '模型',
inputVars: '输入变量',
class: '分类',
classNamePlaceholder: '输入你的分类名称',
advancedSetting: '高级设置',
topicName: '主题内容',
topicPlaceholder: '在这里输入你的主题内容',
addClass: '添加分类',
instruction: '指令',
instructionPlaceholder: '在这里输入你的指令',
},
},
tracing: {
stopBy: '由{{user}}终止',
},
}
export default translation