Merge pull request #2838 from SillyTavern/genraw-error-logging Improve error handling of /genraw and /gen
Signed| @@ -3265,7 +3265,7 @@ export async function generateRaw(prompt, api, instructOverride, quietToLoud, sy | |||
| 3265 | } | 3265 | } |
| 3266 | 3266 | ||
| 3267 | if (data.error) { | 3267 | if (data.error) { |
| 3268 | throw new Error(data.error); | 3268 | throw new Error(data.response); |
| 3269 | } | 3269 | } |
| 3270 | 3270 | ||
| 3271 | const message = cleanUpMessage(extractMessageFromData(data), false, false, true); | 3271 | const message = cleanUpMessage(extractMessageFromData(data), false, false, true); |
| @@ -4413,9 +4413,9 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 4413 | generatedPromptCache = ''; | 4413 | generatedPromptCache = ''; |
| 4414 | 4414 | ||
| 4415 | if (data?.response) { | 4415 | if (data?.response) { |
| 4416 | toastr.error(data.response, 'API Error'); | 4416 | toastr.error(data.response, 'API Error', { preventDuplicates: true }); |
| 4417 | } | 4417 | } |
| 4418 | throw data?.response; | 4418 | throw new Error(data?.response); |
| 4419 | } | 4419 | } |
| 4420 | 4420 | ||
| 4421 | //const getData = await response.json(); | 4421 | //const getData = await response.json(); |
| @@ -2241,7 +2241,7 @@ function setEphemeralStopStrings(value) { | |||
| 2241 | async function generateRawCallback(args, value) { | 2241 | async function generateRawCallback(args, value) { |
| 2242 | if (!value) { | 2242 | if (!value) { |
| 2243 | console.warn('WARN: No argument provided for /genraw command'); | 2243 | console.warn('WARN: No argument provided for /genraw command'); |
| 2244 | return; | 2244 | return ''; |
| 2245 | } | 2245 | } |
| 2246 | 2246 | ||
| 2247 | // Prevent generate recursion | 2247 | // Prevent generate recursion |
| @@ -2260,12 +2260,16 @@ async function generateRawCallback(args, value) { | |||
| 2260 | setEphemeralStopStrings(resolveVariable(args?.stop)); | 2260 | setEphemeralStopStrings(resolveVariable(args?.stop)); |
| 2261 | const result = await generateRaw(value, '', isFalseBoolean(args?.instruct), quietToLoud, systemPrompt, length); | 2261 | const result = await generateRaw(value, '', isFalseBoolean(args?.instruct), quietToLoud, systemPrompt, length); |
| 2262 | return result; | 2262 | return result; |
| 2263 | } catch (err) { | ||
| 2264 | console.error('Error on /genraw generation', err); | ||
| 2265 | toastr.error(err.message, 'API Error', { preventDuplicates: true }); | ||
| 2263 | } finally { | 2266 | } finally { |
| 2264 | if (lock) { | 2267 | if (lock) { |
| 2265 | activateSendButtons(); | 2268 | activateSendButtons(); |
| 2266 | } | 2269 | } |
| 2267 | flushEphemeralStoppingStrings(); | 2270 | flushEphemeralStoppingStrings(); |
| 2268 | } | 2271 | } |
| 2272 | return ''; | ||
| 2269 | } | 2273 | } |
| 2270 | 2274 | ||
| 2271 | /** | 2275 | /** |
| @@ -2291,12 +2295,16 @@ async function generateCallback(args, value) { | |||
| 2291 | const name = args?.name; | 2295 | const name = args?.name; |
| 2292 | const result = await generateQuietPrompt(value, quietToLoud, false, '', name, length); | 2296 | const result = await generateQuietPrompt(value, quietToLoud, false, '', name, length); |
| 2293 | return result; | 2297 | return result; |
| 2298 | } catch (err) { | ||
| 2299 | console.error('Error on /gen generation', err); | ||
| 2300 | toastr.error(err.message, 'API Error', { preventDuplicates: true }); | ||
| 2294 | } finally { | 2301 | } finally { |
| 2295 | if (lock) { | 2302 | if (lock) { |
| 2296 | activateSendButtons(); | 2303 | activateSendButtons(); |
| 2297 | } | 2304 | } |
| 2298 | flushEphemeralStoppingStrings(); | 2305 | flushEphemeralStoppingStrings(); |
| 2299 | } | 2306 | } |
| 2307 | return ''; | ||
| 2300 | } | 2308 | } |
| 2301 | 2309 | ||
| 2302 | /** | 2310 | /** |
| @@ -375,7 +375,9 @@ router.post('/generate', jsonParser, async function (request, response) { | |||
| 375 | } | 375 | } |
| 376 | } | 376 | } |
| 377 | } catch (error) { | 377 | } catch (error) { |
| 378 | let value = { error: true, status: error?.status, response: error?.statusText }; | 378 | const status = error?.status ?? error?.code ?? 'UNKNOWN'; |
| 379 | const text = error?.error ?? error?.statusText ?? error?.message ?? 'Unknown error on /generate endpoint'; | ||
| 380 | let value = { error: true, status: status, response: text }; | ||
| 379 | console.log('Endpoint error:', error); | 381 | console.log('Endpoint error:', error); |
| 380 | 382 | ||
| 381 | if (!response.headersSent) { | 383 | if (!response.headersSent) { |