-
Notifications
You must be signed in to change notification settings - Fork 868
Expand file tree
/
Copy pathworkflow.ts
More file actions
1022 lines (1021 loc) · 43.1 KB
/
Copy pathworkflow.ts
File metadata and controls
1022 lines (1021 loc) · 43.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
const translation = {
nodes: {
startNode: {
type: 'Start Node',
},
endNode: {
type: 'End Node',
answerMode: 'Answer Mode',
returnParams: 'Return parameters, generated by workflow',
returnFormat: 'Return configured format answer',
thinkingContent: 'Thinking Content',
answerContent: 'Answer Content',
streamOutput: 'Stream Output',
templatePlaceholder:
'You can use {{variableName}}, {{variableName.subVariable}}, {{variableName[arrayIndex]}} to reference variables in output parameters',
},
largeModelNode: {
model: 'Model',
type: 'Large Model',
prompt: 'Prompt',
promptLibrary: 'Prompt Library',
systemPrompt: 'System Prompt',
userPrompt: 'User Prompt',
chatHistory: 'Chat History',
outputFormat: 'Output Format:',
systemPromptPlaceholder:
'Large model persona setting, combined with user input questions, define the type, scope, format, etc. of problems handled by the large model here, you can use {{variableName}} method for output',
userPromptPlaceholder:
'Large model persona setting, combined with user input questions, define the type, scope, format, etc. of problems handled by the large model here, you can use {{variableName}} method for output',
newVersionUpdate: 'New version update',
modelThinkingProcess: 'Model thinking process',
multimedia: 'Multimedia',
multimediaInputPlaceholder:
'Enter multimedia content or select from reference',
multimediaRefPlaceholder: 'Select multimedia content from other nodes',
multimediaNamePlaceholder: 'Parameter name',
noMultimediaInput: 'No multimedia input configured',
addMultimediaInput: 'Add multimedia input',
},
rpaNode: {
selectRpa: 'select RPA',
searchRobot: 'Search Robot',
parameters: 'Parameters',
add: 'Add',
noRobot: 'No Robot',
noRpaTool: 'No RPA tool, create one now~',
noMore: 'No more',
createRpa: 'Create RPA',
},
agentNode: {
type: 'Large Model',
prompt: 'Prompt',
chatHistory: 'Chat History',
mcpServerConfig: 'Enter MCP server configuration address',
invalidUrl: 'Please enter a valid URL',
systemPromptPlaceholder:
'System prompt, define the model\'s role and response style through instructions, such as "You are an operations copywriting expert who writes article content in a relaxed and humorous style."',
userPromptPlaceholder:
'Please enter your question or instruction, clearly let the model know what we want, such as "Write an article about Labor Day", you can reference corresponding parameter values by inserting {{parameterName}}, such as {{input}}.',
userQuery: 'User Query/Question (query)',
thinkingSteps: 'Thinking Steps',
thinkingStepsPlaceholder:
'Used to plan the model\'s thinking logic, if there are specific calling steps, we can give the model some suggestions as prompts, such as "Prioritize using certain tools".',
roleSetting: 'Role Setting',
maxLoopCount: 'Max Loop Count',
maxLoopCountTip: 'Maximum 100 loops supported',
newVersionUpdate: 'New version update',
agentStrategy: 'Agent Strategy',
pluginList: 'Plugin List',
addPlugin: 'Add Plugin',
plugin: 'Plugin',
knowledge: 'Knowledge',
mcp: 'MCP',
customMcpServerAddress: 'Custom MCP Server Address',
input: 'Input',
output: 'Output',
oneClickUpdate: 'One Click Update',
update: 'Update',
addAddress: 'Add Address',
promptLibrary: 'Prompt Library',
tool: 'Plugin',
knowledgeBase: 'Knowledge Base',
mcpServer: 'MCP',
},
toolNode: {
type: 'Tool',
addTool: 'Add Tool',
createTool: 'Create Tool',
myCreated: 'My Created',
officialTools: 'Official Tools',
mostPopular: 'Most Popular',
recentlyUsed: 'Recently Used',
tool: 'Tool',
publishTime: 'Publish Time',
publishedAt: 'Published at',
parameters: 'Parameters',
test: 'Test',
edit: 'Edit',
delete: 'Delete',
noPlugins: 'No plugins',
editPlugin: 'Edit Plugin',
fillBasicInfo: 'Fill Basic Info',
describePluginBrieflyNameRequestMethodAndAuthorization:
'Fill in plugin introduction, name, request method and authorization method',
addPlugin: 'Add Plugin',
configureInputOutputParametersOrSubmitPluginParametersByAddingYamlFile:
'Configure input and output parameters or submit plugin parameters by adding yaml file',
debugAndVerify: 'Debug and Verify',
debugAndVerifyPlugin: 'Debug and verify the plugin',
pluginName: 'Plugin Name',
pleaseEnterPluginName: 'Please enter plugin name',
pleaseEnter: 'Please enter',
pluginDescription: 'Plugin Description',
describePluginFunctionalityInNaturalLanguagePleaseProvideExamplesSuchAsThisPluginIsUsedToCompleteSpecificFunctionsForExampleHelpMeSendAnEmailToZhangSan:
"Describe the plugin's functionality in natural language, please provide examples such as: This plugin is used to complete specific functions. For example, help me send an email to Zhang San",
pleaseEnterPluginDescription: 'Please enter plugin description',
authorizationMethod: 'Authorization Method',
pleaseEnterAuthorizationMethod: 'Please enter authorization method',
noAuthorizationRequired: 'No Authorization Required',
youCanUseTheAPIWithoutAdditionalAuthorization:
'You can use the API without additional authorization',
service: 'Service',
youNeedToIncludeTheKeyInTheRequestHeaderOrQueryToGetAuthorization:
'You need to include the key in the request header (header) or query (query) to get authorization',
pluginPath: 'Plugin Path',
pleaseEnterPluginPath: 'Please enter plugin path',
pleaseEnterAValidURLFormat: 'Please enter a valid URL format',
position: 'Position',
headerRepresentsPassingTheKeyInTheRequestHeaderQueryRepresentsPassingTheKeyInTheQuery:
'Header represents passing the key in the request header, Query represents passing the key in the query',
pleaseEnterPosition: 'Please enter position',
header: 'Header',
query: 'Query',
parameterName: 'Parameter name',
parameterNameDescription:
'The parameter of the key, you need to pass the parameter name of the Service Token. Its role is to tell the API service in which parameter you will provide authorization information',
pleaseEnterParameterName: 'Please enter Parameter name',
serviceTokenAPlKey: 'Service token / APl key',
parameterValueDescription:
'The parameter value of the key, representing your identity or given service permissions. The API service will verify this Token to ensure you have the right to perform the corresponding operation',
pleaseEnterServiceTokenAPlKey: 'Please enter Service token / APl key',
requestMethod: 'Pass Method',
pleaseSelectRequestMethod: 'Please select request method',
pleaseSelect: 'Please select',
getMethod: 'Get Method',
postMethod: 'Post Method',
putMethod: 'Put Method',
deleteMethod: 'Delete Method',
patchMethod: 'Patch Method',
debugResult: 'Debug Result',
debug: 'Debug',
hold: 'Hold',
previousStep: 'Previous Step',
nextStep: 'Next Step',
save: 'Save',
publish: 'Publish',
parameterValidationFailed:
'Parameter validation failed, please check and try again',
pleaseEnterParameterDescription: 'Please enter parameter description',
requiredParametersNotFilled:
'There are unfilled required parameters, please check and try again',
debugPlugin: 'Debug Plugin',
pluginDetails: 'Plugin Details',
pluginParameters: 'Plugin Parameters',
inputParameters: 'Input Parameters',
outputParameters: 'Output Parameters',
pleaseEnterParameterValue: 'Please enter parameter value',
isRequired: 'Required',
yes: 'Yes',
no: 'No',
parameterValue: 'Parameter Value',
operation: 'Actions',
addSubItem: 'Add Sub Item',
parameterConfiguration: 'Parameter Configuration',
noData: 'No data',
configureInputParameters: 'Input Parameters',
enable: 'Enable',
enableDescription:
'hidden parameters cannot be seen by plugin user and model. And Hidden parameters with default values will be default option utilized by the Agent',
requiredParameterDefaultValueSwitch:
'This parameter is required, after filling in the default value, this switch is available',
pleaseEnterDefaultValue: 'Please enter default value',
configureOutputParameters: 'Output Parameters',
outputParameterEnableDescription:
'When set to invisible, this parameter will not be returned to the large model',
},
mcpNode: {
officalMcp: 'Official MCP',
},
knowledgeNode: {
type: 'Knowledge Base',
knowledgeBase: 'Knowledge Base',
parameterSetting: 'Parameter Setting',
addKnowledgeBase: 'Add Knowledge Base',
pleaseAddKnowledgeBase:
'Please add the knowledge base you need to use to this node',
},
knowledgeProNode: {
type: 'Knowledge Base Pro',
knowledgeBase: 'Knowledge Base',
parameterSetting: 'Parameter Setting',
addKnowledgeBase: 'Add Knowledge Base',
pleaseAddKnowledgeBase:
'Please add the knowledge base you need to use to this node',
answerRule: 'Answer Rule',
outputRequirementPlaceholder:
'If there are output requirement restrictions or special situation descriptions, please supplement here, for example: Answer the user\'s question, if no answer is found, please tell me directly "I don\'t know"',
input: 'Input',
output: 'Output',
parameterName: 'Parameter Name',
parameterValue: 'Parameter Value',
strategySelection: 'Strategy Selection',
parameterModal: {
topK: 'Top K',
topKDescription:
"Used to filter text fragments with the highest similarity to user questions. The system will also dynamically adjust the number of segments based on the selected model's context window size. When a question is decomposed, the final aggregated number of fragments is the set top k multiplied by the number of questions.",
topKExample:
'For example, if a question is decomposed into 3 sub-questions and set to recall 3 fragments, the final aggregation is 3x3=9 fragments.',
scoreThreshold: 'Score Threshold',
scoreThresholdDescription:
'Used to set the similarity threshold for text fragment filtering.',
},
},
textJoinerNode: {
type: 'Text Joiner',
joinRulePlaceholder:
'Enter the joining rule, reference defined variables using {{variableName}}, the node will join your input text and referenced variables for output',
selectSeparator: 'Please select separator',
rule: 'Rule',
separator: 'Separator',
customSeparator: 'Custom Separator',
stringConcatenation: 'String Concatenation',
stringSplitting: 'String Splitting',
input: 'Input',
output: 'Output',
},
messageNode: {
type: 'Message',
answerContent: 'Answer Content',
streamOutput: 'Stream Output',
formatPlaceholder:
'You can define the format of the returned result based on parameter names, for example using {{variableName}} method for output',
},
questionAnswerNode: {
nodeQuestionContent: 'Node Question Content',
userReplyOptions: 'User Reply Options',
userReplyOptionContent: 'User Reply Option Content',
userInvisible: 'User Invisible',
answerType: 'Answer Type',
type: 'Large Model',
largeModel: 'Large Model',
questionPlaceholder:
'Fill in the question to ask the user here, you can use {(variableName}} method for output',
input: 'Input',
questionContent: 'Question Content',
questionContentPlaceholder: 'No question content configured',
answerMode: 'Answer Mode',
directReply: 'Direct Reply',
optionReply: 'Option Reply',
setOptionContent: 'Set Option Content',
extractFieldsFromUserReply: 'Extract Fields from User Reply',
newVersionAvailable: 'New version available',
newVersionUpdate: 'New version update',
// OutputParams
variableName: 'Variable Name',
variableType: 'Parameters Type',
description: 'Description',
parameterExtraction: 'Parameter Extraction',
defaultValue: 'Default Value',
required: 'Required',
add: 'Add',
variableDescriptionPlaceholder:
"Please enter a description statement of the variable's function",
selectPlaceholder: 'Please select',
inputPlaceholder: 'Please enter',
isRequired: 'Required',
// FixedOptions
option: 'Option',
optionType: 'Option Type',
optionContent: 'Option Content',
contentPlaceholder:
'Please enter content, you can reference input parameters using {{variableName}} method',
addOption: 'Add Option',
other: 'Other',
otherOptionDescription:
"This option is not visible to users, when users don't answer, go to this branch",
// AnswerSettings
answerSettings: 'Answer Settings',
userMustAnswer: 'Must User Answer',
userMustAnswerTip:
'When set to require user answer, users must answer the question in the conversation interface to continue executing the workflow. When set to not require user answer, users can ignore the question and continue executing the workflow',
conversationTimeout: 'Conversation Timeout Setting',
conversationTimeoutTip:
'When staying on the answer question interface for more than the preset time, the workflow will terminate',
maxRetrySettings: 'Max Answer Count Setting',
maxRetrySettingsTip:
"Maximum number of times users are allowed to answer this question. When required key fields cannot be obtained from user's multiple answers, the workflow will terminate",
minute: 'min',
times: 'times',
// Node descriptions
questionContentDescription: "This node's question content",
userReplyOptionsDescription: 'User reply options',
userReplyOptionContentDescription: 'User reply option content',
userReplyContentDescription: 'User reply content',
},
decisionMakingNode: {
type: 'Decision',
chatHistory: 'Chat History',
intentNamePlaceholder: 'Please enter intent name',
intentDescriptionPlaceholder: 'Please enter intent description',
systemPromptPlaceholder:
'Define additional system prompts here to enhance the success rate of matching user input with intent, you can input more constraints, or provide more examples, etc., you can use {{variableName}] method for output',
intent: 'Intent',
intentDescription: 'Intent Description',
defaultIntent: 'Default Intent',
addIntentKeyword: 'Add Intent Keyword',
advancedConfiguration: 'Advanced Configuration',
newVersionUpdate: 'New version update',
input: 'Input',
intentNumber: 'Intent {{index}}',
output: 'Output',
// NodeTransformationModal
decisionNodeSwitch: 'Decision Node Switch',
switchConfirmMessage:
'After switching, you cannot revert to the old version. Are you sure you want to switch?',
confirm: 'Confirm',
cancel: 'Cancel',
},
ifElseNode: {
type: 'Branch',
branch: 'Branch',
addBranch: 'Add Branch',
else: 'Else',
if: 'If',
elseIf: 'Else If',
priority: 'Priority',
referenceVariable: 'Reference Variable',
selectCondition: 'Select Condition',
compareType: 'Compare Type',
compareValue: 'Compare Value',
and: 'And',
or: 'Or',
input: 'Input',
reference: 'Reference',
},
iteratorNode: {
type: 'Iterator',
input: 'Input',
output: 'Output',
iterationSubNodes: 'Iteration Sub Nodes',
runConfigTitle: 'Execution Mode',
runModeLabel: 'Execution Mode',
serialMode: 'Serial Mode',
parallelMode: 'Parallel Mode',
errorHandlingLabel: 'Error Handling Strategy',
errorHandlingOptions: {
failFast: 'Fail fast (stop on error)',
continue: 'Continue on error',
ignoreErrorOutput: 'Ignore error output',
},
maxConcurrencyLabel: 'Max Concurrency',
parallelModeNoQaInSubCanvas:
'Question-answer nodes cannot be added to the iterator sub-canvas in parallel mode',
cannotSwitchToParallelWithQa:
'Cannot switch to parallel mode while a question-answer node exists in the sub-canvas',
},
loopNode: {
type: 'Loop',
variables: 'Loop Variables',
addVariable: 'Add Variable',
termination: 'Termination',
maxLoopCount: 'Max Loop Count',
addCondition: 'Add Condition',
output: 'Output',
},
codeNode: {
type: 'Code',
code: 'Code',
viewCode: 'View',
editCode: 'Edit',
viewOrEditCode: 'View Code',
editOrViewCode: 'Edit Code',
readOnlyEditor: 'Read-only, click the edit code button to edit',
},
extractorParameterNode: {
type: 'Variable Extractor',
},
variableMemoryNode: {
type: 'Variable Memory',
variableMemory: 'Variable Memory',
setVariableValue: 'Set Variable Value',
getVariableValue: 'Get Variable Value',
input: 'Input',
output: 'Output',
parameterName: 'Parameter Name',
variableType: 'Parameters Type',
add: 'Add',
},
variableAggregationNode: {
type: 'Variable Aggregation',
output: 'Output',
candidates: 'Candidate Variables',
priority: 'Priority',
candidateLabel: 'Candidate {{index}}',
fallback: 'Fallback',
enableFallback: 'Use fallback value when all candidates are empty',
moveUp: 'Up',
moveDown: 'Down',
},
databaseNode: {
type: 'Database',
customSQL: 'Custom SQL',
formDataProcessing: 'Form Data Processing',
selectDatabase: 'Select Database:',
selectDataTable: 'Select Data Table:',
processingMode: 'Processing Mode:',
pleaseSelect: 'Please select',
addData: 'Add Data',
updateData: 'Update Data',
queryData: 'Query Data',
deleteData: 'Delete Data',
input: 'Input',
sql: 'SQL',
setAddData: 'Set Add Data',
setDataRange: 'Set Data Range',
setUpdateData: 'Set Update Data',
queryResultFields: 'Query Result Fields',
sort: 'Sort',
queryLimit: 'Query Limit',
output: 'Output',
executionResult: 'Execution Result',
sqlPlaceholder:
"Fill in SQL statements here, you can use {{variableName}} method for reference\nWhen using variables as SQL conditions:\nIf the content in the variable is a string, you need to add '' (e.g.: '{{xxxx}}');\nIf it's not a string, don't add '' (e.g.: {{xxxx}});\nSQL statement example:\nselect * from {{message}}\nwhere name='{{xxxx}}' and age={{xxxx}}",
getTableFieldsFailed: 'Failed to get table fields interface',
// AddDataInputs
parameterName: 'Parameter Name',
fieldType: 'Type',
fieldValue: 'Value',
literal: 'Input',
reference: 'Reference',
add: 'Add',
// CasesInputs
tableField: 'Table Field',
selectCondition: 'Select Condition',
compareType: 'Compare Type',
compareValue: 'Compare Value',
and: 'And',
or: 'Or',
pleaseEnter: 'Please enter',
syntaxError: 'Syntax error',
pleaseCheckType: 'Please check if the type is correct',
// InputParams
inputParameterName: 'Parameter Name',
inputFieldType: 'Type',
inputFieldValue: 'Value',
inputLiteral: 'Input',
inputReference: 'Reference',
inputAdd: 'Add',
image: 'Image',
// OutputDatabase
outputParameterName: 'Parameter Name',
outputFieldType: 'Type',
outputDescription: 'Description',
addSubItem: 'Add Sub Item',
// QueryField
queryParameterName: 'Parameter Name',
queryAdd: 'Add',
ascending: 'Ascending',
descending: 'Descending',
// Validation errors
valueCannotBeEmpty: 'Value cannot be empty',
modelCannotBeEmpty: 'Model cannot be empty',
},
flowNode: {
// 使用common中的input, output
},
common: {
back: 'Back',
undefined: 'Undefined',
selectPlaceholder: 'Please select',
inputPlaceholder: 'Please enter',
outputPlaceholder: 'Output',
input: 'Input',
output: 'Output',
reference: 'Reference',
add: 'Add',
parameterName: 'Parameter Name',
parameterValue: 'Parameter Value',
variableName: 'Variable Name',
variableType: 'Parameters Type',
description: 'Description',
referenceVariable: 'Reference Variable',
addBranch: 'Add Branch',
addOption: 'Add Option',
addIntentKeyword: 'Add Intent Keyword',
intentDescription: 'Intent Description',
addPlugin: 'Add Plugin',
addAddress: 'Add Address',
inputTest: 'Input Test',
outputResult: 'Output Result',
maxAddWarning: 'Maximum 30 plugins or MCPs can be added!',
pluginLimitTip:
'Support selecting and adding multiple plugins or MCPs from the published list, up to 30 items.',
mcpServerTip: 'Support custom MCP server addresses, up to 3',
knowledgeTypeTip:
'Knowledge base nodes only support adding files of the same type',
variableDescriptionPlaceholder:
"Please enter a description statement of the variable's function",
contentPlaceholder:
'Please enter content, you can reference input parameters using {{variableName}} method',
required: 'Required',
addSubItem: 'Add Sub Item',
startEndNodeDeleteWarning: 'Start and end nodes cannot be deleted!',
fixedNodes: 'Fixed Nodes',
confirmUpdate:
'Confirm to update to the current latest published version?',
addNote: 'Add comment',
showNote: 'Show comment',
hideNote: 'Hide comment',
createCopy: 'Create a copy',
deleteNode: 'Delete node',
testNode: 'Test this node',
rename: 'Rename',
manuallyAdd: 'Manually Add',
jsonExtract: 'JSON Parameter Extraction',
jsonError: 'Invalid JSON format',
confirm: 'Confirm',
cancel: 'Cancel',
},
modelSelect: {
answerMode: 'Answer Mode',
selectMoreModels: 'Select More Models',
modelThinkingProcess: 'Model Thinking Process',
modelParamsSettings: 'Model Parameters Settings',
modelOffShelf:
'The model has been discontinued, please switch to another model',
modelOffShelfTip:
'The model will be discontinued on {{time}}, please switch to another model to avoid affecting normal use!',
willOffShelf: 'Will be discontinued',
offShelf: 'Discontinued',
},
header: {
previewing: 'Previewing',
editing: 'Editing',
autoSaved: 'Auto Saved',
testRunning: 'Test Running',
runCompleted: 'Run Completed',
runFailed: 'Run Failed',
arrange: 'Orchestration',
analysis: 'Analysis',
chat: 'Chat',
export: 'Export',
comparativeDebugging: 'Comparative Debugging',
versionHistory: 'Version History',
advancedConfiguration: 'Advanced Configuration',
traceLogs: 'Trace Logs',
debug: 'Debug',
publish: 'Publish',
updatePublish: 'Update & Publish',
debugBeforePublish: 'Debug before publishing',
debugBeforePublishDesc:
'Debugging is required before publishing to ensure the workflow runs properly.',
notAllowed:
'The current workflow is under evaluation and editing is not allowed.',
first: 'If you need to edit the current workflow, you can first ',
stop: 'stop the current evaluation task',
notAllowedPrompt:
'The current prompt word is under evaluation and cannot be edited.',
firstPrompt:
'If you need to edit the current prompt word, you can first ',
},
multipleCanvasesTip: {
continueEditingInCurrentWindow: 'Continue editing in current window',
confirm: 'Confirm',
cancel: 'Cancel',
multipleWindowsTip:
'You have opened this page in another window. Do you want to continue editing in the current window?',
continueEditing: 'Continue Editing',
},
outputParams: {
// 使用common中的parameterName, variableName, parameterValue, variableType, description, add, variableDescriptionPlaceholder
required: 'Required',
addSubItem: 'Add Sub Item',
},
inputParams: {
// 使用common中的parameterName, parameterValue, input, reference, add
},
operationResult: {
errorNodes: 'Error Nodes',
rerun: 'Rerun',
errorChildNodes: 'Error Child Nodes:',
},
flowChatResult: {
runResult: 'Run Result',
collapse: 'Collapse',
input: 'Input',
rawOutput: 'Raw Output',
output: 'Output',
answerContent: 'Answer Content',
noRunResult: 'No run result',
copySuccess: 'Copy successful',
},
flow: {
intentNumbers: [
'One',
'Two',
'Three',
'Four',
'Five',
'Six',
'Seven',
'Eight',
'Nine',
'Ten',
],
nodeValidationFailed:
'Node validation failed, please check for empty values or naming rule violations',
defaultIntentUnconnected: 'Default intent has unconnected edges',
intentUnconnected: 'Intent {{number}} has unconnected edges',
conditionUnconnected: '{{condition}} has unconnected edges',
nodeUnconnected: 'This node has unconnected edges',
cycleDependencyDetected: 'Cycle dependency detected (loop)',
nodeValidationFailedUnconnected:
'Node validation failed, has unconnected edges',
childNodesUnsatisfied: 'Child nodes contain unsatisfied requirements',
ifCondition: 'If',
elseIfCondition: 'Else if (priority {{level}})',
elseCondition: 'Else',
optionCondition: 'Option {{name}}',
otherOptionCondition: 'Other option',
// Additional keys for the code
defaultIntentNotConnected: 'Default intent has unconnected edges',
intentNotConnected: 'Intent {{intentNumber}} has unconnected edges',
edgeNotConnected: ' has unconnected edges',
nodeNotConnected: 'This node has unconnected edges',
cycleDependency: 'Cycle dependency detected (loop)',
nodeNotSatisfied:
'Node validation failed, please check for empty values or naming rule violations',
subNodeNotSatisfied: 'Child nodes contain unsatisfied requirements',
if: 'If',
elseIf: 'Else if (priority {{priority}})',
else: 'Else',
option: 'Option {{optionName}}',
otherOption: 'Other option',
},
selectPrompt: {
title: 'Select Prompt',
myTab: 'My',
officialTab: 'Official',
searchPlaceholder: 'Please enter',
createNewPrompt: 'Create New Prompt',
publishedAt: 'Published at',
parameters: 'Parameters',
add: 'Add',
noTemplates: 'No templates',
modelThinkingProcess: 'Model thinking process',
},
codeIDEA: {
language: 'Language',
pythonPackages: 'Currently supports 300+ Python packages',
viewDetails: 'View Details',
aiCode: 'AI Code',
generating: 'Generating',
aiThinking: 'AI Thinking',
inputPlaceholder: 'Please enter',
accept: 'Accept',
reject: 'Reject',
send: 'Send',
inputTest: 'Input Test',
autoGenerate: 'Auto Generate',
run: 'Run',
outputResult: 'Output Result',
runSuccess: 'Run Success',
toolInputMustBeJson: 'Tool input must be a JSON string',
aiDescriptionRequired: 'AI generated description is required',
},
parameterModal: {
topK: 'Top K',
topKDescription:
"Used to filter text fragments with the highest similarity to user questions. The system will also dynamically adjust the number of segments based on the selected model's context window size.",
scoreThreshold: 'Score Threshold',
scoreThresholdDescription:
'Used to set the similarity threshold for text fragment filtering.',
rerankModelId: 'Rerank model ID',
rerankModelIdDescription:
'Optional. Enter a rerank model ID configured in RAGFlow. Leave it empty to keep the current retrieval behavior.',
rerankModelIdPlaceholder: 'Enter a rerank model ID',
},
relatedKnowledgeModal: {
title: 'Select Knowledge Base',
versionSelection: 'Version Selection',
xingchen: 'Astra',
xingpu: 'Spark',
personal: 'Individual Edition',
createTime: 'Create Time',
updateTime: 'Update Time',
searchPlaceholder: 'Please enter',
createNewKnowledge: 'Create New Knowledge Base',
knowledgeTypeTip:
'Knowledge base nodes only support adding files of the same type',
remove: 'Remove',
add: 'Add',
createTimePrefix: 'Create Time: ',
updateTimePrefix: 'Update Time: ',
noDocuments: 'No Documents',
},
validation: {
valueCannotBeEmpty: 'Value cannot be empty',
valueCannotBeRepeated: 'Value cannot be repeated',
pleaseEnterValidURL: 'Please enter a valid URL format',
variableMemoryNamingConflict: 'Variable memory naming conflict',
canOnlyContainLettersNumbersHyphensOrUnderscores:
'Can only contain letters, numbers, hyphens or underscores, and must start with a letter or underscore',
canOnlyContainLettersNumbersOrUnderscores:
'Can only contain letters, numbers or underscores, and must start with a letter or underscore',
knowledgeCannotBeEmpty: 'Knowledge cannot be empty',
codeCannotBeEmpty: 'Code cannot be empty',
separatorCannotBeEmpty: 'Separator cannot be empty',
invalidJSONFormat: 'Invalid JSON format',
variableAggregationTypeMismatch:
'Candidate variable type must match the output type',
variableAggregationFallbackInvalid:
'Fallback value does not match the selected output type',
},
addFlow: {
selectWorkflow: 'Select Workflow',
myCreated: 'My Created',
officialWorkflow: 'Official Workflow',
createTime: 'Create Time',
updateTime: 'Update Time',
pleaseEnter: 'Please enter',
createNewWorkflow: 'Create New Workflow',
add: 'Add',
copyAndAdd: 'Copy and Add',
noWorkflow: 'No workflow',
},
mcpDetail: {
activateMcpServiceToTest: 'Activate MCP service to test',
activateMcpService: 'Activate MCP Service',
confirmActivate: 'Confirm Activation',
},
chatDebugger: {
dialogue: 'Debug and Preview',
runResult: 'Run Result',
keepOnly10DialogueRecords: 'Currently only keeps 10 debug records',
multiParamWorkflowOnlySupportDebugAndPublishAsAPI:
'Multi-parameter workflows only support debugging and publishing as API, no user dialogue page',
switchToUserDialoguePage: 'User Dialogue Page Preview',
clearDialogue: 'Clear Dialogue',
send: 'Send',
userIgnoredQuestion: 'User ignored this question',
userCurrentRoundInput: 'User current round dialogue input content',
workflowTerminated: 'Workflow terminated',
workflowConnectionInterrupted:
'Workflow connection interrupted. Try again.',
startNewConversation: 'Start New Conversation',
deepThinking: 'Deep Thinking',
generating: 'Generating',
ignoreThisQuestion: 'Ignore This Question',
endThisRoundConversation: 'End This Round Conversation',
regenerate: 'Regenerate',
tryFlow: 'Try Flow',
confirmDeleteAllDialogue: 'Confirm to delete and clear all dialogue?',
versionNotPublished: 'Version not published',
virtualLoading: 'Loading',
},
flowModal: {
createWorkflow: 'Create Workflow',
workflowName: 'Workflow Name',
workflowDescription: 'Workflow Description',
workflowDescriptionTip:
"The following text will be displayed in the client to explain the application's functionality to users and provide basic guidance.",
workflowCategory: 'Workflow Category',
submit: 'Submit',
confirmDeleteWorkflow: 'Confirm to delete workflow?',
delete: 'Delete',
editWorkflow: 'Edit Workflow',
flowId: 'FlowID',
copySuccess: 'Copy successful',
},
},
advancedConfiguration: {
title: 'Advanced Configuration',
subtitle: 'Enhance User Experience',
conversationStarter: 'Conversation Starter',
conversationStarterDescription:
'In conversational applications, let the AI application actively say the first paragraph, such as greeting, which can bring users closer.',
aiGenerate: 'AI Generate',
openingRemarksPlaceholder: 'Please enter opening remarks',
openingRemarksPresetQuestions: 'Opening Remarks Preset Questions',
add: 'Add',
presetQuestionPlaceholder: 'Please enter opening remarks preset question',
nextQuestionSuggestion: 'Next Question Suggestion',
nextQuestionSuggestionDescription:
'When enabled, you can generate guided conversations after the conversation ends to help users have better conversations.',
speechToText: 'Speech to Text',
speechToTextDescription: 'When enabled, you can support voice input.',
likeAndDislike: 'Like and Dislike',
likeAndDislikeDescription:
'When enabled, you can support users to like or dislike AI-generated answers and other operations to help applications better serve users.',
characterVoice: 'Character Voice',
characterVoiceDescription:
'You can have voice conversations with the workflow, please select a voice for the workflow.',
pleaseSelect: 'Please select',
setBackground: 'Set Background',
setBackgroundDescription:
'Enable this feature to set a background image for the conversation interface.',
dragFileHere: 'Drag files here, or',
selectFile: 'select file',
fileFormatTip:
'File format is png, jpg, jpeg, file size does not exceed 5M',
uploadFileSizeError: 'Upload file size cannot exceed 5M!',
uploadFileFormatError: 'Please upload png, jpg, jpeg format files!',
},
versionManagement: {
title: 'Version and Issue Tracking',
versionRecord: 'Version Record',
feedbackRecord: 'Feedback Record',
draftVersion: 'Draft Version',
restoredFrom: 'Restored from',
version: 'Version: ',
versionId: 'Version ID: ',
publishTime: 'Publish Time: ',
publishResult: 'Publish Result',
previewDebug: 'Preview Debug',
restoreThisVersion: 'Restore This Version',
publishResultTitle: 'Publish Result',
versionDescription: 'Version Description',
publishPlatform: 'Publish Platform',
noPublishRecord: 'No publish record',
publishSuccess: 'Publish Success',
publishing: 'In Release',
publishFailed: 'Publish Failed',
unknownPlatform: 'Unknown Platform',
iflytekVoicePlatform: 'iFlytek Voice Platform',
iflytekCloudPlatform: 'iFlytek Cloud Open Platform',
wechatOfficialAccount: 'WeChat Official Account',
mcpPlatform: 'MCP Platform',
questionId: 'Question ID: ',
detail: 'Detail',
},
promptDebugger: {
success: 'Success',
failed: 'Failed',
cancel: 'Cancel',
running: 'Running',
debugNode: 'Debug Node',
debugPreview: 'Debug Preview',
nodeInfoChanged:
'Due to changes in {{nodeNames}} node information, all control groups need to reset this node information',
addControlGroup: 'Add Control Group ({{count}}/4)',
clearHistoryRecords: 'Clear History Records',
benchmarkGroup: 'Benchmark Group',
controlGroup: 'Control Group',
copyBenchmarkData: 'Copy Benchmark Data',
viewCanvasInfo: 'View Canvas Info',
setAsBenchmark: 'Set as Benchmark',
expandAllNodeInfo: 'Expand All Node Info (Collapse All Node Info)',
pleaseUploadAttachment: 'Please upload attachment',
pleaseEnterContent: 'Please enter content',
pleaseCheckModelParameterConfiguration:
'Please check model parameter configuration',
fileUrl: 'File URL',
enterContentHere: 'Enter content here',
debugResult: 'Debug Result',
finalAnswer: 'Final Answer',
viewDetails: 'View Details',
viewAllControlGroupDetails: 'View All Control Group Details',
// Header component translations
checkBaseGroupData: 'Please check base group data',
saveToDraftConfirm:
'The benchmark group information will be saved to the workflow draft version, replacing the original information. Are you sure?',
confirm: 'Confirm',
saveSuccess: 'Save successful',
comparativeDebugging: 'Comparative Debugging',
autoSaved: 'Auto saved',
apply: 'Apply',
// ModelConfigItem component translations
referenceVariables: 'Reference Variables:',
model: 'Model:',
pleaseSelectModel: 'Please select model',
// ModelDetailItem component translations
iterationNumber: '{{number}}th time:',
// DebuggerContent component translations
startNewConversation: 'Start New Conversation',
ignoreThisQuestion: 'Ignore This Question',
endThisRoundConversation: 'End This Round Conversation',
// FeedbackDialog component translations
feedbackDetail: 'Feedback Detail',
oneClickFeedback: 'One-Click Feedback',
problemId: 'Problem ID: ',
createTime: 'Create Time: ',
feedbackContent: 'Feedback Content',
pleaseEnterFeedbackContent: 'Please enter feedback content',
feedbackContentMaxLength: 'Feedback content cannot exceed 1000 characters',
feedbackPlaceholder:
'For accurate problem understanding, please describe in detail and attach screenshots of agent configuration information for efficient problem resolution.',
uploadImage: 'Upload Image',
dragFileHereOr: 'Drag files here, or',
selectFile: 'Select File',
supportUploadFormat:
'Supports uploading JPG and PNG format files, limited to 10 images only',
maxUploadImages: 'Maximum 10 images can be uploaded',
onlySupportJpgPng: 'Only supports uploading JPG/PNG format images!',
// NodeDebugging component translations
timeCost: 'Time Cost: ',
totalTokens: 'Total Tokens: ',
expand: 'Expand',
collapse: 'Collapse',
runResult: 'Run Result',
chatHistoryTokenLimit:
'When chat history tokens reach the limit, the system automatically removes the earliest conversation rounds.',
reasoningContent: 'Reasoning Content',
answerContent: 'Answer Content',
errorMessage: 'Error Message',
warning: 'Warning',
// WorkflowImportModal component translations
importWorkflow: 'Import Workflow',
uploadFileSizeExceeded: 'Upload file size cannot exceed 20M!',
pleaseUploadYmlYamlFormat: 'Please upload yml, yaml format files!',
fileFormatYmlYaml:
'File format is yml, yaml, file size does not exceed 20M',
// AddTool component translations
updateConfig: 'Update Config',
// FlowOperatorPanel component translations
locateInitialNode: 'Locate Initial Node',
clearCanvas: 'Clear Canvas',
restoreToOnlineVersion: 'Restore to Online Version',
createCopy: 'Create Copy',
viewThumbnail: 'View Thumbnail',
adaptiveView: 'Adaptive View',
optimizeLayout: 'Optimize Layout',
switchToPolyline: 'Switch to Polyline',
switchToCurve: 'Switch to Curve',
undo: 'Undo Ctrl+z',
expandAllNodes: 'Expand All Nodes',
collapseAllNodes: 'Collapse All Nodes',
switchToFollowMode: 'Switch to Follow Mode',
switchToAutonomousMode: 'Switch to Autonomous Mode',
helpDocument: 'Help Document',
beginnerGuide:
'Not sure how to do it? Learn from the beginner documentation first',
// DeleteModal component translations
confirmClearCanvas: 'Confirm Clear Canvas?',
canvasClearDescription:
'After clearing the canvas, it will return to an empty canvas state. Start and end nodes will be restored to their initial state, and all other nodes will be deleted.',
// ParameterModal component translations
scoreThresholdLabel: 'Score Threshold',
scoreThresholdDescription:
'Select paragraphs to return to the large model based on the set matching degree. Content below the set matching degree will not be recalled.',
// NodeOperation component translations
nodeValidationWarning:
'Node has unfilled fields or variable naming does not meet specifications!',
// SelectAgentPrompt component translations
promptLibraryTitle: 'Prompt Library',
adaptationModel: 'Adaptation Model:',
roleSettingLabel: '#Role Setting:',
thinkingStepsLabel: '#Thinking Steps:',
userQueryLabel: '#User Query/Question:',
// FlowOperatorPanel component translations
mouseFriendlyMode: 'Mouse Friendly Mode',
touchFriendlyMode: 'Touch Friendly Mode',
mouseFriendlyModeDescription:
'Mouse left-click to drag the canvas, scroll with the mouse wheel',
touchFriendlyModeDescription:
'Two fingers move in the same direction to drag the canvas, and pinch with two fingers to zoom',
},
// ExceptionHandling component translations
exceptionHandling: {
title: 'Exception Handling',
tooltip:
'You can set exception handling, including timeout, retry, and exception handling methods. After enabling stream output, once data output starts, even if an exception occurs, it cannot be retried or jump to exception branch.',
timeout: 'Timeout',
timeoutTooltip:
'Timeout refers to the maximum time consumption for node operation. If it exceeds this duration, it will be judged as node operation timeout. By default, the node timeout is 60s, that is, 1 minute. You can also change it to 0.1s~120s to flexibly control the timeout.',
retryTimes: 'Retry Times',
exceptionHandlingMethod: 'Exception Handling Method',
retryOptions: {
noRetry: 'No Retry',
retry1Time: 'Retry 1 Time',
retry2Times: 'Retry 2 Times',
retry3Times: 'Retry 3 Times',
retry4Times: 'Retry 4 Times',
retry5Times: 'Retry 5 Times',
},
exceptionMethods: {
interruptFlow: {
label: 'Interrupt Flow',
description:
'After an exception occurs, the flow execution is interrupted. Exception information will be displayed on the node card or returned through the call result.',
},
returnSetContent: {
label: 'Return Set Content',
description:
'After an exception occurs, the flow will not be interrupted. Exception information will be returned through errorCode and errorMessage. Developers can set the content that needs to be returned.',
},
executeExceptionFlow: {
label: 'Execute Exception Flow',
description:
'After an exception occurs, the flow will not be interrupted. Exception information will be returned through errorCode and errorMessage, and an exception branch will be added. Developers need to complete the exception handling flow before running the flow.',