OpenAI 画像生成 API を直接呼び出す ComfyUI カスタムノード。 - OpenAIImage: image 入力の有無で t2i / i2i を自動切替 - 未接続: /v1/images/generations (JSON) - 接続あり: /v1/images/edits (multipart) - gpt-image / dall-e のパラメータ違いを自動調整 - API key はノードパラメータで渡す - moderation / auth / quota などのエラーを分類して ComfyUI に表示 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
69 lines
2.9 KiB
Markdown
69 lines
2.9 KiB
Markdown
# 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
|