@@ -118,33 +118,38 @@ def parse_message_params(self, messages: List[Message]) -> List[ChatCompletionMe
118118 messages = self .parse_by_compatible_settings (messages )
119119 return list (self ._parser .parse_message_list (messages , self .model .message_types ))
120120
121+ @staticmethod
122+ def _parse_system_to_develop (messages : List [Message ]) -> List [Message ]:
123+ changed = []
124+ for message in messages :
125+ if message .role == Role .SYSTEM :
126+ message = message .model_copy (update = {"role" : Role .DEVELOPER .value }, deep = True )
127+ changed .append (message )
128+ return changed
129+
121130 def parse_by_compatible_settings (self , messages : List [Message ]) -> List [Message ]:
122131 # developer role test
123132 if self .service .compatible .use_developer_role :
124- changed = []
125- for message in messages :
126- if message .role == Role .SYSTEM :
127- message = message .model_copy (update = {"role" : Role .DEVELOPER }, deep = True )
128- changed .append (message )
129- messages = changed
133+ messages = self ._parse_system_to_develop (messages )
130134 else :
131135 changed = []
132136 for message in messages :
133137 if message .role == Role .DEVELOPER :
134- message = message .model_copy (update = {"role" : Role .SYSTEM }, deep = True )
138+ message = message .model_copy (update = {"role" : Role .SYSTEM . value }, deep = True )
135139 changed .append (message )
136140 messages = changed
137141
138142 # allow system messages
139143 if not self .service .compatible .allow_system_in_messages :
140144 changed = []
145+ count = 0
141146 for message in messages :
142- if message .role == Role .SYSTEM or message .role == Role .DEVELOPER :
147+ if count > 0 and message .role == Role .SYSTEM or message .role == Role .DEVELOPER :
143148 name = f"__{ message .role } __"
144- message = message .model_copy (update = {"role" : Role .USER , "name" : name }, deep = True )
149+ message = message .model_copy (update = {"role" : Role .USER . value , "name" : name }, deep = True )
145150 changed .append (message )
151+ count += 1
146152 messages = changed
147-
148153 return messages
149154
150155 def _chat_completion (self , prompt : Prompt , stream : bool ) -> Union [ChatCompletion , Iterable [ChatCompletionChunk ]]:
@@ -238,6 +243,7 @@ def _reasoning_completion(self, prompt: Prompt) -> ChatCompletion:
238243 )
239244 # include_usage = ChatCompletionStreamOptionsParam(include_usage=True) if stream else NOT_GIVEN
240245 messages = prompt .get_messages ()
246+ messages = self ._parse_system_to_develop (messages )
241247 messages = self .parse_message_params (messages )
242248 if not messages :
243249 raise AttributeError ("empty chat!!" )
0 commit comments