193 lines
4.6 KiB
Go
193 lines
4.6 KiB
Go
package node
|
|
|
|
// ======================== 【常量定义:所有中文文案放这里!】 ========================
|
|
// 分组名称
|
|
const (
|
|
NodeGroupNameComponent = "组件"
|
|
NodeGroupNameBase = "基础"
|
|
NodeGroupNameCustom = "自定义"
|
|
)
|
|
|
|
// 节点名称
|
|
const (
|
|
NodeNameTextModel = "生成文案"
|
|
NodeNameImageModel = "生成图片"
|
|
NodeNameVideoModel = "视频"
|
|
NodeNameAudioModel = "音频"
|
|
NodeNameModel = "模型"
|
|
NodeNameMerge = "结果合并"
|
|
NodeNameJudge = "条件判断"
|
|
NodeNameForm = "表单"
|
|
NodeNameCustomNode = "自定义节点"
|
|
)
|
|
|
|
// 表单字段 Label
|
|
const (
|
|
FormLabelApiKey = "API Key"
|
|
FormLabelModel = "模型名称"
|
|
|
|
FormLabelCondition = "判断条件"
|
|
)
|
|
|
|
// ======================== 枚举类型 ========================
|
|
type NodeGroup string
|
|
|
|
const (
|
|
NodeGroupComponent NodeGroup = "component"
|
|
NodeGroupBase NodeGroup = "base"
|
|
NodeGroupCustom NodeGroup = "custom"
|
|
)
|
|
|
|
type NodeType string
|
|
|
|
const (
|
|
// 组件
|
|
NodeTypeTextModel NodeType = "text_model"
|
|
NodeTypeImageModel NodeType = "image_model"
|
|
NodeTypeVideoModel NodeType = "video_model"
|
|
NodeTypeAudioModel NodeType = "audio_model"
|
|
|
|
// 基础
|
|
NodeTypeModel NodeType = "model"
|
|
NodeTypeMerge NodeType = "merge"
|
|
NodeTypeJudge NodeType = "judge"
|
|
NodeTypeForm NodeType = "form"
|
|
NodeTypeIntent NodeType = "intent"
|
|
|
|
// 自定义
|
|
NodeTypeCustomNode NodeType = "custom_node"
|
|
)
|
|
|
|
const (
|
|
ModelTypeText = 1
|
|
ModelTypeImage = 2
|
|
)
|
|
|
|
// ======================== 结构定义 ========================
|
|
type NodeFormField struct {
|
|
Value string `json:"value"`
|
|
Field string `json:"field"`
|
|
Label string `json:"label"` // 从常量来
|
|
Type string `json:"type"`
|
|
Required bool `json:"required"`
|
|
Default any `json:"default,omitempty"`
|
|
Options []SelectOption `json:"options"`
|
|
Expand any `json:"expand"`
|
|
}
|
|
|
|
type SelectOption struct {
|
|
Label string `json:"label"`
|
|
Value string `json:"value"`
|
|
}
|
|
|
|
type ModelItem struct {
|
|
ModelApiKey string `json:"modelApiKey"`
|
|
ModelName string `json:"modelName"`
|
|
ModelForm map[string]any `json:"modelForm"`
|
|
ModelResponse map[string]any `json:"modelResponse"`
|
|
}
|
|
|
|
type NodeItem struct {
|
|
NodeId string `json:"nodeId"`
|
|
NodeCode NodeType `json:"nodeCode"`
|
|
ModelType int `json:"modelType"`
|
|
NodeName string `json:"nodeName"` // 从常量来
|
|
SkillOption bool `json:"skillOption"`
|
|
FormConfig []NodeFormField `json:"formConfig"`
|
|
ModelConfig []ModelItem `json:"modelConfig"`
|
|
}
|
|
|
|
type NodeGroupItem struct {
|
|
Group NodeGroup `json:"group"`
|
|
Label string `json:"label"` // 从常量来
|
|
Items []NodeItem `json:"items"`
|
|
}
|
|
|
|
//
|
|
//// 文案模型节点定义
|
|
//func NewTextModelNode() NodeItem {
|
|
// return NodeItem{
|
|
// NodeCode: NodeTypeTextModel,
|
|
// NodeName: NodeNameTextModel,
|
|
// FormConfig: []ModelItem{},
|
|
// }
|
|
//}
|
|
//
|
|
//// 图片模型节点
|
|
//func NewImageModelNode() NodeItem {
|
|
// return NodeItem{
|
|
// NodeCode: NodeTypeImageModel,
|
|
// NodeName: NodeNameImageModel,
|
|
// FormConfig: []ModelItem{},
|
|
// }
|
|
//}
|
|
//
|
|
//// 音频模型节点
|
|
//func NewAudioModelNode() NodeItem {
|
|
// return NodeItem{
|
|
// NodeCode: NodeTypeAudioModel,
|
|
// NodeName: NodeNameAudioModel,
|
|
// FormConfig: []ModelItem{},
|
|
// }
|
|
//}
|
|
//
|
|
//// 视频模型节点
|
|
//func NewVideoModelNode() NodeItem {
|
|
// return NodeItem{
|
|
// NodeCode: NodeTypeVideoModel,
|
|
// NodeName: NodeNameVideoModel,
|
|
// FormConfig: []ModelItem{},
|
|
// }
|
|
//}
|
|
//
|
|
//// 基础模型节点
|
|
//func NewModelNode() NodeItem {
|
|
// return NodeItem{
|
|
// NodeCode: NodeTypeModel,
|
|
// NodeName: NodeNameModel,
|
|
// FormConfig: []ModelItem{
|
|
// {
|
|
// ModelName: "模型名称",
|
|
// ModelForm: []NodeFormField{
|
|
// {Field: "apiKey", Label: FormLabelApiKey, Type: "input", Required: true},
|
|
// {Field: "model", Label: FormLabelModel, Type: "input", Required: true},
|
|
// },
|
|
// },
|
|
// },
|
|
// }
|
|
//}
|
|
//
|
|
//// 判断节点
|
|
//func NewJudgeNode() NodeItem {
|
|
// return NodeItem{
|
|
// NodeCode: NodeTypeJudge,
|
|
// NodeName: NodeNameJudge,
|
|
// FormConfig: []ModelItem{
|
|
// {
|
|
// ModelName: "判断条件",
|
|
// ModelForm: []NodeFormField{
|
|
// {Field: "condition", Label: FormLabelCondition, Type: "input", Required: true},
|
|
// },
|
|
// },
|
|
// },
|
|
// }
|
|
//}
|
|
//
|
|
//// 表单参数节点
|
|
//func NewFormNode() NodeItem {
|
|
// return NodeItem{
|
|
// NodeCode: NodeTypeForm,
|
|
// NodeName: NodeNameForm,
|
|
// FormConfig: []ModelItem{},
|
|
// }
|
|
//}
|
|
//
|
|
//// 自定义节点
|
|
//func NewCustomNode() NodeItem {
|
|
// return NodeItem{
|
|
// NodeCode: NodeTypeCustomNode,
|
|
// NodeName: NodeNameCustomNode,
|
|
// FormConfig: []ModelItem{},
|
|
// }
|
|
//}
|