|
|
@@ -11,7 +11,7 @@ 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 } from '../../interfaces/message-error';
|
|
|
+import { MessageErrorCode, StreamErrorCode } from '../../interfaces/message-error';
|
|
|
import { openaiClient } from '../services';
|
|
|
|
|
|
import { certifyAiService } from './middlewares/certify-ai-service';
|
|
|
@@ -80,6 +80,18 @@ export const postMessageHandlersFactory: PostMessageHandlersFactory = (crowi) =>
|
|
|
res.write(`data: ${JSON.stringify(delta)}\n\n`);
|
|
|
};
|
|
|
|
|
|
+ const sendError = (code: StreamErrorCode, message: string) => {
|
|
|
+ res.write(`error: ${JSON.stringify({ code, message })}`);
|
|
|
+ };
|
|
|
+
|
|
|
+ stream.on('event', (delta) => {
|
|
|
+ if (delta.event === 'thread.run.failed') {
|
|
|
+ if (delta.data.last_error?.code === StreamErrorCode.RATE_LIMIT_EXCEEDED) {
|
|
|
+ logger.error(delta.data.last_error.message);
|
|
|
+ sendError(StreamErrorCode.RATE_LIMIT_EXCEEDED, delta.data.last_error.message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
stream.on('messageDelta', messageDeltaHandler);
|
|
|
stream.once('messageDone', () => {
|
|
|
stream.off('messageDelta', messageDeltaHandler);
|