diff --git a/public/scripts/extensions/stable-diffusion/index.js b/public/scripts/extensions/stable-diffusion/index.js index e9d3a7632..d32874b5c 100644 --- a/public/scripts/extensions/stable-diffusion/index.js +++ b/public/scripts/extensions/stable-diffusion/index.js @@ -2208,10 +2208,9 @@ function processReply(str) { str = str.replaceAll('"', ''); str = str.replaceAll('“', ''); - str = str.replaceAll('.', ','); str = str.replaceAll('\n', ', '); str = str.normalize('NFD'); - str = str.replace(/[^a-zA-Z0-9,:_(){}<>[\]\-']+/g, ' '); + str = str.replace(/[^a-zA-Z0-9\.,:_(){}<>[\]\-']+/g, ' '); str = str.replace(/\s+/g, ' '); // Collapse multiple whitespaces into one str = str.trim(); @@ -2675,8 +2674,7 @@ async function generateTogetherAIImage(prompt, negativePrompt, signal) { }); if (result.ok) { - const data = await result.json(); - return { format: 'jpg', data: data?.output?.choices?.[0]?.image_base64 }; + return await result.json(); } else { const text = await result.text(); throw new Error(text); diff --git a/src/endpoints/backends/chat-completions.js b/src/endpoints/backends/chat-completions.js index 6bf6d9e1b..7bfff462b 100644 --- a/src/endpoints/backends/chat-completions.js +++ b/src/endpoints/backends/chat-completions.js @@ -328,7 +328,7 @@ async function sendMakerSuiteRequest(request, response) { ? (stream ? 'streamGenerateContent' : 'generateContent') : (isText ? 'generateText' : 'generateMessage'); - const generateResponse = await fetch(`${apiUrl}/${apiVersion}/models/${model}:${responseType}?key=${apiKey}${stream ? '&alt=sse' : ''}`, { + const generateResponse = await fetch(`${apiUrl.toString().replace(/\/$/, '')}/${apiVersion}/models/${model}:${responseType}?key=${apiKey}${stream ? '&alt=sse' : ''}`, { body: JSON.stringify(body), method: 'POST', headers: { diff --git a/src/endpoints/stable-diffusion.js b/src/endpoints/stable-diffusion.js index 75cec8c91..457fffcc3 100644 --- a/src/endpoints/stable-diffusion.js +++ b/src/endpoints/stable-diffusion.js @@ -609,10 +609,9 @@ together.post('/generate', jsonParser, async (request, response) => { console.log('TogetherAI request:', request.body); - const result = await fetch('https://api.together.xyz/api/inference', { + const result = await fetch('https://api.together.xyz/v1/images/generations', { method: 'POST', body: JSON.stringify({ - request_type: 'image-model-inference', prompt: request.body.prompt, negative_prompt: request.body.negative_prompt, height: request.body.height, @@ -622,8 +621,6 @@ together.post('/generate', jsonParser, async (request, response) => { n: 1, // Limited to 10000 on playground, works fine with more. seed: request.body.seed >= 0 ? request.body.seed : Math.floor(Math.random() * 10_000_000), - // Don't know if that's supposed to be random or not. It works either way. - sessionKey: getHexString(40), }), headers: { 'Content-Type': 'application/json', @@ -632,19 +629,22 @@ together.post('/generate', jsonParser, async (request, response) => { }); if (!result.ok) { - console.log('TogetherAI returned an error.'); + console.log('TogetherAI returned an error.', { body: await result.text() }); return response.sendStatus(500); } const data = await result.json(); console.log('TogetherAI response:', data); - if (data.status !== 'finished') { - console.log('TogetherAI job failed.'); - return response.sendStatus(500); + const choice = data?.data?.[0]; + let b64_json = choice.b64_json; + + if (!b64_json) { + const buffer = await (await fetch(choice.url)).buffer(); + b64_json = buffer.toString('base64'); } - return response.send(data); + return response.send({ format: 'jpg', data: b64_json }); } catch (error) { console.log(error); return response.sendStatus(500);