Don't stream events if the API returned a 4xx code
This commit is contained in:
parent
5540c165cf
commit
cdcd913805
|
@ -154,6 +154,24 @@ export function getKoboldGenerationData(finalPrompt, settings, maxLength, maxCon
|
|||
return generate_data;
|
||||
}
|
||||
|
||||
function tryParseStreamingError(response, decoded) {
|
||||
try {
|
||||
const data = JSON.parse(decoded);
|
||||
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (data.error) {
|
||||
toastr.error(data.error.message || response.statusText, 'API returned an error');
|
||||
throw new Error(data);
|
||||
}
|
||||
}
|
||||
catch {
|
||||
// No JSON. Do nothing.
|
||||
}
|
||||
}
|
||||
|
||||
export async function generateKoboldWithStreaming(generate_data, signal) {
|
||||
const response = await fetch('/generate', {
|
||||
headers: getRequestHeaders(),
|
||||
|
@ -161,6 +179,10 @@ export async function generateKoboldWithStreaming(generate_data, signal) {
|
|||
method: 'POST',
|
||||
signal: signal,
|
||||
});
|
||||
if (!response.ok) {
|
||||
tryParseStreamingError(response, await response.body.text());
|
||||
throw new Error(`Got response status ${response.status}`);
|
||||
}
|
||||
const eventStream = new EventSourceStream();
|
||||
response.body.pipeThrough(eventStream);
|
||||
const reader = eventStream.readable.getReader();
|
||||
|
|
|
@ -664,6 +664,24 @@ export function adjustNovelInstructionPrompt(prompt) {
|
|||
return stripedPrompt;
|
||||
}
|
||||
|
||||
function tryParseStreamingError(response, decoded) {
|
||||
try {
|
||||
const data = JSON.parse(decoded);
|
||||
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (data.error) {
|
||||
toastr.error(data.error.message || response.statusText, 'API returned an error');
|
||||
throw new Error(data);
|
||||
}
|
||||
}
|
||||
catch {
|
||||
// No JSON. Do nothing.
|
||||
}
|
||||
}
|
||||
|
||||
export async function generateNovelWithStreaming(generate_data, signal) {
|
||||
generate_data.streaming = nai_settings.streaming_novel;
|
||||
|
||||
|
@ -673,6 +691,10 @@ export async function generateNovelWithStreaming(generate_data, signal) {
|
|||
method: 'POST',
|
||||
signal: signal,
|
||||
});
|
||||
if (!response.ok) {
|
||||
tryParseStreamingError(response, await response.body.text());
|
||||
throw new Error(`Got response status ${response.status}`);
|
||||
}
|
||||
const eventStream = new EventSourceStream();
|
||||
response.body.pipeThrough(eventStream);
|
||||
const reader = eventStream.readable.getReader();
|
||||
|
@ -684,10 +706,6 @@ export async function generateNovelWithStreaming(generate_data, signal) {
|
|||
if (done) return;
|
||||
|
||||
const data = JSON.parse(value.data);
|
||||
if (data.message && data.statusCode >= 400) {
|
||||
toastr.error(data.message, 'Error');
|
||||
throw new Error(data);
|
||||
}
|
||||
|
||||
if (data.token) {
|
||||
text += data.token;
|
||||
|
|
|
@ -1565,6 +1565,11 @@ async function sendOpenAIRequest(type, messages, signal) {
|
|||
signal: signal,
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
tryParseStreamingError(response, await response.body.text());
|
||||
throw new Error(`Got response status ${response.status}`);
|
||||
}
|
||||
|
||||
if (stream) {
|
||||
const eventStream = new EventSourceStream();
|
||||
response.body.pipeThrough(eventStream);
|
||||
|
|
|
@ -476,6 +476,12 @@ async function generateTextGenWithStreaming(generate_data, signal) {
|
|||
method: 'POST',
|
||||
signal: signal,
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
tryParseStreamingError(response, await response.body.text());
|
||||
throw new Error(`Got response status ${response.status}`);
|
||||
}
|
||||
|
||||
const eventStream = new EventSourceStream();
|
||||
response.body.pipeThrough(eventStream);
|
||||
const reader = eventStream.readable.getReader();
|
||||
|
|
Loading…
Reference in New Issue