OpenAI Generate Image
Generate Images With OpenAI, Straight Into a Sampler-Ready Tensor
- image
- image1
- image2
- image3
- image4
- history
- image
- images
- num_images
- text
- history
The awkward truth about cloud image models in ComfyUI is that they output files, and ComfyUI wants tensors. YogurtOpenAIGenerateImage closes that gap: it calls the OpenAI image API and hands you back a proper IMAGE tensor - no downloading, no re-encoding, no PNG-loading node to wedge in between.
The inputs that actually matter on day one:
api_key- your OpenAI key. Leave blank and it falls back to the pack'sapi_key.jsonfile or theOPENAI_API_KEYenv var.prompt- the main prompt.system_prompt- a system-level instruction that biases overall style.model_name- defaults togpt-image-1.size,quality,style- resolution, quality level, and style (vivid/natural). Notestyleis dall-e-3 only, andn(number of images) is dall-e-2 only - the tooltips say so because the API mixes generations of models.
Then there's the whole second layer: base_url (blank = official API, but set it for Azure or any OpenAI-compatible server), chat_template (the default template slots {{system_instruction}} and {{prompt}} into a structured message), seed, aspect_ratio (for nano banana models), proxy_url, api_type (auto picks between the Responses and Images API based on model), timeout, and retry_count.
The optional inputs are where it gets interesting: image plus image1–image4 let you do image editing - feed a base image and prompt a change. There's also history for multi-turn, extra for raw JSON request params, and image_send_mode (upload for official, base64 for x.ai-style compatibility).
Outputs: image (single IMAGE), images (the batch as a list), num_images, text (the model's text response), and history.
What you can do with it
The tensor output means the result flows straight into standard ComfyUI nodes - VAE-free because it's already an image, ready for upscaling, compositing, comparison, or a detail pass. Pair it with the pack's YogurtSaveImageBridge to write files, or use the text output to capture the model's explanation of what it generated. The image/image1-4 edit inputs make it a poor-man's photo editor inside your graph: fix a face, restyle a product shot, iterate on a composition, all with one node.
Install and keys
Ships in ComfyUI-YogurtNodes - a quiet, single-maintainer pack with basically no community footprint, so the README is your documentation. ComfyUI Manager → search ComfyUI-YogurtNodes → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/yogurt7771/ComfyUI-YogurtNodes.git
cd ComfyUI-YogurtNodes
pip install -r requirements.txt
Restart ComfyUI, find it under "Yogurt Nodes/LLM". The openai Python package is the only real dependency here.
Three things get people:
- Key not picked up. The priority is inline
api_keyfield >api_key.jsonincustom_nodes/ComfyUI-YogurtNodes/yogurt_nodes/llm/>OPENAI_API_KEYenv var. If you filled the field, it wins - that's usually fine, just know it can be a file instead. - DALL-E-3-only params.
styleandndo nothing ongpt-image-1. Read the tooltips. - Cost. This is a metered API.
retry_countand a bignmultiply spend; keepnat 1 and watch your usage panel.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | API key for accessing OpenAI API | |
| base_url | STRING | Base URL for OpenAI API (leave blank for official API) | |
| model_name | STRING | gpt-image-1 | OpenAI image generation model name |
| system_prompt | STRING | System-level prompt that affects the overall image generation style | |
| prompt | STRING | Main prompt content for image generation | |
| size | COMBO | auto | Size of the generated image |
| quality | COMBO | auto | Quality of the generated image |
| style | COMBO | vivid | Style of the generated image (dall-e-3 only) |
| n | INT | 11–10 | Number of images to generate (dall-e-2 only) |
| response_format | COMBO | url | Response format for generated images |
| retry_count | INT | 1 | Number of retries when request fails |
| chat_template | STRING | <-system-> {{system_instruction}} <-/system-> <-user-> {{prompt}} <-/user-> | Content template for the image generation prompt |
| proxy_url | STRING | 代理URL,格式: protocol://user:pass@addr:port,支持http,https,socks5,socks5h | |
| api_type | COMBO | auto | 选择使用的API类型: auto(自动根据模型选择), response(Responses API), image(Images API) |
| seed | INT | -1-1–2147483647 | Random seed for generation (-1 for random) |
| aspect_ratio | COMBO | auto | Aspect ratio for generated images, for nano banana only |
| timeout | INT | 00–2147483647 | Timeout for the request in seconds, 0 means no timeout |
| imageopt | IMAGE | — | |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| historyopt | HISTORY | — | |
| extraopt | STRING | {} | Extra parameters for the request, in JSON format |
| image_send_modeopt | COMBO | upload | 输入图像发送方式: upload(文件上传, OpenAI官方兼容), base64(JSON中data URL, x.ai兼容) |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| images | IMAGE | — |
| num_images | INT | — |
| text | STRING | — |
| history | HISTORY | — |