refac
This commit is contained in:
@@ -97,6 +97,7 @@ from open_webui.utils.misc import (
|
|||||||
convert_logit_bias_input_to_json,
|
convert_logit_bias_input_to_json,
|
||||||
get_content_from_message,
|
get_content_from_message,
|
||||||
convert_output_to_messages,
|
convert_output_to_messages,
|
||||||
|
strip_empty_content_blocks,
|
||||||
)
|
)
|
||||||
from open_webui.utils.tools import (
|
from open_webui.utils.tools import (
|
||||||
get_tools,
|
get_tools,
|
||||||
@@ -2634,6 +2635,10 @@ async def process_chat_payload(request, form_data, user, metadata, model):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Strip empty text content blocks from multimodal messages
|
||||||
|
# to prevent errors from providers like Gemini and Claude
|
||||||
|
form_data['messages'] = strip_empty_content_blocks(form_data.get('messages', []))
|
||||||
|
|
||||||
return form_data, metadata, events
|
return form_data, metadata, events
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -401,6 +401,31 @@ def append_or_update_assistant_message(content: str, messages: list[dict]):
|
|||||||
return messages
|
return messages
|
||||||
|
|
||||||
|
|
||||||
|
def strip_empty_content_blocks(messages: list[dict]) -> list[dict]:
|
||||||
|
"""
|
||||||
|
Remove empty text content blocks from multimodal message content arrays.
|
||||||
|
|
||||||
|
Providers like Gemini and Claude reject messages where a text block has
|
||||||
|
an empty string. This can happen when a user sends only file/image
|
||||||
|
attachments without typing any text.
|
||||||
|
"""
|
||||||
|
for message in messages:
|
||||||
|
content = message.get('content')
|
||||||
|
if isinstance(content, list):
|
||||||
|
cleaned = [
|
||||||
|
block
|
||||||
|
for block in content
|
||||||
|
if not (
|
||||||
|
isinstance(block, dict)
|
||||||
|
and block.get('type') == 'text'
|
||||||
|
and not block.get('text', '').strip()
|
||||||
|
)
|
||||||
|
]
|
||||||
|
if cleaned:
|
||||||
|
message['content'] = cleaned
|
||||||
|
return messages
|
||||||
|
|
||||||
|
|
||||||
def openai_chat_message_template(model: str):
|
def openai_chat_message_template(model: str):
|
||||||
return {
|
return {
|
||||||
'id': f'{model}-{str(uuid.uuid4())}',
|
'id': f'{model}-{str(uuid.uuid4())}',
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
export let onSave = (e) => {};
|
export let onSave = (e) => {};
|
||||||
|
|
||||||
let loading = false;
|
let loading = true;
|
||||||
let variableValues = {};
|
let variableValues = {};
|
||||||
|
|
||||||
const submitHandler = async () => {
|
const submitHandler = async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user