lobe-chat

Форк
0
/
errorResponse.ts 
58 строк · 1.6 Кб
1
import { AgentRuntimeErrorType, ILobeAgentRuntimeErrorType } from '@/libs/agent-runtime';
2
import { ChatErrorType, ErrorResponse, ErrorType } from '@/types/fetch';
3

4
const getStatus = (errorType: ILobeAgentRuntimeErrorType | ErrorType) => {
5
  // InvalidAccessCode / InvalidAzureAPIKey / InvalidOpenAIAPIKey / InvalidZhipuAPIKey ....
6
  if (errorType.toString().includes('Invalid')) return 401;
7

8
  switch (errorType) {
9
    // TODO: Need to refactor to Invalid OpenAI API Key
10
    case AgentRuntimeErrorType.InvalidProviderAPIKey:
11
    case AgentRuntimeErrorType.NoOpenAIAPIKey: {
12
      return 401;
13
    }
14

15
    case AgentRuntimeErrorType.LocationNotSupportError: {
16
      return 403;
17
    }
18

19
    case AgentRuntimeErrorType.QuotaLimitReached: {
20
      return 429;
21
    }
22

23
    // define the 471~480 as provider error
24
    case AgentRuntimeErrorType.AgentRuntimeError: {
25
      return 470;
26
    }
27

28
    case AgentRuntimeErrorType.ProviderBizError:
29
    case AgentRuntimeErrorType.OpenAIBizError: {
30
      return 471;
31
    }
32

33
    case ChatErrorType.OllamaServiceUnavailable:
34
    case AgentRuntimeErrorType.OllamaBizError: {
35
      return 472;
36
    }
37
  }
38

39
  return errorType as number;
40
};
41

42
export const createErrorResponse = (
43
  errorType: ErrorType | ILobeAgentRuntimeErrorType,
44
  body?: any,
45
) => {
46
  const statusCode = getStatus(errorType);
47

48
  const data: ErrorResponse = { body, errorType };
49

50
  if (typeof statusCode !== 'number' || statusCode < 200 || statusCode > 599) {
51
    console.error(
52
      `current StatusCode: \`${statusCode}\` .`,
53
      'Please go to `./src/app/api/errorResponse.ts` to defined the statusCode.',
54
    );
55
  }
56

57
  return new Response(JSON.stringify(data), { status: statusCode });
58
};
59

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.