mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-14 14:55:54 +08:00
Fix 11979 (#11984)
This commit is contained in:
parent
4584eb3058
commit
4b1e13e982
@ -860,14 +860,16 @@ class LLMNode(BaseNode[LLMNodeData]):
|
|||||||
) -> Sequence[PromptMessage]:
|
) -> Sequence[PromptMessage]:
|
||||||
prompt_messages: list[PromptMessage] = []
|
prompt_messages: list[PromptMessage] = []
|
||||||
for message in messages:
|
for message in messages:
|
||||||
contents: list[PromptMessageContent] = []
|
|
||||||
if message.edition_type == "jinja2":
|
if message.edition_type == "jinja2":
|
||||||
result_text = _render_jinja2_message(
|
result_text = _render_jinja2_message(
|
||||||
template=message.jinja2_text or "",
|
template=message.jinja2_text or "",
|
||||||
jinjia2_variables=jinja2_variables,
|
jinjia2_variables=jinja2_variables,
|
||||||
variable_pool=variable_pool,
|
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:
|
else:
|
||||||
# Get segment group from basic message
|
# Get segment group from basic message
|
||||||
if context:
|
if context:
|
||||||
@ -877,6 +879,7 @@ class LLMNode(BaseNode[LLMNodeData]):
|
|||||||
segment_group = variable_pool.convert_template(template)
|
segment_group = variable_pool.convert_template(template)
|
||||||
|
|
||||||
# Process segments for images
|
# Process segments for images
|
||||||
|
file_contents = []
|
||||||
for segment in segment_group.value:
|
for segment in segment_group.value:
|
||||||
if isinstance(segment, ArrayFileSegment):
|
if isinstance(segment, ArrayFileSegment):
|
||||||
for file in segment.value:
|
for file in segment.value:
|
||||||
@ -884,20 +887,27 @@ class LLMNode(BaseNode[LLMNodeData]):
|
|||||||
file_content = file_manager.to_prompt_message_content(
|
file_content = file_manager.to_prompt_message_content(
|
||||||
file, image_detail_config=vision_detail_config
|
file, image_detail_config=vision_detail_config
|
||||||
)
|
)
|
||||||
contents.append(file_content)
|
file_contents.append(file_content)
|
||||||
elif isinstance(segment, FileSegment):
|
elif isinstance(segment, FileSegment):
|
||||||
file = segment.value
|
file = segment.value
|
||||||
if file.type in {FileType.IMAGE, FileType.VIDEO, FileType.AUDIO, FileType.DOCUMENT}:
|
if file.type in {FileType.IMAGE, FileType.VIDEO, FileType.AUDIO, FileType.DOCUMENT}:
|
||||||
file_content = file_manager.to_prompt_message_content(
|
file_content = file_manager.to_prompt_message_content(
|
||||||
file, image_detail_config=vision_detail_config
|
file, image_detail_config=vision_detail_config
|
||||||
)
|
)
|
||||||
contents.append(file_content)
|
file_contents.append(file_content)
|
||||||
else:
|
|
||||||
plain_text = segment.markdown.strip()
|
# Create message with text from all segments
|
||||||
if plain_text:
|
plain_text = segment_group.text
|
||||||
contents.append(TextPromptMessageContent(data=plain_text))
|
if plain_text:
|
||||||
prompt_message = _combine_message_content_with_role(contents=contents, role=message.role)
|
prompt_message = _combine_message_content_with_role(
|
||||||
prompt_messages.append(prompt_message)
|
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
|
return prompt_messages
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user