@@ -860,14 +860,16 @@ def _handle_list_messages(
860
860
) -> Sequence [PromptMessage ]:
861
861
prompt_messages : list [PromptMessage ] = []
862
862
for message in messages :
863
- contents : list [PromptMessageContent ] = []
864
863
if message .edition_type == "jinja2" :
865
864
result_text = _render_jinja2_message (
866
865
template = message .jinja2_text or "" ,
867
866
jinjia2_variables = jinja2_variables ,
868
867
variable_pool = variable_pool ,
869
868
)
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 )
871
873
else :
872
874
# Get segment group from basic message
873
875
if context :
@@ -877,27 +879,35 @@ def _handle_list_messages(
877
879
segment_group = variable_pool .convert_template (template )
878
880
879
881
# Process segments for images
882
+ file_contents = []
880
883
for segment in segment_group .value :
881
884
if isinstance (segment , ArrayFileSegment ):
882
885
for file in segment .value :
883
886
if file .type in {FileType .IMAGE , FileType .VIDEO , FileType .AUDIO , FileType .DOCUMENT }:
884
887
file_content = file_manager .to_prompt_message_content (
885
888
file , image_detail_config = vision_detail_config
886
889
)
887
- contents .append (file_content )
890
+ file_contents .append (file_content )
888
891
elif isinstance (segment , FileSegment ):
889
892
file = segment .value
890
893
if file .type in {FileType .IMAGE , FileType .VIDEO , FileType .AUDIO , FileType .DOCUMENT }:
891
894
file_content = file_manager .to_prompt_message_content (
892
895
file , image_detail_config = vision_detail_config
893
896
)
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 )
901
911
902
912
return prompt_messages
903
913
0 commit comments