refac
This commit is contained in:
@@ -86,6 +86,7 @@ from open_webui.utils.misc import (
|
|||||||
get_message_list,
|
get_message_list,
|
||||||
add_or_update_system_message,
|
add_or_update_system_message,
|
||||||
add_or_update_user_message,
|
add_or_update_user_message,
|
||||||
|
set_last_user_message_content,
|
||||||
get_last_user_message,
|
get_last_user_message,
|
||||||
get_last_user_message_item,
|
get_last_user_message_item,
|
||||||
get_last_assistant_message,
|
get_last_assistant_message,
|
||||||
@@ -4241,8 +4242,8 @@ async def streaming_chat_response_handler(response, ctx):
|
|||||||
all_tool_call_sources.extend(tool_call_sources)
|
all_tool_call_sources.extend(tool_call_sources)
|
||||||
if all_tool_call_sources and user_message:
|
if all_tool_call_sources and user_message:
|
||||||
# Restore original user message before re-applying to avoid recursive nesting
|
# Restore original user message before re-applying to avoid recursive nesting
|
||||||
form_data["messages"] = add_or_update_user_message(
|
set_last_user_message_content(
|
||||||
user_message, form_data["messages"], append=False
|
user_message, form_data["messages"]
|
||||||
)
|
)
|
||||||
form_data["messages"] = apply_source_context_to_messages(
|
form_data["messages"] = apply_source_context_to_messages(
|
||||||
request,
|
request,
|
||||||
|
|||||||
@@ -277,6 +277,26 @@ def get_last_user_message(messages: list[dict]) -> Optional[str]:
|
|||||||
return get_content_from_message(message)
|
return get_content_from_message(message)
|
||||||
|
|
||||||
|
|
||||||
|
def set_last_user_message_content(
|
||||||
|
content: str, messages: list[dict]
|
||||||
|
) -> list[dict]:
|
||||||
|
"""
|
||||||
|
Replace the text content of the last user message in-place.
|
||||||
|
Handles both plain-string and list-of-parts content formats.
|
||||||
|
"""
|
||||||
|
for message in reversed(messages):
|
||||||
|
if message.get("role") == "user":
|
||||||
|
if isinstance(message.get("content"), list):
|
||||||
|
for item in message["content"]:
|
||||||
|
if item.get("type") == "text":
|
||||||
|
item["text"] = content
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
message["content"] = content
|
||||||
|
break
|
||||||
|
return messages
|
||||||
|
|
||||||
|
|
||||||
def get_last_assistant_message_item(messages: list[dict]) -> Optional[dict]:
|
def get_last_assistant_message_item(messages: list[dict]) -> Optional[dict]:
|
||||||
for message in reversed(messages):
|
for message in reversed(messages):
|
||||||
if message["role"] == "assistant":
|
if message["role"] == "assistant":
|
||||||
|
|||||||
Reference in New Issue
Block a user