Skip to content

Commit 4b1e13e

Browse files
authored
Fix 11979 (#11984)
1 parent 4584eb3 commit 4b1e13e

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

api/core/workflow/nodes/llm/node.py

+20-10
Original file line numberDiff line numberDiff line change
@@ -860,14 +860,16 @@ def _handle_list_messages(
860860
) -> Sequence[PromptMessage]:
861861
prompt_messages: list[PromptMessage] = []
862862
for message in messages:
863-
contents: list[PromptMessageContent] = []
864863
if message.edition_type == "jinja2":
865864
result_text = _render_jinja2_message(
866865
template=message.jinja2_text or "",
867866
jinjia2_variables=jinja2_variables,
868867
variable_pool=variable_pool,
869868
)
870-
contents.append(TextPromptMessageContent(data=result_text))
869+
prompt_message = _combine_message_content_with_role(
870+
contents=[TextPromptMessageContent(data=result_text)], role=message.role
871+
)
872+
prompt_messages.append(prompt_message)
871873
else:
872874
# Get segment group from basic message
873875
if context:
@@ -877,27 +879,35 @@ def _handle_list_messages(
877879
segment_group = variable_pool.convert_template(template)
878880

879881
# Process segments for images
882+
file_contents = []
880883
for segment in segment_group.value:
881884
if isinstance(segment, ArrayFileSegment):
882885
for file in segment.value:
883886
if file.type in {FileType.IMAGE, FileType.VIDEO, FileType.AUDIO, FileType.DOCUMENT}:
884887
file_content = file_manager.to_prompt_message_content(
885888
file, image_detail_config=vision_detail_config
886889
)
887-
contents.append(file_content)
890+
file_contents.append(file_content)
888891
elif isinstance(segment, FileSegment):
889892
file = segment.value
890893
if file.type in {FileType.IMAGE, FileType.VIDEO, FileType.AUDIO, FileType.DOCUMENT}:
891894
file_content = file_manager.to_prompt_message_content(
892895
file, image_detail_config=vision_detail_config
893896
)
894-
contents.append(file_content)
895-
else:
896-
plain_text = segment.markdown.strip()
897-
if plain_text:
898-
contents.append(TextPromptMessageContent(data=plain_text))
899-
prompt_message = _combine_message_content_with_role(contents=contents, role=message.role)
900-
prompt_messages.append(prompt_message)
897+
file_contents.append(file_content)
898+
899+
# Create message with text from all segments
900+
plain_text = segment_group.text
901+
if plain_text:
902+
prompt_message = _combine_message_content_with_role(
903+
contents=[TextPromptMessageContent(data=plain_text)], role=message.role
904+
)
905+
prompt_messages.append(prompt_message)
906+
907+
if file_contents:
908+
# Create message with image contents
909+
prompt_message = _combine_message_content_with_role(contents=file_contents, role=message.role)
910+
prompt_messages.append(prompt_message)
901911

902912
return prompt_messages
903913

0 commit comments

Comments
 (0)