""" 结束节点 """ from typing import Any, Dict from ..base import BaseNode, NodeContext, NodeResult from ..registry import NodeRegistry @NodeRegistry.register class EndNode(BaseNode): """ 结束节点 工作流的出口节点,输出最终结果 """ node_type = 'end' node_name = '结束' node_category = 'basic' node_icon = 'stop-circle' node_description = '工作流的结束节点,输出最终结果' inputs = [ { 'name': 'output', 'type': 'any', 'description': '输出内容', }, ] outputs = [] def execute(self, context: NodeContext) -> NodeResult: """执行结束节点""" # 获取输出内容配置(前端保存的是字符串模板,如 "{{llm_response}}") output_template = self.config.get('output', '') if output_template and isinstance(output_template, str) and output_template.strip(): # 如果配置了输出模板,解析模板中的变量 output = context.resolve_template(output_template) else: # 没有配置输出模板,不输出任何内容 output = None # 处理输出变量(用于结构化输出) # 只有当 output 不为 None 时才处理结构化输出 outputs_config = self.config.get('outputs', []) if output is not None and outputs_config and isinstance(outputs_config, list): # 如果定义了输出变量,构建结构化输出 structured_output = {} for out_var in outputs_config: if isinstance(out_var, dict): var_name = out_var.get('variable', '') if var_name: # 从上下文获取变量值 structured_output[var_name] = context.get_variable(var_name, None) # 如果有结构化输出,合并到结果中 if structured_output: if isinstance(output, dict): output = {**output, **structured_output} else: output = { 'result': output, **structured_output } return NodeResult( success=True, output=output, ) @classmethod def get_config_schema(cls) -> Dict[str, Any]: """获取配置 Schema""" return { 'type': 'object', 'properties': { 'output': { 'type': 'object', 'title': '输出配置', 'properties': { 'type': { 'type': 'string', 'title': '输出类型', 'enum': ['variable', 'template', 'previous'], 'default': 'previous', }, 'value': { 'type': 'string', 'title': '输出值', 'description': '变量名或模板', }, }, }, }, }