From f9f284aaf22f3de29070e2956df9b6bbf5b3d981 Mon Sep 17 00:00:00 2001 From: zhonggang <54022200+zhonggang666@users.noreply.github.com> Date: Thu, 9 Jul 2026 17:27:54 +0800 Subject: [PATCH] fix: preserve generated media history urls --- .../impl/base_image_generate_node.py | 19 ++++++++++++++++++- .../impl/base_image_to_video_node.py | 19 ++++++++++++++++++- .../impl/base_text_to_video_node.py | 19 ++++++++++++++++++- 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/apps/application/flow/step_node/image_generate_step_node/impl/base_image_generate_node.py b/apps/application/flow/step_node/image_generate_step_node/impl/base_image_generate_node.py index 281122364be..eead786afb7 100644 --- a/apps/application/flow/step_node/image_generate_step_node/impl/base_image_generate_node.py +++ b/apps/application/flow/step_node/image_generate_step_node/impl/base_image_generate_node.py @@ -84,7 +84,10 @@ def generate_history_ai_message(self, chat_record): return chat_record.get_ai_message() image_list = val['image_list'] return AIMessage(content=[ - *[{'type': 'image_url', 'image_url': {'url': f'{file_url}'}} for file_url in image_list] + *[ + {'type': 'image_url', 'image_url': {'url': image_url}} + for image_url in self.get_image_url_list(image_list) + ] ]) return chat_record.get_ai_message() @@ -116,6 +119,20 @@ def generate_message_list(self, question: str, history_message): question ] + @staticmethod + def get_image_url_list(image_list): + image_url_list = [] + for image in image_list or []: + if isinstance(image, dict): + image_url = image.get('url') or ( + f"./oss/file/{image.get('file_id')}" if image.get('file_id') else None + ) + else: + image_url = image + if image_url: + image_url_list.append(image_url) + return image_url_list + def upload_file(self, file): if [WorkflowMode.KNOWLEDGE, WorkflowMode.KNOWLEDGE_LOOP].__contains__( self.workflow_manage.flow.workflow_mode): diff --git a/apps/application/flow/step_node/image_to_video_step_node/impl/base_image_to_video_node.py b/apps/application/flow/step_node/image_to_video_step_node/impl/base_image_to_video_node.py index b59147323b9..ec99977978b 100644 --- a/apps/application/flow/step_node/image_to_video_step_node/impl/base_image_to_video_node.py +++ b/apps/application/flow/step_node/image_to_video_step_node/impl/base_image_to_video_node.py @@ -149,7 +149,10 @@ def generate_history_ai_message(self, chat_record): return chat_record.get_ai_message() image_list = val['image_list'] return AIMessage(content=[ - *[{'type': 'image_url', 'image_url': {'url': f'{file_url}'}} for file_url in image_list] + *[ + {'type': 'image_url', 'image_url': {'url': image_url}} + for image_url in self.get_image_url_list(image_list) + ] ]) return chat_record.get_ai_message() @@ -181,6 +184,20 @@ def generate_message_list(self, question: str, history_message): question ] + @staticmethod + def get_image_url_list(image_list): + image_url_list = [] + for image in image_list or []: + if isinstance(image, dict): + image_url = image.get('url') or ( + f"./oss/file/{image.get('file_id')}" if image.get('file_id') else None + ) + else: + image_url = image + if image_url: + image_url_list.append(image_url) + return image_url_list + @staticmethod def reset_message_list(message_list: List[BaseMessage], answer_text): result = [{'role': 'user' if isinstance(message, HumanMessage) else 'ai', 'content': message.content} for diff --git a/apps/application/flow/step_node/text_to_video_step_node/impl/base_text_to_video_node.py b/apps/application/flow/step_node/text_to_video_step_node/impl/base_text_to_video_node.py index 806aa0116db..b38c3af052f 100644 --- a/apps/application/flow/step_node/text_to_video_step_node/impl/base_text_to_video_node.py +++ b/apps/application/flow/step_node/text_to_video_step_node/impl/base_text_to_video_node.py @@ -125,7 +125,10 @@ def generate_history_ai_message(self, chat_record): return chat_record.get_ai_message() image_list = val['image_list'] return AIMessage(content=[ - *[{'type': 'image_url', 'image_url': {'url': f'{file_url}'}} for file_url in image_list] + *[ + {'type': 'image_url', 'image_url': {'url': image_url}} + for image_url in self.get_image_url_list(image_list) + ] ]) return chat_record.get_ai_message() @@ -157,6 +160,20 @@ def generate_message_list(self, question: str, history_message): question ] + @staticmethod + def get_image_url_list(image_list): + image_url_list = [] + for image in image_list or []: + if isinstance(image, dict): + image_url = image.get('url') or ( + f"./oss/file/{image.get('file_id')}" if image.get('file_id') else None + ) + else: + image_url = image + if image_url: + image_url_list.append(image_url) + return image_url_list + @staticmethod def reset_message_list(message_list: List[BaseMessage], answer_text): result = [{'role': 'user' if isinstance(message, HumanMessage) else 'ai', 'content': message.content} for