@@ -655,7 +655,7 @@ def fill_prompt(self, data_point, data, prompt_format=None):
655655 if self .prompt is None :
656656 # Pure openai path -- messages come from the data
657657 data_point = deepcopy (data_point )
658- if self .cfg .user_message :
658+ if self .cfg .user_message is not None :
659659 user_msgs = [m for m in data_point ["messages" ] if m ["role" ] == "user" ]
660660 if len (user_msgs ) != 1 :
661661 raise ValueError (
@@ -664,11 +664,16 @@ def fill_prompt(self, data_point, data, prompt_format=None):
664664 GenerationTask ._set_message_text_content (user_msgs [0 ], self .cfg .user_message )
665665 if self .cfg .prompt_suffix :
666666 GenerationTask ._append_message_text_suffix (data_point ["messages" ][- 1 ], self .cfg .prompt_suffix )
667- if self .cfg .system_message :
668- if data_point ["messages" ][0 ]["role" ] != "system" :
669- data_point ["messages" ].insert (0 , {"role" : "system" , "content" : self .cfg .system_message })
667+ if self .cfg .system_message is not None :
668+ messages = data_point ["messages" ]
669+ has_system = len (messages ) > 0 and messages [0 ]["role" ] == "system"
670+ if self .cfg .system_message == "" :
671+ if has_system :
672+ messages .pop (0 )
673+ elif has_system :
674+ messages [0 ]["content" ] = self .cfg .system_message
670675 else :
671- data_point [ " messages" ][ 0 ][ "content" ] = self .cfg .system_message
676+ messages . insert ( 0 , { "role" : "system" , "content" : self .cfg .system_message })
672677 return data_point ["messages" ]
673678
674679 # OpenAI path with prompt_config template -- build prompt from template, merge audio from data.
0 commit comments