Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions src/celeste/providers/openai/images/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from celeste.client import APIMixin
from celeste.core import UsageField
from celeste.io import FinishReason
from celeste.utils import detect_mime_type
from celeste.utils import build_image_data_url, detect_mime_type

from . import config

Expand Down Expand Up @@ -127,7 +127,7 @@ def _make_stream_request(
endpoint: str | None = None,
**parameters: Any,
) -> AsyncIterator[dict[str, Any]]:
"""Make streaming request to OpenAI Images API generations endpoint.
"""Make streaming request to OpenAI Images API.

Streaming is only supported for gpt-image-1.
"""
Expand All @@ -137,6 +137,13 @@ def _make_stream_request(
if "partial_images" not in request_body:
request_body["partial_images"] = 1

# Serialize ImageArtifact for JSON streaming edit
# Non-streaming uses multipart; streaming uses JSON with images array
if "image" in request_body and hasattr(request_body["image"], "get_base64"):
artifact = request_body.pop("image")
request_body["images"] = [{"image_url": build_image_data_url(artifact)}]
endpoint = config.OpenAIImagesEndpoint.CREATE_EDIT

headers = self._json_headers()

return self.http_client.stream_post(
Expand Down
Loading