From f5b68893d097d466d555eae68216cc23195b3651 Mon Sep 17 00:00:00 2001 From: Wolfsblvt Date: Thu, 12 Sep 2024 22:41:53 +0200 Subject: [PATCH] Improve error handling of /genraw and /gen - /generate TC backend returns more status/error texts - Fix /genraw and /gen returning null/undefined - Logging errors on /genraw if backend throws an error - Fixes #2836 --- public/script.js | 2 +- public/scripts/slash-commands.js | 10 +++++++++- src/endpoints/backends/text-completions.js | 4 +++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/public/script.js b/public/script.js index 0305a68e7..4228d646c 100644 --- a/public/script.js +++ b/public/script.js @@ -3265,7 +3265,7 @@ export async function generateRaw(prompt, api, instructOverride, quietToLoud, sy } if (data.error) { - throw new Error(data.error); + throw new Error(data.response); } const message = cleanUpMessage(extractMessageFromData(data), false, false, true); diff --git a/public/scripts/slash-commands.js b/public/scripts/slash-commands.js index 68f001359..18b04a172 100644 --- a/public/scripts/slash-commands.js +++ b/public/scripts/slash-commands.js @@ -2241,7 +2241,7 @@ function setEphemeralStopStrings(value) { async function generateRawCallback(args, value) { if (!value) { console.warn('WARN: No argument provided for /genraw command'); - return; + return ''; } // Prevent generate recursion @@ -2260,12 +2260,16 @@ async function generateRawCallback(args, value) { setEphemeralStopStrings(resolveVariable(args?.stop)); const result = await generateRaw(value, '', isFalseBoolean(args?.instruct), quietToLoud, systemPrompt, length); return result; + } catch (err) { + console.error('Error on /genraw generation', err); + toastr.error(err.message, 'Error on Generate'); } finally { if (lock) { activateSendButtons(); } flushEphemeralStoppingStrings(); } + return ''; } /** @@ -2291,12 +2295,16 @@ async function generateCallback(args, value) { const name = args?.name; const result = await generateQuietPrompt(value, quietToLoud, false, '', name, length); return result; + } catch (err) { + console.error('Error on /genraw generation', err); + toastr.error(err.message, 'Error on Generate'); } finally { if (lock) { activateSendButtons(); } flushEphemeralStoppingStrings(); } + return ''; } /** diff --git a/src/endpoints/backends/text-completions.js b/src/endpoints/backends/text-completions.js index ba113f2fd..06f9e0325 100644 --- a/src/endpoints/backends/text-completions.js +++ b/src/endpoints/backends/text-completions.js @@ -375,7 +375,9 @@ router.post('/generate', jsonParser, async function (request, response) { } } } catch (error) { - let value = { error: true, status: error?.status, response: error?.statusText }; + const status = error?.status ?? error?.code ?? 'UNKNOWN'; + const text = error?.error ?? error?.statusText ?? error?.message ?? 'Unknown error on /generate endpoint'; + let value = { error: true, status: status, response: text }; console.log('Endpoint error:', error); if (!response.headersSent) {