mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-15 05:45:19 +00:00
feat: Add image handling in middleware for delta updates (#19073)
* feat: Add image handling in middleware for delta updates * refactor: optimize the code logic
This commit is contained in:
parent
7031bb9067
commit
31dc97b68b
1 changed files with 40 additions and 0 deletions
|
|
@ -742,6 +742,27 @@ def get_last_images(message_list):
|
||||||
return images
|
return images
|
||||||
|
|
||||||
|
|
||||||
|
def extract_and_process_urls(delta_images, request, metadata, user) -> list[str]:
|
||||||
|
if not isinstance(delta_images, list):
|
||||||
|
return []
|
||||||
|
|
||||||
|
processed_urls = []
|
||||||
|
for img in delta_images:
|
||||||
|
if not isinstance(img, dict) or img.get("type") != "image_url":
|
||||||
|
continue
|
||||||
|
|
||||||
|
url = img.get("image_url", {}).get("url")
|
||||||
|
if not url:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if url.startswith("data:image/png;base64"):
|
||||||
|
url = get_image_url_from_base64(request, url, metadata, user)
|
||||||
|
|
||||||
|
processed_urls.append(url)
|
||||||
|
|
||||||
|
return processed_urls
|
||||||
|
|
||||||
|
|
||||||
async def chat_image_generation_handler(
|
async def chat_image_generation_handler(
|
||||||
request: Request, form_data: dict, extra_params: dict, user
|
request: Request, form_data: dict, extra_params: dict, user
|
||||||
):
|
):
|
||||||
|
|
@ -2581,6 +2602,25 @@ async def process_chat_response(
|
||||||
"arguments"
|
"arguments"
|
||||||
] += delta_arguments
|
] += delta_arguments
|
||||||
|
|
||||||
|
processed_image_urls = extract_and_process_urls(
|
||||||
|
delta.get("images", []), request, metadata, user
|
||||||
|
)
|
||||||
|
if processed_image_urls:
|
||||||
|
await event_emitter(
|
||||||
|
{
|
||||||
|
"type": "files",
|
||||||
|
"data": {
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"type": "image",
|
||||||
|
"url": url,
|
||||||
|
}
|
||||||
|
for url in processed_image_urls
|
||||||
|
]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
value = delta.get("content")
|
value = delta.get("content")
|
||||||
|
|
||||||
reasoning_content = (
|
reasoning_content = (
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue