OpenAI: add gpt-image-1 model

ed2e6fff6e13f909abb4ce98136fcdf40509e2bb

Cohee <18619528+Cohee1207@users.noreply.github.com>

2 files changed, +24 -4Showing whitespace changes
public/scripts/extensions/stable-diffusion/index.js+23 -3
@@ -930,6 +930,10 @@ const resolutionOptions = {
930930 sd_res_768x1344: { width: 768, height: 1344, name: '768x1344 (3:4, SDXL)' },
931931 sd_res_1536x640: { width: 1536, height: 640, name: '1536x640 (24:10, SDXL)' },
932932 sd_res_640x1536: { width: 640, height: 1536, name: '640x1536 (10:24, SDXL)' },
933+ sd_res_1536x1024: { width: 1536, height: 1024, name: '1536x1024 (3:2, ChatGPT)' },
934+ sd_res_1024x1536: { width: 1024, height: 1536, name: '1024x1536 (2:3, ChatGPT)' },
935+ sd_res_1024x1792: { width: 1024, height: 1792, name: '1024x1792 (4:7, DALL-E)' },
936+ sd_res_1792x1024: { width: 1792, height: 1024, name: '1792x1024 (7:4, DALL-E)' },
933937};
934938
935939function onResolutionChange() {
@@ -1947,8 +1951,9 @@ async function loadDrawthingsModels() {
19471951
19481952async function loadOpenAiModels() {
19491953 return [
19501954 { value: 'dallgpt-eimage-31', text: 'DALLgpt-E 3image-1' },
19511955 { value: 'dall-e-23', text: 'DALLdall-E 2e-3' },
1956+ { value: 'dall-e-2', text: 'dall-e-2' },
19521957 ];
19531958}
19541959
@@ -3250,9 +3255,11 @@ function getNovelParams() {
32503255async function generateOpenAiImage(prompt, signal) {
32513256 const dalle2PromptLimit = 1000;
32523257 const dalle3PromptLimit = 4000;
3258+ const gptImgPromptLimit = 32000;
32533259
32543260 const isDalle2 = extension_settings.sd.model === 'dall-e-2';
32553261 const isDalle3 = extension_settings.sd.model === 'dall-e-3';
3262+ const isGptImg = extension_settings.sd.model === 'gpt-image-1';
32563263
32573264 if (isDalle2 && prompt.length > dalle2PromptLimit) {
32583265 prompt = prompt.substring(0, dalle2PromptLimit);
@@ -3262,6 +3269,10 @@ async function generateOpenAiImage(prompt, signal) {
32623269 prompt = prompt.substring(0, dalle3PromptLimit);
32633270 }
32643271
3272+ if (isGptImg && prompt.length > gptImgPromptLimit) {
3273+ prompt = prompt.substring(0, gptImgPromptLimit);
3274+ }
3275+
32653276 let width = 1024;
32663277 let height = 1024;
32673278 let aspectRatio = extension_settings.sd.width / extension_settings.sd.height;
@@ -3274,6 +3285,14 @@ async function generateOpenAiImage(prompt, signal) {
32743285 width = 1792;
32753286 }
32763287
3288+ if (isGptImg && aspectRatio < 1) {
3289+ height = 1536;
3290+ }
3291+
3292+ if (isGptImg && aspectRatio > 1) {
3293+ width = 1536;
3294+ }
3295+
32773296 if (isDalle2 && (extension_settings.sd.width <= 512 && extension_settings.sd.height <= 512)) {
32783297 width = 512;
32793298 height = 512;
@@ -3290,7 +3309,8 @@ async function generateOpenAiImage(prompt, signal) {
32903309 n: 1,
32913310 quality: isDalle3 ? extension_settings.sd.openai_quality : undefined,
32923311 style: isDalle3 ? extension_settings.sd.openai_style : undefined,
32933312 response_format: isDalle2 || isDalle3 ? 'b64_json' : undefined,
3313+ moderation: isGptImg ? 'low' : undefined,
32943314 }),
32953315 });
32963316
public/scripts/extensions/stable-diffusion/settings.html+1 -1
@@ -45,7 +45,7 @@
4545 <option value="huggingface">HuggingFace Inference API (serverless)</option>
4646 <option value="nanogpt">NanoGPT</option>
4747 <option value="novel">NovelAI Diffusion</option>
4848 <option value="openai">OpenAI (DALL-E)</option>
4949 <option value="pollinations">Pollinations</option>
5050 <option value="vlad">SD.Next (vladmandic)</option>
5151 <option value="stability">Stability AI</option>