mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-12 12:25:20 +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:
|
if system_message:
|
||||||
try:
|
try:
|
||||||
form_data = apply_system_prompt_to_body(
|
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:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,14 @@ def update_message_content(message: dict, content: str, append: bool = True) ->
|
||||||
return message
|
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(
|
def add_or_update_system_message(
|
||||||
content: str, messages: list[dict], append: bool = False
|
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 (
|
from open_webui.utils.misc import (
|
||||||
deep_update,
|
deep_update,
|
||||||
add_or_update_system_message,
|
add_or_update_system_message,
|
||||||
|
replace_system_message_content,
|
||||||
)
|
)
|
||||||
|
|
||||||
from typing import Callable, Optional
|
from typing import Callable, Optional
|
||||||
|
|
@ -10,7 +11,11 @@ import json
|
||||||
|
|
||||||
# inplace function: form_data is modified
|
# inplace function: form_data is modified
|
||||||
def apply_system_prompt_to_body(
|
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:
|
) -> dict:
|
||||||
if not system:
|
if not system:
|
||||||
return form_data
|
return form_data
|
||||||
|
|
@ -24,9 +29,15 @@ def apply_system_prompt_to_body(
|
||||||
# Legacy (API Usage)
|
# Legacy (API Usage)
|
||||||
system = prompt_template(system, user)
|
system = prompt_template(system, user)
|
||||||
|
|
||||||
form_data["messages"] = add_or_update_system_message(
|
if replace:
|
||||||
system, form_data.get("messages", [])
|
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
|
return form_data
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue