@lobehub/chat
Version:
Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.
71 lines (56 loc) • 2.04 kB
text/typescript
import { AgentRuntimeErrorType, ILobeAgentRuntimeErrorType } from '@/libs/model-runtime';
import { ChatErrorType, ErrorResponse, ErrorType } from '@/types/fetch';
const getStatus = (errorType: ILobeAgentRuntimeErrorType | ErrorType) => {
// InvalidAccessCode / InvalidAzureAPIKey / InvalidOpenAIAPIKey / InvalidZhipuAPIKey ....
if (errorType.toString().includes('Invalid')) return 401;
switch (errorType) {
// TODO: Need to refactor to Invalid OpenAI API Key
case AgentRuntimeErrorType.InvalidProviderAPIKey:
case AgentRuntimeErrorType.NoOpenAIAPIKey: {
return 401;
}
case AgentRuntimeErrorType.ExceededContextWindow:
case ChatErrorType.SubscriptionKeyMismatch:
case ChatErrorType.SystemTimeNotMatchError: {
return 400;
}
case AgentRuntimeErrorType.LocationNotSupportError: {
return 403;
}
case AgentRuntimeErrorType.ModelNotFound: {
return 404;
}
case AgentRuntimeErrorType.InsufficientQuota:
case AgentRuntimeErrorType.QuotaLimitReached: {
return 429;
}
// define the 471~480 as provider error
case AgentRuntimeErrorType.AgentRuntimeError: {
return 470;
}
case AgentRuntimeErrorType.ProviderBizError: {
return 471;
}
// all local provider connection error
case AgentRuntimeErrorType.OllamaServiceUnavailable:
case ChatErrorType.OllamaServiceUnavailable:
case AgentRuntimeErrorType.OllamaBizError: {
return 472;
}
}
return errorType as number;
};
export const createErrorResponse = (
errorType: ErrorType | ILobeAgentRuntimeErrorType,
body?: any,
) => {
const statusCode = getStatus(errorType);
const data: ErrorResponse = { body, errorType };
if (typeof statusCode !== 'number' || statusCode < 200 || statusCode > 599) {
console.error(
`current StatusCode: \`${statusCode}\` .`,
'Please go to `./src/app/api/errorResponse.ts` to defined the statusCode.',
);
}
return new Response(JSON.stringify(data), { status: statusCode });
};