Commit c1cd4678 by YeYuheng Committed by GitHub

helper-error (#6802)

* helper-error

* helper-error

* helper-error

* helper-error

* reset helperbot fe

---------

Co-authored-by: archer <545436317@qq.com>
parent 38a7cb27
...@@ -12,7 +12,8 @@ description: 'FastGPT V4.15.0 更新说明' ...@@ -12,7 +12,8 @@ description: 'FastGPT V4.15.0 更新说明'
## 🐛 修复 ## 🐛 修复
1. 阿里云 oss copy 接口。 1. helper-bot 前缀输出 Error~ 信息
2. 阿里云 oss copy 接口。
## 代码优化 ## 代码优化
......
...@@ -299,7 +299,7 @@ const ChatBox = ({ type, metadata, onApply, ChatBoxRef, ...props }: HelperBotPro ...@@ -299,7 +299,7 @@ const ChatBox = ({ type, metadata, onApply, ChatBoxRef, ...props }: HelperBotPro
const abortSignal = new AbortController(); const abortSignal = new AbortController();
chatController.current = abortSignal; chatController.current = abortSignal;
const { responseText } = await streamFetch({ const response = await streamFetch({
url: '/api/core/chat/helperBot/completions', url: '/api/core/chat/helperBot/completions',
data: { data: {
chatId, chatId,
...@@ -320,11 +320,9 @@ const ChatBox = ({ type, metadata, onApply, ChatBoxRef, ...props }: HelperBotPro ...@@ -320,11 +320,9 @@ const ChatBox = ({ type, metadata, onApply, ChatBoxRef, ...props }: HelperBotPro
abortCtrl: abortSignal abortCtrl: abortSignal
}); });
} catch (error) { } catch (error) {
console.error(error);
setChatRecords((state) => setChatRecords((state) =>
state.map((item, index) => { state.map((item, index) => {
if (index !== state.length - 1 || item.obj !== ChatRoleEnum.AI) return item; if (index !== state.length - 1 || item.obj !== ChatRoleEnum.AI) return item;
return { return {
...item, ...item,
value: [ value: [
......
...@@ -12,16 +12,39 @@ import { pushChatRecords } from '@fastgpt/service/core/chat/HelperBot/utils'; ...@@ -12,16 +12,39 @@ import { pushChatRecords } from '@fastgpt/service/core/chat/HelperBot/utils';
import { getLocale } from '@fastgpt/service/common/middle/i18n'; import { getLocale } from '@fastgpt/service/common/middle/i18n';
import { authFrequencyLimit } from '@fastgpt/service/common/system/frequencyLimit/utils'; import { authFrequencyLimit } from '@fastgpt/service/common/system/frequencyLimit/utils';
import { addSeconds } from 'date-fns'; import { addSeconds } from 'date-fns';
import { getLastInteractiveValue } from '@fastgpt/global/core/workflow/runtime/utils'; import { sseErrRes } from '@fastgpt/service/common/response';
import { ChatRoleEnum } from '@fastgpt/global/core/chat/constants'; import { getLogger, LogCategories } from '@fastgpt/service/common/logger';
export type completionsBody = HelperBotCompletionsParamsType; export type completionsBody = HelperBotCompletionsParamsType;
async function handler(req: ApiRequestProps<completionsBody>, res: ApiResponseType<any>) { async function handler(req: ApiRequestProps<completionsBody>, res: ApiResponseType<any>) {
const { chatId, chatItemId, query, files, metadata } = HelperBotCompletionsParamsSchema.parse( const logger = getLogger(LogCategories.MODULE.AI.HELPERBOT);
req.body const setSSEHeaders = () => {
); const headers: Record<string, string> = {
Connection: 'keep-alive',
'Content-Type': 'text/event-stream;charset=utf-8',
'Access-Control-Allow-Origin': '*',
'X-Accel-Buffering': 'no',
'Cache-Control': 'no-cache, no-transform'
};
Object.entries(headers).forEach(([key, value]) => {
res.setHeader(key, value);
});
};
// keep consistent with SSE APIs, otherwise stream consumer may treat response as non-SSE
setSSEHeaders();
const parseResult = HelperBotCompletionsParamsSchema.safeParse(req.body);
if (!parseResult.success) {
sseErrRes(res, parseResult.error);
return res.end();
}
const { chatId, chatItemId, query, files, metadata } = parseResult.data;
try {
const { teamId, tmbId, userId, isRoot } = await authCert({ req, authToken: true }); const { teamId, tmbId, userId, isRoot } = await authCert({ req, authToken: true });
// Limit // Limit
...@@ -29,7 +52,7 @@ async function handler(req: ApiRequestProps<completionsBody>, res: ApiResponseTy ...@@ -29,7 +52,7 @@ async function handler(req: ApiRequestProps<completionsBody>, res: ApiResponseTy
eventId: `${tmbId}-helperBot-completions`, eventId: `${tmbId}-helperBot-completions`,
maxAmount: 10, maxAmount: 10,
expiredTime: addSeconds(new Date(), 60) expiredTime: addSeconds(new Date(), 60)
}).catch((err) => { }).catch(() => {
return Promise.reject('Frequency limit exceeded'); return Promise.reject('Frequency limit exceeded');
}); });
...@@ -88,6 +111,17 @@ async function handler(req: ApiRequestProps<completionsBody>, res: ApiResponseTy ...@@ -88,6 +111,17 @@ async function handler(req: ApiRequestProps<completionsBody>, res: ApiResponseTy
// inputTokens: result.usage.inputTokens, // inputTokens: result.usage.inputTokens,
// outputTokens: result.usage.outputTokens // outputTokens: result.usage.outputTokens
// }); // });
} catch (error) {
logger.error('HelperBot completions failed', {
error,
chatId,
chatItemId,
metadata
});
sseErrRes(res, error);
}
res.end();
} }
export default NextAPI(handler); export default NextAPI(handler);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment