fix(workflow): ensure file messages are written to messages in non-stream mode

This commit is contained in:
Eternity
2026-03-06 17:26:03 +08:00
parent f53633a8b8
commit 05c9ed1450

View File

@@ -637,11 +637,12 @@ class WorkflowService:
if message["role"] == "user": if message["role"] == "user":
if isinstance(message["content"], str): if isinstance(message["content"], str):
human_message += message["content"] human_message += message["content"]
elif isinstance(message["content"], dict): elif isinstance(message["content"], list):
if message["content"].get("type") == FileType.IMAGE: for file in message["content"]:
human_message += f"![image]({message['content'].get('url', '')})" if file.get("type") == FileType.IMAGE:
human_message += f"![image]({file.get('url', '')})"
else: else:
human_message += f"[{FileType}]({message['content'].get('url', '')})" human_message += f"[{file.get('type')}]({file.get('url', '')})"
if message["role"] == "assistant": if message["role"] == "assistant":
assistant_message = message["content"] assistant_message = message["content"]
self.conversation_service.add_message( self.conversation_service.add_message(
@@ -663,8 +664,7 @@ class WorkflowService:
output_data=result, output_data=result,
token_usage=token_usage.get("total_tokens", None) token_usage=token_usage.get("total_tokens", None)
) )
logger.error(f"Workflow Run Failed, execution_id: {execution.execution_id},"
f" error: {result.get('error')}")
logger.info(f"Workflow Run Success, " logger.info(f"Workflow Run Success, "
f"execution_id: {execution.execution_id}, message count: {len(final_messages)}") f"execution_id: {execution.execution_id}, message count: {len(final_messages)}")
else: else:
@@ -673,6 +673,8 @@ class WorkflowService:
"failed", "failed",
error_message=result.get("error") error_message=result.get("error")
) )
logger.error(f"Workflow Run Failed, execution_id: {execution.execution_id},"
f" error: {result.get('error')}")
# 返回增强的响应结构 # 返回增强的响应结构
return { return {
@@ -804,7 +806,7 @@ class WorkflowService:
if file.get("type") == FileType.IMAGE: if file.get("type") == FileType.IMAGE:
human_message += f"![image]({file.get('url', '')})" human_message += f"![image]({file.get('url', '')})"
else: else:
human_message += f"[{file.get("type")}]({file.get('url', '')})" human_message += f"[{file.get('type')}]({file.get('url', '')})"
if message["role"] == "assistant": if message["role"] == "assistant":
assistant_message = message["content"] assistant_message = message["content"]
self.conversation_service.add_message( self.conversation_service.add_message(