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 | imagePath = await sendGenerationRequest(generationType, prompt, negativePromptPrefix, characterName, callback, initiator, abortController.signal); | 2432 | imagePath = await sendGenerationRequest(generationType, prompt, negativePromptPrefix, characterName, callback, initiator, abortController.signal); |
| 2433 | } catch (err) { | 2433 | } catch (err) { |
| 2434 | console.trace(err); | 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 | finally { | 2442 | finally { |
| 2439 | $(stopButton).hide(); | 2443 | $(stopButton).hide(); |
| @@ -2057,8 +2057,9 @@ async function sendOpenAIRequest(type, messages, signal) { | |||
| 2057 | checkModerationError(data); | 2057 | checkModerationError(data); |
| 2058 | 2058 | ||
| 2059 | if (data.error) { | 2059 | if (data.error) { |
| 2060 | toastr.error(data.error.message || response.statusText, t`API returned an error`); | 2060 | const message = data.error.message || response.statusText || t`Unknown 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 | if (type !== 'quiet') { | 2065 | if (type !== 'quiet') { |
| @@ -1051,8 +1051,12 @@ router.post('/generate', jsonParser, function (request, response) { | |||
| 1051 | } | 1051 | } |
| 1052 | } catch (error) { | 1052 | } catch (error) { |
| 1053 | console.log('Generation failed', error); | 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 | if (!response.headersSent) { | 1058 | if (!response.headersSent) { |
| 1055 | response.send({ error: true }); | 1059 | response.status(502).send({ error: { message, ...error } }); |
| 1056 | } else { | 1060 | } else { |
| 1057 | response.end(); | 1061 | response.end(); |
| 1058 | } | 1062 | } |
| @@ -1068,7 +1072,7 @@ router.post('/generate', jsonParser, function (request, response) { | |||
| 1068 | 1072 | ||
| 1069 | const message = errorResponse.statusText || 'Unknown error occurred'; | 1073 | const message = errorResponse.statusText || 'Unknown error occurred'; |
| 1070 | const quota_error = errorResponse.status === 429 && errorData?.error?.type === 'insufficient_quota'; | 1074 | const quota_error = errorResponse.status === 429 && errorData?.error?.type === 'insufficient_quota'; |
| 1071 | console.log(message, responseText); | 1075 | console.log('Chat completion request error: ', message, responseText); |
| 1072 | 1076 | ||
| 1073 | if (!response.headersSent) { | 1077 | if (!response.headersSent) { |
| 1074 | response.send({ error: { message }, quota_error: quota_error }); | 1078 | response.send({ error: { message }, quota_error: quota_error }); |