mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-12 04:15:25 +00:00
refac/fix: system prompt duplication
This commit is contained in:
parent
6c4deed37a
commit
a1fc99c66f
3 changed files with 24 additions and 5 deletions
|
|
@ -1004,7 +1004,7 @@ async def process_chat_payload(request, form_data, user, metadata, model):
|
|||
if system_message:
|
||||
try:
|
||||
form_data = apply_system_prompt_to_body(
|
||||
system_message.get("content"), form_data, metadata, user
|
||||
system_message.get("content"), form_data, metadata, user, replace=True
|
||||
)
|
||||
except:
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -136,6 +136,14 @@ def update_message_content(message: dict, content: str, append: bool = True) ->
|
|||
return message
|
||||
|
||||
|
||||
def replace_system_message_content(content: str, messages: list[dict]) -> dict:
|
||||
for message in messages:
|
||||
if message["role"] == "system":
|
||||
message["content"] = content
|
||||
break
|
||||
return messages
|
||||
|
||||
|
||||
def add_or_update_system_message(
|
||||
content: str, messages: list[dict], append: bool = False
|
||||
):
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ from open_webui.utils.task import prompt_template, prompt_variables_template
|
|||
from open_webui.utils.misc import (
|
||||
deep_update,
|
||||
add_or_update_system_message,
|
||||
replace_system_message_content,
|
||||
)
|
||||
|
||||
from typing import Callable, Optional
|
||||
|
|
@ -10,7 +11,11 @@ import json
|
|||
|
||||
# inplace function: form_data is modified
|
||||
def apply_system_prompt_to_body(
|
||||
system: Optional[str], form_data: dict, metadata: Optional[dict] = None, user=None
|
||||
system: Optional[str],
|
||||
form_data: dict,
|
||||
metadata: Optional[dict] = None,
|
||||
user=None,
|
||||
replace: bool = False,
|
||||
) -> dict:
|
||||
if not system:
|
||||
return form_data
|
||||
|
|
@ -24,9 +29,15 @@ def apply_system_prompt_to_body(
|
|||
# Legacy (API Usage)
|
||||
system = prompt_template(system, user)
|
||||
|
||||
form_data["messages"] = add_or_update_system_message(
|
||||
system, form_data.get("messages", [])
|
||||
)
|
||||
if replace:
|
||||
form_data["messages"] = replace_system_message_content(
|
||||
system, form_data.get("messages", [])
|
||||
)
|
||||
else:
|
||||
form_data["messages"] = add_or_update_system_message(
|
||||
system, form_data.get("messages", [])
|
||||
)
|
||||
|
||||
return form_data
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue