Build lightweight AI agent admin
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
"""
|
||||
并行分支节点
|
||||
"""
|
||||
import logging
|
||||
from typing import Any, Dict, List
|
||||
|
||||
from ..base import BaseNode, NodeContext, NodeResult
|
||||
from ..registry import NodeRegistry
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@NodeRegistry.register
|
||||
class ParallelNode(BaseNode):
|
||||
"""
|
||||
并行分支节点
|
||||
|
||||
将工作流分成多个并行分支同时执行
|
||||
"""
|
||||
|
||||
node_type = 'parallel'
|
||||
node_name = '并行分支'
|
||||
node_category = 'logic'
|
||||
node_icon = 'git-fork'
|
||||
node_description = '将工作流分成多个并行分支同时执行'
|
||||
|
||||
supports_branches = True
|
||||
|
||||
inputs = [
|
||||
{
|
||||
'name': 'input',
|
||||
'type': 'any',
|
||||
'description': '输入数据',
|
||||
},
|
||||
]
|
||||
|
||||
outputs = [
|
||||
{
|
||||
'name': 'branches',
|
||||
'type': 'array',
|
||||
'description': '并行分支 ID 列表',
|
||||
},
|
||||
]
|
||||
|
||||
def execute(self, context: NodeContext) -> NodeResult:
|
||||
"""
|
||||
执行并行分支节点
|
||||
|
||||
返回所有需要并行执行的分支 ID 列表
|
||||
"""
|
||||
try:
|
||||
# 获取配置的分支
|
||||
branches = self.config.get('branches', [])
|
||||
|
||||
if not branches:
|
||||
# 如果没有配置分支,返回默认的两个分支
|
||||
branches = [
|
||||
{'id': 'branch_1', 'name': '分支 1'},
|
||||
{'id': 'branch_2', 'name': '分支 2'},
|
||||
]
|
||||
|
||||
branch_ids = [b.get('id') for b in branches if b.get('id')]
|
||||
|
||||
return NodeResult(
|
||||
success=True,
|
||||
output=branch_ids,
|
||||
output_variables={
|
||||
'parallel_branches': branch_ids,
|
||||
},
|
||||
metadata={
|
||||
'is_parallel': True,
|
||||
'branch_count': len(branch_ids),
|
||||
'branches': branches,
|
||||
},
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
logger.exception(f'并行分支节点执行失败: {e}')
|
||||
return NodeResult(
|
||||
success=False,
|
||||
error=str(e),
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get_config_schema(cls) -> Dict[str, Any]:
|
||||
"""获取配置 Schema"""
|
||||
return {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'branches': {
|
||||
'type': 'array',
|
||||
'title': '并行分支',
|
||||
'description': '定义并行执行的分支',
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'id': {
|
||||
'type': 'string',
|
||||
'title': '分支 ID',
|
||||
},
|
||||
'name': {
|
||||
'type': 'string',
|
||||
'title': '分支名称',
|
||||
},
|
||||
},
|
||||
'required': ['id'],
|
||||
},
|
||||
'default': [
|
||||
{'id': 'branch_1', 'name': '分支 1'},
|
||||
{'id': 'branch_2', 'name': '分支 2'},
|
||||
],
|
||||
},
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user