diff --git a/api/app/core/workflow/nodes/base_node.py b/api/app/core/workflow/nodes/base_node.py index e370dbeb..107567e1 100644 --- a/api/app/core/workflow/nodes/base_node.py +++ b/api/app/core/workflow/nodes/base_node.py @@ -667,6 +667,15 @@ class BaseNode(ABC): @staticmethod def process_model_output(content) -> str: - if isinstance(content, dict): - return content.get("text") - return content + result = "" + if isinstance(content, list): + for msg in content: + if isinstance(msg, dict): + result += msg.get("text") + elif isinstance(msg, str): + result += msg + elif isinstance(content, dict): + result = content.get("text") + elif isinstance(content, str): + return content + return result diff --git a/api/app/core/workflow/variable/variable_objects.py b/api/app/core/workflow/variable/variable_objects.py index 83fb06f3..7a39835c 100644 --- a/api/app/core/workflow/variable/variable_objects.py +++ b/api/app/core/workflow/variable/variable_objects.py @@ -2,7 +2,7 @@ from typing import Any, TypeVar, Type, Generic from deprecated import deprecated -from app.core.workflow.variable.base_variable import BaseVariable, VariableType, FileObject +from app.core.workflow.variable.base_variable import BaseVariable, VariableType, FileObject, FileType T = TypeVar("T", bound=BaseVariable) @@ -75,7 +75,7 @@ class FileVariable(BaseVariable): raise TypeError(f"Value must be a FileObject - {type(value)}:{value}") def to_literal(self) -> str: - return str(self.value.model_dump()) + return f'{"!"if self.value.type == FileType.IMAGE else ""}[file]({self.value.url})' def get_value(self) -> Any: return self.value.model_dump() diff --git a/api/app/services/workflow_service.py b/api/app/services/workflow_service.py index 508dd8ac..1c7c7304 100644 --- a/api/app/services/workflow_service.py +++ b/api/app/services/workflow_service.py @@ -460,21 +460,8 @@ class WorkflowService: input_data = {"message": payload.message, "variables": payload.variables, "conversation_id": payload.conversation_id, "files": files} - # 转换 user_id 为 UUID - triggered_by_uuid = None - if payload.user_id: - try: - triggered_by_uuid = uuid.UUID(payload.user_id) - except (ValueError, AttributeError): - logger.warning(f"无效的 user_id 格式: {payload.user_id}") - # 转换 conversation_id 为 UUID - conversation_id_uuid = None - if payload.conversation_id: - try: - conversation_id_uuid = uuid.UUID(payload.conversation_id) - except (ValueError, AttributeError): - logger.warning(f"无效的 conversation_id 格式: {payload.conversation_id}") + conversation_id_uuid = uuid.UUID(payload.conversation_id) if payload.conversation_id else None # 2. 创建执行记录 execution = self.create_execution( @@ -661,21 +648,8 @@ class WorkflowService: input_data = {"message": payload.message, "variables": payload.variables, "conversation_id": payload.conversation_id, "files": files} - # 转换 user_id 为 UUID - triggered_by_uuid = None - if payload.user_id: - try: - triggered_by_uuid = uuid.UUID(payload.user_id) - except (ValueError, AttributeError): - logger.warning(f"无效的 user_id 格式: {payload.user_id}") - # 转换 conversation_id 为 UUID - conversation_id_uuid = None - if payload.conversation_id: - try: - conversation_id_uuid = uuid.UUID(payload.conversation_id) - except (ValueError, AttributeError): - logger.warning(f"无效的 conversation_id 格式: {payload.conversation_id}") + conversation_id_uuid = uuid.UUID(payload.conversation_id) if payload.conversation_id else None # 2. 创建执行记录 execution = self.create_execution(