From ef6540b4391ed47cd3472b6971992178c0323d9c Mon Sep 17 00:00:00 2001 From: Ratish P <114130421+Ratish1@users.noreply.github.com> Date: Sat, 7 Mar 2026 18:13:46 +0530 Subject: [PATCH] [diffusion]: add width/height passthrough for OpenAI image API (#19970) --- .../multimodal_gen/runtime/entrypoints/openai/image_api.py | 2 ++ .../multimodal_gen/runtime/entrypoints/openai/protocol.py | 2 ++ .../multimodal_gen/runtime/entrypoints/openai/utils.py | 7 +++++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/python/sglang/multimodal_gen/runtime/entrypoints/openai/image_api.py b/python/sglang/multimodal_gen/runtime/entrypoints/openai/image_api.py index 9d4cb410c..d861cda72 100644 --- a/python/sglang/multimodal_gen/runtime/entrypoints/openai/image_api.py +++ b/python/sglang/multimodal_gen/runtime/entrypoints/openai/image_api.py @@ -119,6 +119,8 @@ async def generations( request_id, prompt=request.prompt, size=request.size, + width=request.width, + height=request.height, num_outputs_per_prompt=max(1, min(int(request.n or 1), 10)), output_file_name=f"{request_id}.{ext}", output_path=output_dir, diff --git a/python/sglang/multimodal_gen/runtime/entrypoints/openai/protocol.py b/python/sglang/multimodal_gen/runtime/entrypoints/openai/protocol.py index c959e2f22..9d1a2d2cb 100644 --- a/python/sglang/multimodal_gen/runtime/entrypoints/openai/protocol.py +++ b/python/sglang/multimodal_gen/runtime/entrypoints/openai/protocol.py @@ -35,6 +35,8 @@ class ImageGenerationsRequest(BaseModel): output_format: Optional[str] = None # png | jpeg | webp user: Optional[str] = None # SGLang extensions + width: Optional[int] = None + height: Optional[int] = None num_inference_steps: Optional[int] = None guidance_scale: Optional[float] = None true_cfg_scale: Optional[float] = ( diff --git a/python/sglang/multimodal_gen/runtime/entrypoints/openai/utils.py b/python/sglang/multimodal_gen/runtime/entrypoints/openai/utils.py index e66d96ada..86b84c9cc 100644 --- a/python/sglang/multimodal_gen/runtime/entrypoints/openai/utils.py +++ b/python/sglang/multimodal_gen/runtime/entrypoints/openai/utils.py @@ -109,8 +109,11 @@ def build_sampling_params(request_id: str, **kwargs) -> SamplingParams: if size: w, h = _parse_size(size) if w is not None: - kwargs.setdefault("width", w) - kwargs.setdefault("height", h) + # treat None dimensions as unset so parsed size can fill them + if kwargs.get("width") is None: + kwargs["width"] = w + if kwargs.get("height") is None: + kwargs["height"] = h # filter out None values to let SamplingParams defaults apply kwargs = {k: v for k, v in kwargs.items() if v is not None}