Spaces:
Paused
Paused
| from __future__ import annotations | |
| from typing import Any, Iterator | |
| from services.protocol.conversation import ( | |
| ConversationRequest, | |
| ImageGenerationError, | |
| collect_image_outputs, | |
| encode_images, | |
| stream_image_chunks, | |
| stream_image_outputs_with_pool, | |
| ) | |
| def handle(body: dict[str, Any]) -> dict[str, Any] | Iterator[dict[str, Any]]: | |
| prompt = str(body.get("prompt") or "") | |
| images = body.get("images") or [] | |
| model = str(body.get("model") or "gpt-image-2") | |
| n = int(body.get("n") or 1) | |
| size = body.get("size") | |
| response_format = str(body.get("response_format") or "b64_json") | |
| base_url = str(body.get("base_url") or "") or None | |
| encoded_images = encode_images(images) | |
| if not encoded_images: | |
| raise ImageGenerationError("image is required") | |
| outputs = stream_image_outputs_with_pool(ConversationRequest( | |
| prompt=prompt, | |
| model=model, | |
| n=n, | |
| size=size, | |
| response_format=response_format, | |
| base_url=base_url, | |
| images=encoded_images, | |
| message_as_error=True, | |
| )) | |
| if body.get("stream"): | |
| return stream_image_chunks(outputs) | |
| return collect_image_outputs(outputs) | |