| @@ -860,14 +860,16 @@ class LLMNode(BaseNode[LLMNodeData]): | |||
| ) -> Sequence[PromptMessage]: | |||
| prompt_messages: list[PromptMessage] = [] | |||
| for message in messages: | |||
| contents: list[PromptMessageContent] = [] | |||
| if message.edition_type == "jinja2": | |||
| result_text = _render_jinja2_message( | |||
| template=message.jinja2_text or "", | |||
| jinjia2_variables=jinja2_variables, | |||
| variable_pool=variable_pool, | |||
| ) | |||
| contents.append(TextPromptMessageContent(data=result_text)) | |||
| prompt_message = _combine_message_content_with_role( | |||
| contents=[TextPromptMessageContent(data=result_text)], role=message.role | |||
| ) | |||
| prompt_messages.append(prompt_message) | |||
| else: | |||
| # Get segment group from basic message | |||
| if context: | |||
| @@ -877,6 +879,7 @@ class LLMNode(BaseNode[LLMNodeData]): | |||
| segment_group = variable_pool.convert_template(template) | |||
| # Process segments for images | |||
| file_contents = [] | |||
| for segment in segment_group.value: | |||
| if isinstance(segment, ArrayFileSegment): | |||
| for file in segment.value: | |||
| @@ -884,20 +887,27 @@ class LLMNode(BaseNode[LLMNodeData]): | |||
| file_content = file_manager.to_prompt_message_content( | |||
| file, image_detail_config=vision_detail_config | |||
| ) | |||
| contents.append(file_content) | |||
| file_contents.append(file_content) | |||
| elif isinstance(segment, FileSegment): | |||
| file = segment.value | |||
| if file.type in {FileType.IMAGE, FileType.VIDEO, FileType.AUDIO, FileType.DOCUMENT}: | |||
| file_content = file_manager.to_prompt_message_content( | |||
| file, image_detail_config=vision_detail_config | |||
| ) | |||
| contents.append(file_content) | |||
| else: | |||
| plain_text = segment.markdown.strip() | |||
| if plain_text: | |||
| contents.append(TextPromptMessageContent(data=plain_text)) | |||
| prompt_message = _combine_message_content_with_role(contents=contents, role=message.role) | |||
| prompt_messages.append(prompt_message) | |||
| file_contents.append(file_content) | |||
| # Create message with text from all segments | |||
| plain_text = segment_group.text | |||
| if plain_text: | |||
| prompt_message = _combine_message_content_with_role( | |||
| contents=[TextPromptMessageContent(data=plain_text)], role=message.role | |||
| ) | |||
| prompt_messages.append(prompt_message) | |||
| if file_contents: | |||
| # Create message with image contents | |||
| prompt_message = _combine_message_content_with_role(contents=file_contents, role=message.role) | |||
| prompt_messages.append(prompt_message) | |||
| return prompt_messages | |||