# ComfyUI-OpenAI-Image-API OpenAI の画像生成 API を、ユーザー指定の API key で直接呼び出す ComfyUI カスタムノード。 入力画像の有無で text-to-image / image-to-image を自動切替する 1 ノード構成。 参考 API ドキュメント: - https://developers.openai.com/api/docs/guides/image-generation ## インストール ```bash cd ComfyUI/custom_nodes git clone https://github.com/fudosanit/ComfyUI-OpenAI-Image-API.git cd ComfyUI-OpenAI-Image-API pip install -r requirements.txt # 実質 requests のみ ``` ComfyUI を再起動するとカテゴリ `OpenAI` にノードが現れます。 ## ノード ### OpenAI Image t2i/i2i (OpenAI API) — `OpenAIImage` | 入力 | 内容 | |------|------| | `api_key` | OpenAI API key (パスワード入力) | | `prompt` | プロンプト | | `model` | `gpt-image-1` / `-mini` / `gpt-image-2` / `gpt-image-1.5` / `dall-e-3` / `dall-e-2` | | `size` | `auto` / `1024x1024` / `1536x1024` / `1024x1536` / `2048x2048` / `1792x1024` / `1024x1792` / `512x512` / `256x256` | | `quality` | `auto` / `low` / `medium` / `high` (gpt-image) / `standard` / `hd` (dall-e) | | `background` | `auto` / `opaque` / `transparent` (gpt-image のみ) | | `n` | 出力枚数 (1–10) | | `image` (任意) | 接続あり → i2i (`/v1/images/edits`)、接続なし → t2i (`/v1/images/generations`) | 出力: `IMAGE`, `STRING (revised_prompt)` ### モデル別の挙動の自動調整 - `gpt-image-*` の場合: `response_format` パラメータを送らない (gpt-image は受け付けない) - `dall-e-*` の場合: `response_format=b64_json` を明示 - `background` は gpt-image でのみ送信 - `auto` 値はリクエストから除外して API 側のデフォルトに任せる 無効な組み合わせ (例: dall-e-2 で `1536x1024`) は OpenAI 側のエラーとして そのままノードに返ってきます。 ## エラーハンドリング OpenAI のエラー (Moderation / 認証 / 課金枠 / レート制限など) は 種類ごとに分類し、ComfyUI の赤バナーに次のように表示されます: ``` [OpenAI Image t2i] OpenAI Content Moderation (HTTP 400, code=moderation_blocked): Your request was rejected as a result of our safety system. [OpenAI Image i2i] OpenAI Auth Error (HTTP 401, code=invalid_api_key): Incorrect API key provided. [OpenAI Image t2i] OpenAI Rate Limit / Quota (HTTP 429, code=insufficient_quota): You exceeded your current quota. ``` 詳細はコンソールログ (`ComfyUI-OpenAI-Image-API` ロガー) にも WARNING で出力されます。 ## ⚠️ API key の取り扱い注意 - ノードの `api_key` フィールドは UI 上はマスク表示されますが、**保存されたワークフロー JSON にはプレーンテキストで残ります**。 - ワークフローを共有・公開する前に、必ず `api_key` 欄を空にしてください。 ## ライセンス MIT