diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py index 8792b1cfc..71e1cbbfb 100644 --- a/backend/open_webui/utils/misc.py +++ b/backend/open_webui/utils/misc.py @@ -131,6 +131,25 @@ def add_or_update_system_message(content: str, messages: list[dict]): return messages +def append_or_update_assistant_message(content: str, messages: list[dict]): + """ + Adds a new assistant message at the end of the messages list + or updates the existing assistant message at the end. + + :param msg: The message to be added or appended. + :param messages: The list of message dictionaries. + :return: The updated list of message dictionaries. + """ + + if messages and messages[-1].get("role") == "assistant": + messages[-1]["content"] = f"{messages[-1]['content']}\n{content}" + else: + # Insert at the end + messages.append({"role": "assistant", "content": content}) + + return messages + + def openai_chat_message_template(model: str): return { "id": f"{model}-{str(uuid.uuid4())}",