@@ -491,9 +491,7 @@ def __init__(
491491
492492 # Set up system message and initialize messages
493493 self ._original_system_message = (
494- BaseMessage .make_assistant_message (
495- role_name = "Assistant" , content = system_message
496- )
494+ BaseMessage .make_system_message (system_message )
497495 if isinstance (system_message , str )
498496 else system_message
499497 )
@@ -1629,10 +1627,7 @@ def _generate_system_message_for_output_language(
16291627 content = self ._original_system_message .content + language_prompt
16301628 return self ._original_system_message .create_new_instance (content )
16311629 else :
1632- return BaseMessage .make_assistant_message (
1633- role_name = "Assistant" ,
1634- content = language_prompt ,
1635- )
1630+ return BaseMessage .make_system_message (language_prompt )
16361631
16371632 def init_messages (self ) -> None :
16381633 r"""Initializes the stored messages list with the current system
@@ -1650,6 +1645,62 @@ def init_messages(self) -> None:
16501645 )
16511646 )
16521647
1648+ def update_system_message (
1649+ self ,
1650+ system_message : Union [BaseMessage , str ],
1651+ reset_memory : bool = True ,
1652+ ) -> None :
1653+ r"""Update the system message.
1654+ It will reset conversation with new system message.
1655+
1656+ Args:
1657+ system_message (Union[BaseMessage, str]): The new system message.
1658+ Can be either a BaseMessage object or a string.
1659+ If a string is provided, it will be converted
1660+ into a BaseMessage object.
1661+ reset_memory (bool):
1662+ Whether to reinitialize conversation messages after updating
1663+ the system message. Defaults to True.
1664+ """
1665+ if system_message is None :
1666+ raise ValueError ("system_message is required and cannot be None. " )
1667+ self ._original_system_message = (
1668+ BaseMessage .make_system_message (system_message )
1669+ if isinstance (system_message , str )
1670+ else system_message
1671+ )
1672+ self ._system_message = (
1673+ self ._generate_system_message_for_output_language ()
1674+ )
1675+ if reset_memory :
1676+ self .init_messages ()
1677+
1678+ def append_to_system_message (
1679+ self , content : str , reset_memory : bool = True
1680+ ) -> None :
1681+ """Append additional context to existing system message.
1682+
1683+ Args:
1684+ content (str): The additional system message.
1685+ reset_memory (bool):
1686+ Whether to reinitialize conversation messages after appending
1687+ additional context. Defaults to True.
1688+ """
1689+ original_content = (
1690+ self ._original_system_message .content
1691+ if self ._original_system_message
1692+ else ""
1693+ )
1694+ new_system_message = original_content + '\n ' + content
1695+ self ._original_system_message = BaseMessage .make_system_message (
1696+ new_system_message
1697+ )
1698+ self ._system_message = (
1699+ self ._generate_system_message_for_output_language ()
1700+ )
1701+ if reset_memory :
1702+ self .init_messages ()
1703+
16531704 def reset_to_original_system_message (self ) -> None :
16541705 r"""Reset system message to original, removing any appended context.
16551706
0 commit comments