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 更新说明'
## 🐛 修复
1. 阿里云 oss copy 接口。
1. helper-bot 前缀输出 Error~ 信息
2. 阿里云 oss copy 接口。
## 代码优化
......
......@@ -299,7 +299,7 @@ const ChatBox = ({ type, metadata, onApply, ChatBoxRef, ...props }: HelperBotPro
const abortSignal = new AbortController();
chatController.current = abortSignal;
const { responseText } = await streamFetch({
const response = await streamFetch({
url: '/api/core/chat/helperBot/completions',
data: {
chatId,
......@@ -320,11 +320,9 @@ const ChatBox = ({ type, metadata, onApply, ChatBoxRef, ...props }: HelperBotPro
abortCtrl: abortSignal
});
} catch (error) {
console.error(error);
setChatRecords((state) =>
state.map((item, index) => {
if (index !== state.length - 1 || item.obj !== ChatRoleEnum.AI) return item;
return {
...item,
value: [
......
......@@ -12,16 +12,39 @@ import { pushChatRecords } from '@fastgpt/service/core/chat/HelperBot/utils';
import { getLocale } from '@fastgpt/service/common/middle/i18n';
import { authFrequencyLimit } from '@fastgpt/service/common/system/frequencyLimit/utils';
import { addSeconds } from 'date-fns';
import { getLastInteractiveValue } from '@fastgpt/global/core/workflow/runtime/utils';
import { ChatRoleEnum } from '@fastgpt/global/core/chat/constants';
import { sseErrRes } from '@fastgpt/service/common/response';
import { getLogger, LogCategories } from '@fastgpt/service/common/logger';
export type completionsBody = HelperBotCompletionsParamsType;
async function handler(req: ApiRequestProps<completionsBody>, res: ApiResponseType<any>) {
const { chatId, chatItemId, query, files, metadata } = HelperBotCompletionsParamsSchema.parse(
req.body
);
const logger = getLogger(LogCategories.MODULE.AI.HELPERBOT);
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 });
// Limit
......@@ -29,7 +52,7 @@ async function handler(req: ApiRequestProps<completionsBody>, res: ApiResponseTy
eventId: `${tmbId}-helperBot-completions`,
maxAmount: 10,
expiredTime: addSeconds(new Date(), 60)
}).catch((err) => {
}).catch(() => {
return Promise.reject('Frequency limit exceeded');
});
......@@ -88,6 +111,17 @@ async function handler(req: ApiRequestProps<completionsBody>, res: ApiResponseTy
// inputTokens: result.usage.inputTokens,
// outputTokens: result.usage.outputTokens
// });
} catch (error) {
logger.error('HelperBot completions failed', {
error,
chatId,
chatItemId,
metadata
});
sseErrRes(res, error);
}
res.end();
}
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