24
24
from core .model_runtime .entities .llm_entities import LLMResult , LLMUsage
25
25
from core .model_runtime .entities .message_entities import (
26
26
AssistantPromptMessage ,
27
- PromptMessageContent ,
27
+ PromptMessageContentUnionTypes ,
28
28
PromptMessageRole ,
29
29
SystemPromptMessage ,
30
30
UserPromptMessage ,
@@ -594,8 +594,7 @@ def _fetch_prompt_messages(
594
594
variable_pool : VariablePool ,
595
595
jinja2_variables : Sequence [VariableSelector ],
596
596
) -> tuple [Sequence [PromptMessage ], Optional [Sequence [str ]]]:
597
- # FIXME: fix the type error cause prompt_messages is type quick a few times
598
- prompt_messages : list [Any ] = []
597
+ prompt_messages : list [PromptMessage ] = []
599
598
600
599
if isinstance (prompt_template , list ):
601
600
# For chat model
@@ -657,12 +656,14 @@ def _fetch_prompt_messages(
657
656
# For issue #11247 - Check if prompt content is a string or a list
658
657
prompt_content_type = type (prompt_content )
659
658
if prompt_content_type == str :
659
+ prompt_content = str (prompt_content )
660
660
if "#histories#" in prompt_content :
661
661
prompt_content = prompt_content .replace ("#histories#" , memory_text )
662
662
else :
663
663
prompt_content = memory_text + "\n " + prompt_content
664
664
prompt_messages [0 ].content = prompt_content
665
665
elif prompt_content_type == list :
666
+ prompt_content = prompt_content if isinstance (prompt_content , list ) else []
666
667
for content_item in prompt_content :
667
668
if content_item .type == PromptMessageContentType .TEXT :
668
669
if "#histories#" in content_item .data :
@@ -675,9 +676,10 @@ def _fetch_prompt_messages(
675
676
# Add current query to the prompt message
676
677
if sys_query :
677
678
if prompt_content_type == str :
678
- prompt_content = prompt_messages [0 ].content .replace ("#sys.query#" , sys_query )
679
+ prompt_content = str ( prompt_messages [0 ].content ) .replace ("#sys.query#" , sys_query )
679
680
prompt_messages [0 ].content = prompt_content
680
681
elif prompt_content_type == list :
682
+ prompt_content = prompt_content if isinstance (prompt_content , list ) else []
681
683
for content_item in prompt_content :
682
684
if content_item .type == PromptMessageContentType .TEXT :
683
685
content_item .data = sys_query + "\n " + content_item .data
@@ -707,7 +709,7 @@ def _fetch_prompt_messages(
707
709
filtered_prompt_messages = []
708
710
for prompt_message in prompt_messages :
709
711
if isinstance (prompt_message .content , list ):
710
- prompt_message_content = []
712
+ prompt_message_content : list [ PromptMessageContentUnionTypes ] = []
711
713
for content_item in prompt_message .content :
712
714
# Skip content if features are not defined
713
715
if not model_config .model_schema .features :
@@ -1132,7 +1134,9 @@ def _check_model_structured_output_support(self) -> SupportStructuredOutputStatu
1132
1134
)
1133
1135
1134
1136
1135
- def _combine_message_content_with_role (* , contents : Sequence [PromptMessageContent ], role : PromptMessageRole ):
1137
+ def _combine_message_content_with_role (
1138
+ * , contents : Optional [str | list [PromptMessageContentUnionTypes ]] = None , role : PromptMessageRole
1139
+ ):
1136
1140
match role :
1137
1141
case PromptMessageRole .USER :
1138
1142
return UserPromptMessage (content = contents )
0 commit comments