834 lines
31 KiB
Go
834 lines
31 KiB
Go
/*
|
||
|
||
* Copyright 2025 coze-dev Authors
|
||
*
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
|
||
package entity
|
||
|
||
import (
|
||
"fmt"
|
||
"strconv"
|
||
)
|
||
|
||
type NodeType string
|
||
|
||
func (nt NodeType) IDStr() string {
|
||
m := NodeMetaByNodeType(nt)
|
||
if m == nil {
|
||
return ""
|
||
}
|
||
return fmt.Sprintf("%d", m.ID)
|
||
}
|
||
|
||
func IDStrToNodeType(s string) NodeType {
|
||
id, err := strconv.ParseInt(s, 10, 64)
|
||
if err != nil {
|
||
return ""
|
||
}
|
||
for _, m := range NodeTypeMetas {
|
||
if m.ID == id {
|
||
return m.Key
|
||
}
|
||
}
|
||
return ""
|
||
}
|
||
|
||
type NodeTypeMeta struct {
|
||
ID int64
|
||
Key NodeType
|
||
DisplayKey string
|
||
Name string `json:"name"`
|
||
Category string `json:"category"`
|
||
Color string `json:"color"`
|
||
Desc string `json:"desc"`
|
||
IconURL string `json:"icon_url"`
|
||
SupportBatch bool `json:"support_batch"`
|
||
Disabled bool `json:"disabled,omitempty"`
|
||
EnUSName string `json:"en_us_name,omitempty"`
|
||
EnUSDescription string `json:"en_us_description,omitempty"`
|
||
|
||
ExecutableMeta
|
||
}
|
||
|
||
func (ntm *NodeTypeMeta) GetDisplayKey() string {
|
||
if len(ntm.DisplayKey) > 0 {
|
||
return ntm.DisplayKey
|
||
}
|
||
|
||
return string(ntm.Key)
|
||
}
|
||
|
||
type Category struct {
|
||
Key string `json:"key"`
|
||
Name string `json:"name"`
|
||
EnUSName string `json:"en_us_name"`
|
||
}
|
||
|
||
type ExecutableMeta struct {
|
||
IsComposite bool `json:"is_composite,omitempty"`
|
||
DefaultTimeoutMS int64 `json:"default_timeout_ms,omitempty"` // default timeout in milliseconds, 0 means no timeout
|
||
PreFillZero bool `json:"pre_fill_zero,omitempty"`
|
||
PostFillNil bool `json:"post_fill_nil,omitempty"`
|
||
MayUseChatModel bool `json:"may_use_chat_model,omitempty"`
|
||
InputSourceAware bool `json:"input_source_aware,omitempty"` // whether this node needs to know the runtime status of its input sources
|
||
StreamSourceEOFAware bool `json:"needs_stream_source_eof,omitempty"` // whether this node needs to be aware stream sources' SourceEOF error
|
||
|
||
// IncrementalOutput indicates that the node's output is intended for progressive, user-facing streaming.
|
||
// This distinguishes nodes that actually stream text to the user (e.g., 'Exit', 'Output')
|
||
//from those that are merely capable of streaming internally (defined by StreamingParadigms),
|
||
// In essence, nodes with IncrementalOutput are a subset of those defined in StreamingParadigms.
|
||
// When set to true, stream chunks from the node are persisted in real-time and can be fetched by get_process.
|
||
IncrementalOutput bool `json:"incremental_output,omitempty"`
|
||
|
||
// UseCtxCache indicates that the node would require a newly initialized ctx cache for each invocation.
|
||
// example use cases:
|
||
// - write warnings to the ctx cache during Invoke, and read from the ctx within Callback output converter
|
||
UseCtxCache bool `json:"use_ctx_cache"`
|
||
}
|
||
|
||
type PluginNodeMeta struct {
|
||
PluginID int64 `json:"plugin_id"`
|
||
NodeType NodeType `json:"node_type"`
|
||
Category string `json:"category"`
|
||
ApiID int64 `json:"api_id"`
|
||
ApiName string `json:"api_name"`
|
||
Name string `json:"name"`
|
||
Desc string `json:"desc"`
|
||
IconURL string `json:"icon_url"`
|
||
}
|
||
|
||
type PluginCategoryMeta struct {
|
||
PluginCategoryMeta int64 `json:"plugin_category_meta"`
|
||
NodeType NodeType `json:"node_type"`
|
||
Category string `json:"category"`
|
||
Name string `json:"name"`
|
||
OnlyOfficial bool `json:"only_official"`
|
||
IconURL string `json:"icon_url"`
|
||
}
|
||
|
||
const (
|
||
NodeTypeVariableAggregator NodeType = "VariableAggregator"
|
||
NodeTypeIntentDetector NodeType = "IntentDetector"
|
||
NodeTypeTextProcessor NodeType = "TextProcessor"
|
||
NodeTypeHTTPRequester NodeType = "HTTPRequester"
|
||
NodeTypeLoop NodeType = "Loop"
|
||
NodeTypeContinue NodeType = "Continue"
|
||
NodeTypeBreak NodeType = "Break"
|
||
NodeTypeVariableAssigner NodeType = "VariableAssigner"
|
||
NodeTypeVariableAssignerWithinLoop NodeType = "VariableAssignerWithinLoop"
|
||
NodeTypeQuestionAnswer NodeType = "QuestionAnswer"
|
||
NodeTypeInputReceiver NodeType = "InputReceiver"
|
||
NodeTypeOutputEmitter NodeType = "OutputEmitter"
|
||
NodeTypeDatabaseCustomSQL NodeType = "DatabaseCustomSQL"
|
||
NodeTypeDatabaseQuery NodeType = "DatabaseQuery"
|
||
NodeTypeDatabaseInsert NodeType = "DatabaseInsert"
|
||
NodeTypeDatabaseDelete NodeType = "DatabaseDelete"
|
||
NodeTypeDatabaseUpdate NodeType = "DatabaseUpdate"
|
||
NodeTypeKnowledgeIndexer NodeType = "KnowledgeIndexer"
|
||
NodeTypeKnowledgeRetriever NodeType = "KnowledgeRetriever"
|
||
NodeTypeKnowledgeDeleter NodeType = "KnowledgeDeleter"
|
||
NodeTypeEntry NodeType = "Entry"
|
||
NodeTypeExit NodeType = "Exit"
|
||
NodeTypeCodeRunner NodeType = "CodeRunner"
|
||
NodeTypePlugin NodeType = "Plugin"
|
||
NodeTypeCreateConversation NodeType = "CreateConversation"
|
||
NodeTypeMessageList NodeType = "MessageList"
|
||
NodeTypeClearMessage NodeType = "ClearMessage"
|
||
NodeTypeLambda NodeType = "Lambda"
|
||
NodeTypeLLM NodeType = "LLM"
|
||
NodeTypeSelector NodeType = "Selector"
|
||
NodeTypeBatch NodeType = "Batch"
|
||
NodeTypeSubWorkflow NodeType = "SubWorkflow"
|
||
NodeTypeJsonSerialization NodeType = "JsonSerialization"
|
||
NodeTypeJsonDeserialization NodeType = "JsonDeserialization"
|
||
NodeTypeComment NodeType = "Comment"
|
||
)
|
||
|
||
const (
|
||
EntryNodeKey = "100001"
|
||
ExitNodeKey = "900001"
|
||
)
|
||
|
||
var Categories = []Category{
|
||
{
|
||
Key: "", // this is the default category. some of the most important nodes belong here, such as LLM, plugin, sub-workflow
|
||
Name: "",
|
||
EnUSName: "",
|
||
},
|
||
{
|
||
Key: "logic",
|
||
Name: "业务逻辑",
|
||
EnUSName: "Logic",
|
||
},
|
||
{
|
||
Key: "input&output",
|
||
Name: "输入&输出",
|
||
EnUSName: "Input&Output",
|
||
},
|
||
{
|
||
Key: "database",
|
||
Name: "数据库",
|
||
EnUSName: "Database",
|
||
},
|
||
{
|
||
Key: "data",
|
||
Name: "知识库&数据",
|
||
EnUSName: "Data",
|
||
},
|
||
{
|
||
Key: "image",
|
||
Name: "图像处理",
|
||
EnUSName: "Image",
|
||
},
|
||
{
|
||
Key: "audio&video",
|
||
Name: "音视频处理",
|
||
EnUSName: "Audio&Video",
|
||
},
|
||
{
|
||
Key: "utilities",
|
||
Name: "组件",
|
||
EnUSName: "Utilities",
|
||
},
|
||
{
|
||
Key: "conversation_management",
|
||
Name: "会话管理",
|
||
EnUSName: "Conversation management",
|
||
},
|
||
{
|
||
Key: "conversation_history",
|
||
Name: "会话历史",
|
||
EnUSName: "Conversation history",
|
||
},
|
||
{
|
||
Key: "message",
|
||
Name: "消息",
|
||
EnUSName: "Message",
|
||
},
|
||
}
|
||
|
||
// NodeTypeMetas holds the metadata for all available node types.
|
||
// It is initialized with built-in node types and potentially extended by loading from external sources.
|
||
var NodeTypeMetas = map[NodeType]*NodeTypeMeta{
|
||
NodeTypeEntry: {
|
||
ID: 1,
|
||
Key: NodeTypeEntry,
|
||
DisplayKey: "Start",
|
||
Name: "开始",
|
||
Category: "input&output",
|
||
Desc: "工作流的起始节点,用于设定启动工作流需要的信息",
|
||
Color: "#5C62FF",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Start-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "Start",
|
||
EnUSDescription: "The starting node of the workflow, used to set the information needed to initiate the workflow.",
|
||
},
|
||
NodeTypeExit: {
|
||
ID: 2,
|
||
Key: NodeTypeExit,
|
||
DisplayKey: "End",
|
||
Name: "结束",
|
||
Category: "input&output",
|
||
Desc: "工作流的最终节点,用于返回工作流运行后的结果信息",
|
||
Color: "#5C62FF",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-End-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
InputSourceAware: true,
|
||
StreamSourceEOFAware: true,
|
||
IncrementalOutput: true,
|
||
},
|
||
EnUSName: "End",
|
||
EnUSDescription: "The final node of the workflow, used to return the result information after the workflow runs.",
|
||
},
|
||
NodeTypeLLM: {
|
||
ID: 3,
|
||
Key: NodeTypeLLM,
|
||
DisplayKey: "LLM",
|
||
Name: "大模型",
|
||
Category: "",
|
||
Desc: "调用大语言模型,使用变量和提示词生成回复",
|
||
Color: "#5C62FF",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-LLM-v2.jpg",
|
||
SupportBatch: true,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
InputSourceAware: true,
|
||
MayUseChatModel: true,
|
||
},
|
||
EnUSName: "LLM",
|
||
EnUSDescription: "Invoke the large language model, generate responses using variables and prompt words.",
|
||
},
|
||
NodeTypePlugin: {
|
||
ID: 4,
|
||
Key: NodeTypePlugin,
|
||
DisplayKey: "Api",
|
||
Name: "插件",
|
||
Category: "",
|
||
Desc: "通过添加工具访问实时数据和执行外部操作",
|
||
Color: "#CA61FF",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Plugin-v2.jpg",
|
||
SupportBatch: true,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "Plugin",
|
||
EnUSDescription: "Used to access external real-time data and perform operations",
|
||
},
|
||
NodeTypeCodeRunner: {
|
||
ID: 5,
|
||
Key: NodeTypeCodeRunner,
|
||
DisplayKey: "Code",
|
||
Name: "代码",
|
||
Category: "logic",
|
||
Desc: "编写代码,处理输入变量来生成返回值",
|
||
Color: "#00B2B2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Code-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
UseCtxCache: true,
|
||
},
|
||
EnUSName: "Code",
|
||
EnUSDescription: "Write code to process input variables to generate return values.",
|
||
},
|
||
NodeTypeKnowledgeRetriever: {
|
||
ID: 6,
|
||
Key: NodeTypeKnowledgeRetriever,
|
||
DisplayKey: "Dataset",
|
||
Name: "知识库检索",
|
||
Category: "data",
|
||
Desc: "在选定的知识中,根据输入变量召回最匹配的信息,并以列表形式返回",
|
||
Color: "#FF811A",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-KnowledgeQuery-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "Knowledge retrieval",
|
||
EnUSDescription: "In the selected knowledge, the best matching information is recalled based on the input variable and returned as an Array.",
|
||
},
|
||
NodeTypeSelector: {
|
||
ID: 8,
|
||
Key: NodeTypeSelector,
|
||
DisplayKey: "If",
|
||
Name: "选择器",
|
||
Category: "logic",
|
||
Desc: "连接多个下游分支,若设定的条件成立则仅运行对应的分支,若均不成立则只运行“否则”分支",
|
||
Color: "#00B2B2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Condition-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{},
|
||
EnUSName: "Condition",
|
||
EnUSDescription: "Connect multiple downstream branches. Only the corresponding branch will be executed if the set conditions are met. If none are met, only the 'else' branch will be executed.",
|
||
},
|
||
NodeTypeSubWorkflow: {
|
||
ID: 9,
|
||
Key: NodeTypeSubWorkflow,
|
||
DisplayKey: "SubWorkflow",
|
||
Name: "工作流",
|
||
Category: "",
|
||
Desc: "集成已发布工作流,可以执行嵌套子任务",
|
||
Color: "#00B83E",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Workflow-v2.jpg",
|
||
SupportBatch: true,
|
||
ExecutableMeta: ExecutableMeta{},
|
||
EnUSName: "Workflow",
|
||
EnUSDescription: "Add published workflows to execute subtasks",
|
||
},
|
||
NodeTypeDatabaseCustomSQL: {
|
||
ID: 12,
|
||
Key: NodeTypeDatabaseCustomSQL,
|
||
DisplayKey: "End",
|
||
Name: "SQL自定义",
|
||
Category: "database",
|
||
Desc: "基于用户自定义的 SQL 完成对数据库的增删改查操作",
|
||
Color: "#FF811A",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Database-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "SQL Customization",
|
||
EnUSDescription: "Complete the operations of adding, deleting, modifying and querying the database based on user-defined SQL",
|
||
},
|
||
NodeTypeOutputEmitter: {
|
||
ID: 13,
|
||
Key: NodeTypeOutputEmitter,
|
||
DisplayKey: "Message",
|
||
Name: "输出",
|
||
Category: "input&output",
|
||
Desc: "节点从“消息”更名为“输出”,支持中间过程的消息输出,支持流式和非流式两种方式",
|
||
Color: "#5C62FF",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Output-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
InputSourceAware: true,
|
||
StreamSourceEOFAware: true,
|
||
IncrementalOutput: true,
|
||
},
|
||
EnUSName: "Output",
|
||
EnUSDescription: "The node is renamed from \"message\" to \"output\", Supports message output in the intermediate process and streaming and non-streaming methods",
|
||
},
|
||
NodeTypeTextProcessor: {
|
||
ID: 15,
|
||
Key: NodeTypeTextProcessor,
|
||
DisplayKey: "Text",
|
||
Name: "文本处理",
|
||
Category: "utilities",
|
||
Desc: "用于处理多个字符串类型变量的格式",
|
||
Color: "#3071F2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-StrConcat-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
InputSourceAware: true,
|
||
},
|
||
EnUSName: "Text Processing",
|
||
EnUSDescription: "The format used for handling multiple string-type variables.",
|
||
},
|
||
NodeTypeQuestionAnswer: {
|
||
ID: 18,
|
||
Key: NodeTypeQuestionAnswer,
|
||
DisplayKey: "Question",
|
||
Name: "问答",
|
||
Category: "utilities",
|
||
Desc: "支持中间向用户提问问题,支持预置选项提问和开放式问题提问两种方式",
|
||
Color: "#3071F2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Direct-Question-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
MayUseChatModel: true,
|
||
},
|
||
EnUSName: "Question",
|
||
EnUSDescription: "Support asking questions to the user in the middle of the conversation, with both preset options and open-ended questions",
|
||
},
|
||
NodeTypeBreak: {
|
||
ID: 19,
|
||
Key: NodeTypeBreak,
|
||
DisplayKey: "Break",
|
||
Name: "终止循环",
|
||
Category: "logic",
|
||
Desc: "用于立即终止当前所在的循环,跳出循环体",
|
||
Color: "#00B2B2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Break-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{},
|
||
EnUSName: "Break",
|
||
EnUSDescription: "Used to immediately terminate the current loop and jump out of the loop",
|
||
},
|
||
NodeTypeVariableAssignerWithinLoop: {
|
||
ID: 20,
|
||
Key: NodeTypeVariableAssignerWithinLoop,
|
||
DisplayKey: "LoopSetVariable",
|
||
Name: "设置变量",
|
||
Category: "logic",
|
||
Desc: "用于重置循环变量的值,使其下次循环使用重置后的值",
|
||
Color: "#00B2B2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-LoopSetVariable-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{},
|
||
EnUSName: "Set Variable",
|
||
EnUSDescription: "Used to reset the value of the loop variable so that it uses the reset value in the next iteration",
|
||
},
|
||
NodeTypeLoop: {
|
||
ID: 21,
|
||
Key: NodeTypeLoop,
|
||
DisplayKey: "Loop",
|
||
Name: "循环",
|
||
Category: "logic",
|
||
Desc: "用于通过设定循环次数和逻辑,重复执行一系列任务",
|
||
Color: "#00B2B2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Loop-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
IsComposite: true,
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "Loop",
|
||
EnUSDescription: "Used to repeatedly execute a series of tasks by setting the number of iterations and logic",
|
||
},
|
||
NodeTypeIntentDetector: {
|
||
ID: 22,
|
||
Key: NodeTypeIntentDetector,
|
||
DisplayKey: "Intent",
|
||
Name: "意图识别",
|
||
Category: "logic",
|
||
Desc: "用于用户输入的意图识别,并将其与预设意图选项进行匹配。",
|
||
Color: "#00B2B2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Intent-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
MayUseChatModel: true,
|
||
},
|
||
EnUSName: "Intent recognition",
|
||
EnUSDescription: "Used for recognizing the intent in user input and matching it with preset intent options.",
|
||
},
|
||
NodeTypeKnowledgeIndexer: {
|
||
ID: 27,
|
||
Key: NodeTypeKnowledgeIndexer,
|
||
DisplayKey: "DatasetWrite",
|
||
Name: "知识库写入",
|
||
Category: "data",
|
||
Desc: "写入节点可以添加 文本类型 的知识库,仅可以添加一个知识库",
|
||
Color: "#FF811A",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-KnowledgeWriting-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "Knowledge writing",
|
||
EnUSDescription: "The write node can add a knowledge base of type text. Only one knowledge base can be added.",
|
||
},
|
||
NodeTypeBatch: {
|
||
ID: 28,
|
||
Key: NodeTypeBatch,
|
||
DisplayKey: "Batch",
|
||
Name: "批处理",
|
||
Category: "logic",
|
||
Desc: "通过设定批量运行次数和逻辑,运行批处理体内的任务",
|
||
Color: "#00B2B2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Batch-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
IsComposite: true,
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "Batch",
|
||
EnUSDescription: "By setting the number of batch runs and logic, run the tasks in the batch body.",
|
||
},
|
||
NodeTypeContinue: {
|
||
ID: 29,
|
||
Key: NodeTypeContinue,
|
||
DisplayKey: "Continue",
|
||
Name: "继续循环",
|
||
Category: "logic",
|
||
Desc: "用于终止当前循环,执行下次循环",
|
||
Color: "#00B2B2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Continue-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{},
|
||
EnUSName: "Continue",
|
||
EnUSDescription: "Used to immediately terminate the current loop and execute next loop",
|
||
},
|
||
NodeTypeInputReceiver: {
|
||
ID: 30,
|
||
Key: NodeTypeInputReceiver,
|
||
DisplayKey: "Input",
|
||
Name: "输入",
|
||
Category: "input&output",
|
||
Desc: "支持中间过程的信息输入",
|
||
Color: "#5C62FF",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Input-v2.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "Input",
|
||
EnUSDescription: "Support intermediate information input",
|
||
},
|
||
NodeTypeComment: {
|
||
ID: 31,
|
||
Key: "",
|
||
Name: "注释",
|
||
Category: "", // Not found in cate_list
|
||
Desc: "comment_desc", // Placeholder from JSON
|
||
Color: "",
|
||
IconURL: "comment_icon", // Placeholder from JSON
|
||
SupportBatch: false, // supportBatch: 1
|
||
EnUSName: "Comment",
|
||
},
|
||
NodeTypeVariableAggregator: {
|
||
ID: 32,
|
||
Key: NodeTypeVariableAggregator,
|
||
Name: "变量聚合",
|
||
Category: "logic",
|
||
Desc: "对多个分支的输出进行聚合处理",
|
||
Color: "#00B2B2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/VariableMerge-icon.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PostFillNil: true,
|
||
InputSourceAware: true,
|
||
UseCtxCache: true,
|
||
},
|
||
EnUSName: "Variable Merge",
|
||
EnUSDescription: "Aggregate the outputs of multiple branches.",
|
||
},
|
||
NodeTypeMessageList: {
|
||
ID: 37,
|
||
Key: NodeTypeMessageList,
|
||
Name: "查询消息列表",
|
||
Category: "message",
|
||
Desc: "用于查询消息列表",
|
||
Color: "#F2B600",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Conversation-List.jpeg",
|
||
SupportBatch: false,
|
||
Disabled: true,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "Query message list",
|
||
EnUSDescription: "Used to query the message list",
|
||
},
|
||
NodeTypeClearMessage: {
|
||
ID: 38,
|
||
Key: NodeTypeClearMessage,
|
||
Name: "清除上下文",
|
||
Category: "conversation_history",
|
||
Desc: "用于清空会话历史,清空后LLM看到的会话历史为空",
|
||
Color: "#F2B600",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Conversation-Delete.jpeg",
|
||
SupportBatch: false,
|
||
Disabled: true,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "Clear conversation history",
|
||
EnUSDescription: "Used to clear conversation history. After clearing, the conversation history visible to the LLM node will be empty.",
|
||
},
|
||
NodeTypeCreateConversation: {
|
||
ID: 39,
|
||
Key: NodeTypeCreateConversation,
|
||
Name: "创建会话",
|
||
Category: "conversation_management",
|
||
Desc: "用于创建会话",
|
||
Color: "#F2B600",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-Conversation-Create.jpeg",
|
||
SupportBatch: false,
|
||
Disabled: true,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "Create conversation",
|
||
EnUSDescription: "This node is used to create a conversation.",
|
||
},
|
||
NodeTypeVariableAssigner: {
|
||
ID: 40,
|
||
Key: NodeTypeVariableAssigner,
|
||
DisplayKey: "AssignVariable",
|
||
Name: "变量赋值",
|
||
Category: "data",
|
||
Desc: "用于给支持写入的变量赋值,包括应用变量、用户变量",
|
||
Color: "#FF811A",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/Variable.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{},
|
||
EnUSName: "Variable assign",
|
||
EnUSDescription: "Assigns values to variables that support the write operation, including app and user variables.",
|
||
},
|
||
NodeTypeDatabaseUpdate: {
|
||
ID: 42,
|
||
Key: NodeTypeDatabaseUpdate,
|
||
DisplayKey: "DatabaseUpdate",
|
||
Name: "更新数据",
|
||
Category: "database",
|
||
Desc: "修改表中已存在的数据记录,用户指定更新条件和内容来更新数据",
|
||
Color: "#F2B600",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-database-update.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
},
|
||
EnUSName: "Update Data",
|
||
EnUSDescription: "Modify the existing data records in the table, and the user specifies the update conditions and contents to update the data",
|
||
},
|
||
NodeTypeDatabaseQuery: {
|
||
ID: 43,
|
||
Key: NodeTypeDatabaseQuery,
|
||
DisplayKey: "DatabaseSelect",
|
||
Name: "查询数据",
|
||
Category: "database",
|
||
Desc: "从表获取数据,用户可定义查询条件、选择列等,输出符合条件的数据",
|
||
Color: "#F2B600",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icaon-database-select.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
},
|
||
EnUSName: "Query Data",
|
||
EnUSDescription: "Query data from the table, and the user can define query conditions, select columns, etc., and output the data that meets the conditions",
|
||
},
|
||
NodeTypeDatabaseDelete: {
|
||
ID: 44,
|
||
Key: NodeTypeDatabaseDelete,
|
||
DisplayKey: "DatabaseDelete",
|
||
Name: "删除数据",
|
||
Category: "database",
|
||
Desc: "从表中删除数据记录,用户指定删除条件来删除符合条件的记录",
|
||
Color: "#F2B600",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-database-delete.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
},
|
||
EnUSName: "Delete Data",
|
||
EnUSDescription: "Delete data records from the table, and the user specifies the deletion conditions to delete the records that meet the conditions",
|
||
},
|
||
NodeTypeHTTPRequester: {
|
||
ID: 45,
|
||
Key: NodeTypeHTTPRequester,
|
||
DisplayKey: "Http",
|
||
Name: "HTTP 请求",
|
||
Category: "utilities",
|
||
Desc: "用于发送API请求,从接口返回数据",
|
||
Color: "#3071F2",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-HTTP.png",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "HTTP request",
|
||
EnUSDescription: "It is used to send API requests and return data from the interface.",
|
||
},
|
||
NodeTypeDatabaseInsert: {
|
||
ID: 46,
|
||
Key: NodeTypeDatabaseInsert,
|
||
DisplayKey: "DatabaseInsert",
|
||
Name: "新增数据",
|
||
Category: "database",
|
||
Desc: "向表添加新数据记录,用户输入数据内容后插入数据库",
|
||
Color: "#F2B600",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-database-insert.jpg",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
},
|
||
EnUSName: "Add Data",
|
||
EnUSDescription: "Add new data records to the table, and insert them into the database after the user enters the data content",
|
||
},
|
||
NodeTypeJsonSerialization: {
|
||
// ID is the unique identifier of this node type. Used in various front-end APIs.
|
||
ID: 58,
|
||
|
||
// Key is the unique NodeType of this node. Used in backend code as well as saved in DB.
|
||
Key: NodeTypeJsonSerialization,
|
||
|
||
// DisplayKey is the string used in frontend to identify this node.
|
||
// Example use cases:
|
||
// - used during querying test-run results for nodes
|
||
// - used in returned messages from streaming openAPI Runs.
|
||
// If empty, will use Key as DisplayKey.
|
||
DisplayKey: "ToJSON",
|
||
|
||
// Name is the node in ZH_CN, will be displayed on Canvas.
|
||
Name: "JSON 序列化",
|
||
|
||
// Category is the category of this node, determines which category this node will be displayed in.
|
||
Category: "utilities",
|
||
|
||
// Desc is the desc in ZH_CN, will be displayed as tooltip on Canvas.
|
||
Desc: "用于把变量转化为JSON字符串",
|
||
|
||
// Color is the color of the upper edge of the node displayed on Canvas.
|
||
Color: "F2B600",
|
||
|
||
// IconURL is the URL of the icon displayed on Canvas.
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-to_json.png",
|
||
|
||
// SupportBatch indicates whether this node can set batch mode.
|
||
// NOTE: ultimately it's frontend that decides which node can enable batch mode.
|
||
SupportBatch: false,
|
||
|
||
// ExecutableMeta configures certain common aspects of request-time behaviors for this node.
|
||
ExecutableMeta: ExecutableMeta{
|
||
// PreFillZero decides whether to pre-fill zero value for any missing fields in input.
|
||
PreFillZero: true,
|
||
// PostFillNil decides whether to post-fill nil value for any missing fields in output.
|
||
PostFillNil: true,
|
||
},
|
||
// EnUSName is the name in EN_US, will be displayed on Canvas if language of Coze-Studio is set to EnUS.
|
||
EnUSName: "JSON serialization",
|
||
// EnUSDescription is the description in EN_US, will be displayed on Canvas if language of Coze-Studio is set to EnUS.
|
||
EnUSDescription: "Convert variable to JSON string",
|
||
},
|
||
NodeTypeJsonDeserialization: {
|
||
ID: 59,
|
||
Key: NodeTypeJsonDeserialization,
|
||
DisplayKey: "FromJSON",
|
||
Name: "JSON 反序列化",
|
||
Category: "utilities",
|
||
Desc: "用于将JSON字符串解析为变量",
|
||
Color: "F2B600",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icon-from_json.png",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
UseCtxCache: true,
|
||
},
|
||
EnUSName: "JSON deserialization",
|
||
EnUSDescription: "Parse JSON string to variable",
|
||
},
|
||
NodeTypeKnowledgeDeleter: {
|
||
ID: 60,
|
||
Key: NodeTypeKnowledgeDeleter,
|
||
DisplayKey: "KnowledgeDelete",
|
||
Name: "知识库删除",
|
||
Category: "data",
|
||
Desc: "用于删除知识库中的文档",
|
||
Color: "#FF811A",
|
||
IconURL: "https://lf3-static.bytednsdoc.com/obj/eden-cn/dvsmryvd_avi_dvsm/ljhwZthlaukjlkulzlp/icon/icons-dataset-delete.png",
|
||
SupportBatch: false,
|
||
ExecutableMeta: ExecutableMeta{
|
||
PreFillZero: true,
|
||
PostFillNil: true,
|
||
},
|
||
EnUSName: "Knowledge delete",
|
||
EnUSDescription: "The delete node can delete a document in knowledge base.",
|
||
},
|
||
NodeTypeLambda: {
|
||
ID: 1000,
|
||
Key: NodeTypeLambda,
|
||
Name: "Lambda",
|
||
EnUSName: "Comment",
|
||
},
|
||
}
|
||
|
||
// PluginNodeMetas holds metadata for specific plugin API entity.
|
||
var PluginNodeMetas []*PluginNodeMeta
|
||
|
||
// PluginCategoryMetas holds metadata for plugin category entity.
|
||
var PluginCategoryMetas []*PluginCategoryMeta
|
||
|
||
func NodeMetaByNodeType(t NodeType) *NodeTypeMeta {
|
||
if m, ok := NodeTypeMetas[t]; ok {
|
||
return m
|
||
}
|
||
|
||
return nil
|
||
}
|