Handle non-streaming errors as 500

This commit is contained in:
Cohee 2024-08-27 09:27:56 +00:00
parent c45e212b31
commit a0a1847634

View File

@ -1,6 +1,5 @@
const express = require('express'); const express = require('express');
const fetch = require('node-fetch').default; const fetch = require('node-fetch').default;
const Readable = require('stream').Readable;
const { jsonParser } = require('../../express-common'); const { jsonParser } = require('../../express-common');
const { CHAT_COMPLETION_SOURCES, GEMINI_SAFETY, BISON_SAFETY, OPENROUTER_HEADERS } = require('../../constants'); const { CHAT_COMPLETION_SOURCES, GEMINI_SAFETY, BISON_SAFETY, OPENROUTER_HEADERS } = require('../../constants');
@ -213,7 +212,7 @@ async function sendScaleRequest(request, response) {
if (!generateResponse.ok) { if (!generateResponse.ok) {
console.log(`Scale API returned error: ${generateResponse.status} ${generateResponse.statusText} ${await generateResponse.text()}`); console.log(`Scale API returned error: ${generateResponse.status} ${generateResponse.statusText} ${await generateResponse.text()}`);
return response.status(generateResponse.status).send({ error: true }); return response.status(500).send({ error: true });
} }
const generateResponseJson = await generateResponse.json(); const generateResponseJson = await generateResponse.json();
@ -422,15 +421,17 @@ async function sendAI21Request(request, response) {
forwardFetchResponse(generateResponse, response); forwardFetchResponse(generateResponse, response);
} else { } else {
if (!generateResponse.ok) { if (!generateResponse.ok) {
console.log(`AI21 API returned error: ${generateResponse.status} ${generateResponse.statusText} ${await generateResponse.text()}`); const errorText = await generateResponse.text();
return response.status(500).send({ error: true }); console.log(`AI21 API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`);
const errorJson = tryParse(errorText) ?? { error: true };
return response.status(500).send(errorJson);
} }
const generateResponseJson = await generateResponse.json(); const generateResponseJson = await generateResponse.json();
console.log('AI21 response:', generateResponseJson); console.log('AI21 response:', generateResponseJson);
return response.send(generateResponseJson); return response.send(generateResponseJson);
} }
} catch (error) { } catch (error) {
console.log('Error communicating with MistralAI API: ', error); console.log('Error communicating with AI21 API: ', error);
if (!response.headersSent) { if (!response.headersSent) {
response.send({ error: true }); response.send({ error: true });
} else { } else {
@ -495,10 +496,10 @@ async function sendMistralAIRequest(request, response) {
forwardFetchResponse(generateResponse, response); forwardFetchResponse(generateResponse, response);
} else { } else {
if (!generateResponse.ok) { if (!generateResponse.ok) {
console.log(`MistralAI API returned error: ${generateResponse.status} ${generateResponse.statusText} ${await generateResponse.text()}`); const errorText = await generateResponse.text();
// a 401 unauthorized response breaks the frontend auth, so return a 500 instead. prob a better way of dealing with this. console.log(`MistralAI API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`);
// 401s are already handled by the streaming processor and dont pop up an error toast, that should probably be fixed too. const errorJson = tryParse(errorText) ?? { error: true };
return response.status(generateResponse.status === 401 ? 500 : generateResponse.status).send({ error: true }); return response.status(500).send(errorJson);
} }
const generateResponseJson = await generateResponse.json(); const generateResponseJson = await generateResponse.json();
console.log('MistralAI response:', generateResponseJson); console.log('MistralAI response:', generateResponseJson);
@ -595,7 +596,7 @@ async function sendCohereRequest(request, response) {
const errorText = await generateResponse.text(); const errorText = await generateResponse.text();
console.log(`Cohere API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`); console.log(`Cohere API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`);
const errorJson = tryParse(errorText) ?? { error: true }; const errorJson = tryParse(errorText) ?? { error: true };
return response.status(generateResponse.status === 401 ? 500 : generateResponse.status).send(errorJson); return response.status(500).send(errorJson);
} }
const generateResponseJson = await generateResponse.json(); const generateResponseJson = await generateResponse.json();
console.log('Cohere response:', generateResponseJson); console.log('Cohere response:', generateResponseJson);