mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-03-06 12:47:57 +01:00
API attemped fix
This commit is contained in:
parent
38da3c22c0
commit
79a1b15600
@ -1642,43 +1642,76 @@ async function loadModels() {
|
|||||||
$('#sd_model').val(extension_settings.sd.model).trigger('change');
|
$('#sd_model').val(extension_settings.sd.model).trigger('change');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function generateStabilityImage(prompt, negativePrompt) {
|
async function generateStabilityImage(prompt, negativePrompt) {
|
||||||
let endpoint;
|
const payload = {
|
||||||
|
prompt: prompt,
|
||||||
|
negative_prompt: negativePrompt,
|
||||||
|
width: extension_settings.sd.width,
|
||||||
|
height: extension_settings.sd.height,
|
||||||
|
seed: extension_settings.sd.seed >= 0 ? extension_settings.sd.seed : undefined,
|
||||||
|
style_preset: extension_settings.sd.stability_style_preset,
|
||||||
|
output_format: extension_settings.sd.stability_output_format,
|
||||||
|
};
|
||||||
|
|
||||||
|
const formData = new FormData();
|
||||||
|
for (const [key, value] of Object.entries(payload)) {
|
||||||
|
if (value !== undefined) {
|
||||||
|
formData.append(key, String(value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let apiUrl;
|
||||||
switch (extension_settings.sd.model) {
|
switch (extension_settings.sd.model) {
|
||||||
case 'stable-image-ultra':
|
case 'stable-image-ultra':
|
||||||
endpoint = '/v2beta/stable-image/generate/ultra';
|
apiUrl = 'https://api.stability.ai/v2beta/stable-image/generate/ultra';
|
||||||
break;
|
break;
|
||||||
case 'stable-image-core':
|
case 'stable-image-core':
|
||||||
endpoint = '/v2beta/stable-image/generate/core';
|
apiUrl = 'https://api.stability.ai/v2beta/stable-image/generate/core';
|
||||||
break;
|
break;
|
||||||
case 'stable-diffusion-3':
|
case 'stable-diffusion-3':
|
||||||
endpoint = '/v2beta/stable-image/generate/sd3';
|
apiUrl = 'https://api.stability.ai/v2beta/stable-image/generate/sd3';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Error('Invalid Stability AI model selected');
|
throw new Error('Invalid Stability AI model selected');
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = await fetch('/api/sd/stability/generate', {
|
try {
|
||||||
|
const response = await fetch(apiUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: getRequestHeaders(),
|
headers: {
|
||||||
body: JSON.stringify({
|
'Authorization': `Bearer ${extension_settings.sd.stability_key}`,
|
||||||
key: extension_settings.sd.stability_key,
|
'Accept': 'image/*',
|
||||||
endpoint: endpoint,
|
},
|
||||||
prompt: prompt,
|
body: formData,
|
||||||
negative_prompt: negativePrompt,
|
|
||||||
seed: extension_settings.sd.seed >= 0 ? extension_settings.sd.seed : undefined,
|
|
||||||
style_preset: extension_settings.sd.stability_style_preset,
|
|
||||||
aspect_ratio: extension_settings.sd.stability_aspect_ratio,
|
|
||||||
}),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (result.ok) {
|
if (!response.ok) {
|
||||||
const data = await result.json();
|
const errorText = await response.text();
|
||||||
return { format: extension_settings.sd.stability_output_format, data: data.image };
|
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
||||||
} else {
|
|
||||||
const text = await result.text();
|
|
||||||
throw new Error(text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const arrayBuffer = await response.arrayBuffer();
|
||||||
|
const base64Image = arrayBufferToBase64(arrayBuffer);
|
||||||
|
|
||||||
|
return {
|
||||||
|
format: extension_settings.sd.stability_output_format,
|
||||||
|
data: base64Image,
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error generating image with Stability AI:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function arrayBufferToBase64(buffer) {
|
||||||
|
let binary = '';
|
||||||
|
const bytes = new Uint8Array(buffer);
|
||||||
|
const len = bytes.byteLength;
|
||||||
|
for (let i = 0; i < len; i++) {
|
||||||
|
binary += String.fromCharCode(bytes[i]);
|
||||||
|
}
|
||||||
|
return btoa(binary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user