Просмотр исходного кода

Implement getStreamErrorCode()

Shun Miyazawa 1 год назад
Родитель
Сommit
7fe6a5b3e4

+ 2 - 3
apps/app/src/features/openai/interfaces/message-error.ts

@@ -8,7 +8,6 @@ export const StreamErrorCode = {
 
 export type StreamErrorCode = typeof StreamErrorCode[keyof typeof StreamErrorCode];
 
-export const OpenaiStreamErrorMessage = {
-  // eslint-disable-next-line max-len
-  BUDGET_EXCEEDED: 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.',
+export const OpenaiStreamErrorMessageRegExp = {
+  BUDGET_EXCEEDED: /exceeded your current quota/i,
 } as const;

+ 3 - 9
apps/app/src/features/openai/server/routes/message.ts

@@ -11,8 +11,9 @@ import { apiV3FormValidator } from '~/server/middlewares/apiv3-form-validator';
 import type { ApiV3Response } from '~/server/routes/apiv3/interfaces/apiv3-response';
 import loggerFactory from '~/utils/logger';
 
-import { MessageErrorCode, StreamErrorCode, OpenaiStreamErrorMessage } from '../../interfaces/message-error';
+import { MessageErrorCode, type StreamErrorCode } from '../../interfaces/message-error';
 import { openaiClient } from '../services';
+import { getStreamErrorCode } from '../services/getStreamErrorCode';
 
 import { certifyAiService } from './middlewares/certify-ai-service';
 
@@ -90,15 +91,8 @@ export const postMessageHandlersFactory: PostMessageHandlersFactory = (crowi) =>
           if (errorMessage == null) {
             return;
           }
-
           logger.error(errorMessage);
-
-          if (errorMessage === OpenaiStreamErrorMessage.BUDGET_EXCEEDED) {
-            sendError(errorMessage, StreamErrorCode.BUDGET_EXCEEDED);
-            return;
-          }
-
-          sendError(errorMessage);
+          sendError(errorMessage, getStreamErrorCode(errorMessage));
         }
       });
       stream.on('messageDelta', messageDeltaHandler);

+ 13 - 0
apps/app/src/features/openai/server/services/getStreamErrorCode.ts

@@ -0,0 +1,13 @@
+import { StreamErrorCode } from '../../interfaces/message-error';
+
+const OpenaiStreamErrorMessageRegExp = {
+  BUDGET_EXCEEDED: /exceeded your current quota/i, // stream-error-message: "You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors."
+} as const;
+
+export const getStreamErrorCode = (errorMessage: string): StreamErrorCode | undefined => {
+  if (OpenaiStreamErrorMessageRegExp.BUDGET_EXCEEDED.test(errorMessage)) {
+    return StreamErrorCode.BUDGET_EXCEEDED;
+  }
+
+  return;
+};