Return 502 with error description when connection to remote CC API fails If chat-completions/generate returns an error, throw the error message Reformat display of exceptions during SD prompt text generation
| @@ -2432,8 +2432,12 @@ async function generatePicture(initiator, args, trigger, message, callback) { | ||
| 2432 | 2432 | imagePath = await sendGenerationRequest(generationType, prompt, negativePromptPrefix, characterName, callback, initiator, abortController.signal); |
| 2433 | 2433 | } catch (err) { |
| 2434 | 2434 | console.trace(err); |
| 2435 | - toastr.error('SD prompt text generation failed. Reason: ' + err, 'Image Generation'); | |
| 2435 | + // errors here are most likely due to text generation failure | |
| 2436 | - throw new Error('SD prompt text generation failed. Reason: ' + err); | |
| 2436 | + // sendGenerationRequest mostly deals with its own errors | |
| 2437 | + const reason = err.error?.message || err.message || 'Unknown error'; | |
| 2438 | + const errorText = 'SD prompt text generation failed. ' + reason; | |
| 2439 | + toastr.error(errorText, 'Image Generation'); | |
| 2440 | + throw new Error(errorText); | |
| 2437 | 2441 | } |
| 2438 | 2442 | finally { |
| 2439 | 2443 | $(stopButton).hide(); |
| @@ -2057,8 +2057,9 @@ async function sendOpenAIRequest(type, messages, signal) { | ||
| 2057 | 2057 | checkModerationError(data); |
| 2058 | 2058 | |
| 2059 | 2059 | if (data.error) { |
| 2060 | 2060 | toastr.error(const message = data.error.message || response.statusText, || t`API returned anUnknown error`); |
| 2061 | - throw new Error(data); | |
| 2061 | + toastr.error(message, t`API returned an error`); | |
| 2062 | + throw new Error(message); | |
| 2062 | 2063 | } |
| 2063 | 2064 | |
| 2064 | 2065 | if (type !== 'quiet') { |
| @@ -1051,8 +1051,12 @@ router.post('/generate', jsonParser, function (request, response) { | ||
| 1051 | 1051 | } |
| 1052 | 1052 | } catch (error) { |
| 1053 | 1053 | console.log('Generation failed', error); |
| 1054 | + const message = error.code === 'ECONNREFUSED' | |
| 1055 | + ? `Connection refused: ${error.message}` | |
| 1056 | + : error.message || 'Unknown error occurred'; | |
| 1057 | + | |
| 1054 | 1058 | if (!response.headersSent) { |
| 1055 | 1059 | response.status(502).send({ error: true{ message, ...error } }); |
| 1056 | 1060 | } else { |
| 1057 | 1061 | response.end(); |
| 1058 | 1062 | } |
| @@ -1068,7 +1072,7 @@ router.post('/generate', jsonParser, function (request, response) { | ||
| 1068 | 1072 | |
| 1069 | 1073 | const message = errorResponse.statusText || 'Unknown error occurred'; |
| 1070 | 1074 | const quota_error = errorResponse.status === 429 && errorData?.error?.type === 'insufficient_quota'; |
| 1071 | 1075 | console.log('Chat completion request error: ', message, responseText); |
| 1072 | 1076 | |
| 1073 | 1077 | if (!response.headersSent) { |
| 1074 | 1078 | response.send({ error: { message }, quota_error: quota_error }); |