From c90b343ca63e96bbf60087a8ecb5f050357d89b7 Mon Sep 17 00:00:00 2001 From: kamilbenkirane Date: Thu, 11 Dec 2025 21:17:03 +0100 Subject: [PATCH 1/2] feat: add gpt-image-1-mini model for OpenAI image generation --- .../providers/openai/models.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/image-generation/src/celeste_image_generation/providers/openai/models.py b/packages/image-generation/src/celeste_image_generation/providers/openai/models.py index 6285b3c8..8183a18a 100644 --- a/packages/image-generation/src/celeste_image_generation/providers/openai/models.py +++ b/packages/image-generation/src/celeste_image_generation/providers/openai/models.py @@ -41,4 +41,19 @@ ), }, ), + Model( + id="gpt-image-1-mini", + provider=Provider.OPENAI, + display_name="GPT Image 1 Mini", + streaming=True, + parameter_constraints={ + ImageGenerationParameter.PARTIAL_IMAGES: Range(min=0, max=3), + ImageGenerationParameter.ASPECT_RATIO: Choice( + options=["1024x1024", "1024x1536", "1536x1024", "auto"] + ), + ImageGenerationParameter.QUALITY: Choice( + options=["low", "medium", "high", "auto"] + ), + }, + ), ] From b306f8cd1d1ac80274fe158230dbde0a357348ff Mon Sep 17 00:00:00 2001 From: kamilbenkirane Date: Thu, 11 Dec 2025 21:26:47 +0100 Subject: [PATCH 2/2] fix: remove redundant streaming validation check for OpenAI image generation The base Client.stream() method already validates self.model.streaming before calling _make_stream_request, making the hardcoded model ID check redundant. This allows any model with streaming=True to use streaming functionality. --- .../src/celeste_image_generation/providers/openai/client.py | 4 ---- .../celeste_image_generation/providers/openai/parameters.py | 6 +++--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/image-generation/src/celeste_image_generation/providers/openai/client.py b/packages/image-generation/src/celeste_image_generation/providers/openai/client.py index ea204c9c..226af150 100644 --- a/packages/image-generation/src/celeste_image_generation/providers/openai/client.py +++ b/packages/image-generation/src/celeste_image_generation/providers/openai/client.py @@ -114,10 +114,6 @@ def _make_stream_request( **parameters: Unpack[ImageGenerationParameters], ) -> AsyncIterator[dict[str, Any]]: """Make HTTP streaming request and return async iterator of events.""" - if self.model.id != "gpt-image-1": - msg = f"Streaming not supported for model '{self.model.id}'. Only 'gpt-image-1' supports streaming." - raise ValueError(msg) - request_body["stream"] = True if "partial_images" not in request_body: diff --git a/packages/image-generation/src/celeste_image_generation/providers/openai/parameters.py b/packages/image-generation/src/celeste_image_generation/providers/openai/parameters.py index 0bfa602e..b09521fb 100644 --- a/packages/image-generation/src/celeste_image_generation/providers/openai/parameters.py +++ b/packages/image-generation/src/celeste_image_generation/providers/openai/parameters.py @@ -42,7 +42,7 @@ def map( class PartialImagesMapper(ParameterMapper): - """Map partial_images parameter for streaming (gpt-image-1 only).""" + """Map partial_images parameter for streaming.""" name = ImageGenerationParameter.PARTIAL_IMAGES @@ -55,7 +55,6 @@ def map( """Transform partial_images into provider request. Controls number of partial images during streaming (0-3). - Only supported by gpt-image-1 model. Args: request: Provider request dictionary to modify. @@ -75,7 +74,7 @@ def map( class QualityMapper(ParameterMapper): - """Map quality parameter for DALL-E 3 and gpt-image-1.""" + """Map quality parameter""" name = ImageGenerationParameter.QUALITY @@ -90,6 +89,7 @@ def map( Controls image quality/detail level. - DALL-E 3: "standard" or "hd" - gpt-image-1: "low", "medium", "high", or "auto" + - gpt-image-1-mini: "low", "medium", "high", or "auto" - DALL-E 2: Not supported (no constraint in model) Args: