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:
Shirasawa 2025-11-19 15:07:56 +08:00 committed by GitHub
parent 7031bb9067
commit 31dc97b68b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -742,6 +742,27 @@ def get_last_images(message_list):
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(
request: Request, form_data: dict, extra_params: dict, user
):
@ -2581,6 +2602,25 @@ async def process_chat_response(
"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")
reasoning_content = (