mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
OpenAI: add gpt-image-1 model
This commit is contained in:
@ -930,6 +930,10 @@ const resolutionOptions = {
|
|||||||
sd_res_768x1344: { width: 768, height: 1344, name: '768x1344 (3:4, SDXL)' },
|
sd_res_768x1344: { width: 768, height: 1344, name: '768x1344 (3:4, SDXL)' },
|
||||||
sd_res_1536x640: { width: 1536, height: 640, name: '1536x640 (24:10, SDXL)' },
|
sd_res_1536x640: { width: 1536, height: 640, name: '1536x640 (24:10, SDXL)' },
|
||||||
sd_res_640x1536: { width: 640, height: 1536, name: '640x1536 (10:24, SDXL)' },
|
sd_res_640x1536: { width: 640, height: 1536, name: '640x1536 (10:24, SDXL)' },
|
||||||
|
sd_res_1536x1024: { width: 1536, height: 1024, name: '1536x1024 (3:2, ChatGPT)' },
|
||||||
|
sd_res_1024x1536: { width: 1024, height: 1536, name: '1024x1536 (2:3, ChatGPT)' },
|
||||||
|
sd_res_1024x1792: { width: 1024, height: 1792, name: '1024x1792 (4:7, DALL-E)' },
|
||||||
|
sd_res_1792x1024: { width: 1792, height: 1024, name: '1792x1024 (7:4, DALL-E)' },
|
||||||
};
|
};
|
||||||
|
|
||||||
function onResolutionChange() {
|
function onResolutionChange() {
|
||||||
@ -1947,8 +1951,9 @@ async function loadDrawthingsModels() {
|
|||||||
|
|
||||||
async function loadOpenAiModels() {
|
async function loadOpenAiModels() {
|
||||||
return [
|
return [
|
||||||
{ value: 'dall-e-3', text: 'DALL-E 3' },
|
{ value: 'gpt-image-1', text: 'gpt-image-1' },
|
||||||
{ value: 'dall-e-2', text: 'DALL-E 2' },
|
{ value: 'dall-e-3', text: 'dall-e-3' },
|
||||||
|
{ value: 'dall-e-2', text: 'dall-e-2' },
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3250,9 +3255,11 @@ function getNovelParams() {
|
|||||||
async function generateOpenAiImage(prompt, signal) {
|
async function generateOpenAiImage(prompt, signal) {
|
||||||
const dalle2PromptLimit = 1000;
|
const dalle2PromptLimit = 1000;
|
||||||
const dalle3PromptLimit = 4000;
|
const dalle3PromptLimit = 4000;
|
||||||
|
const gptImgPromptLimit = 32000;
|
||||||
|
|
||||||
const isDalle2 = extension_settings.sd.model === 'dall-e-2';
|
const isDalle2 = extension_settings.sd.model === 'dall-e-2';
|
||||||
const isDalle3 = extension_settings.sd.model === 'dall-e-3';
|
const isDalle3 = extension_settings.sd.model === 'dall-e-3';
|
||||||
|
const isGptImg = extension_settings.sd.model === 'gpt-image-1';
|
||||||
|
|
||||||
if (isDalle2 && prompt.length > dalle2PromptLimit) {
|
if (isDalle2 && prompt.length > dalle2PromptLimit) {
|
||||||
prompt = prompt.substring(0, dalle2PromptLimit);
|
prompt = prompt.substring(0, dalle2PromptLimit);
|
||||||
@ -3262,6 +3269,10 @@ async function generateOpenAiImage(prompt, signal) {
|
|||||||
prompt = prompt.substring(0, dalle3PromptLimit);
|
prompt = prompt.substring(0, dalle3PromptLimit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isGptImg && prompt.length > gptImgPromptLimit) {
|
||||||
|
prompt = prompt.substring(0, gptImgPromptLimit);
|
||||||
|
}
|
||||||
|
|
||||||
let width = 1024;
|
let width = 1024;
|
||||||
let height = 1024;
|
let height = 1024;
|
||||||
let aspectRatio = extension_settings.sd.width / extension_settings.sd.height;
|
let aspectRatio = extension_settings.sd.width / extension_settings.sd.height;
|
||||||
@ -3274,6 +3285,14 @@ async function generateOpenAiImage(prompt, signal) {
|
|||||||
width = 1792;
|
width = 1792;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isGptImg && aspectRatio < 1) {
|
||||||
|
height = 1536;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isGptImg && aspectRatio > 1) {
|
||||||
|
width = 1536;
|
||||||
|
}
|
||||||
|
|
||||||
if (isDalle2 && (extension_settings.sd.width <= 512 && extension_settings.sd.height <= 512)) {
|
if (isDalle2 && (extension_settings.sd.width <= 512 && extension_settings.sd.height <= 512)) {
|
||||||
width = 512;
|
width = 512;
|
||||||
height = 512;
|
height = 512;
|
||||||
@ -3290,7 +3309,8 @@ async function generateOpenAiImage(prompt, signal) {
|
|||||||
n: 1,
|
n: 1,
|
||||||
quality: isDalle3 ? extension_settings.sd.openai_quality : undefined,
|
quality: isDalle3 ? extension_settings.sd.openai_quality : undefined,
|
||||||
style: isDalle3 ? extension_settings.sd.openai_style : undefined,
|
style: isDalle3 ? extension_settings.sd.openai_style : undefined,
|
||||||
response_format: 'b64_json',
|
response_format: isDalle2 || isDalle3 ? 'b64_json' : undefined,
|
||||||
|
moderation: isGptImg ? 'low' : undefined,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
<option value="huggingface">HuggingFace Inference API (serverless)</option>
|
<option value="huggingface">HuggingFace Inference API (serverless)</option>
|
||||||
<option value="nanogpt">NanoGPT</option>
|
<option value="nanogpt">NanoGPT</option>
|
||||||
<option value="novel">NovelAI Diffusion</option>
|
<option value="novel">NovelAI Diffusion</option>
|
||||||
<option value="openai">OpenAI (DALL-E)</option>
|
<option value="openai">OpenAI</option>
|
||||||
<option value="pollinations">Pollinations</option>
|
<option value="pollinations">Pollinations</option>
|
||||||
<option value="vlad">SD.Next (vladmandic)</option>
|
<option value="vlad">SD.Next (vladmandic)</option>
|
||||||
<option value="stability">Stability AI</option>
|
<option value="stability">Stability AI</option>
|
||||||
|
Reference in New Issue
Block a user