From ed9e72ec9a55ddf8abe57bbf4a320bfa003fba01 Mon Sep 17 00:00:00 2001 From: Archer <545436317@qq.com> Date: Fri, 10 Mar 2023 22:12:13 +0800 Subject: [PATCH] perf: logs --- src/api/request.ts | 4 +- src/components/Layout/auth.tsx | 2 +- src/pages/api/chat/chatGpt.ts | 50 +++++++++----------- src/pages/api/user/tokenLogin.ts | 2 +- src/pages/chat/index.tsx | 4 +- src/pages/model/components/ModelEditForm.tsx | 2 +- src/pages/model/components/Training.tsx | 2 +- src/pages/model/detail.tsx | 10 ++-- src/pages/model/list.tsx | 2 +- src/service/errorCode.ts | 5 +- src/service/mongo.ts | 8 ++-- src/service/response.ts | 4 +- src/service/utils/sendEmail.ts | 4 +- src/utils/tools.ts | 2 +- 14 files changed, 50 insertions(+), 51 deletions(-) diff --git a/src/api/request.ts b/src/api/request.ts index a5df11ee5..0d3987dd5 100644 --- a/src/api/request.ts +++ b/src/api/request.ts @@ -34,7 +34,7 @@ function responseSuccess(response: AxiosResponse) { */ function checkRes(data: ResponseDataType) { if (data === undefined) { - console.error(data, 'data is empty'); + console.log('error->', data, 'data is empty'); return Promise.reject('服务器异常'); } else if (data.code < 200 || data.code >= 400) { return Promise.reject(data.message); @@ -46,7 +46,7 @@ function checkRes(data: ResponseDataType) { * 响应错误 */ function responseError(err: any) { - console.error('请求错误', err); + console.log('error->', '请求错误', err); if (!err) { return Promise.reject({ message: '未知错误' }); diff --git a/src/components/Layout/auth.tsx b/src/components/Layout/auth.tsx index 5f495b987..682f99a66 100644 --- a/src/components/Layout/auth.tsx +++ b/src/components/Layout/auth.tsx @@ -39,7 +39,7 @@ const Auth = ({ children }: { children: JSX.Element }) => { } }, onError(error) { - console.error(error); + console.log('error->', error); router.push('/login'); toast(); }, diff --git a/src/pages/api/chat/chatGpt.ts b/src/pages/api/chat/chatGpt.ts index 176941553..14dc43a31 100644 --- a/src/pages/api/chat/chatGpt.ts +++ b/src/pages/api/chat/chatGpt.ts @@ -6,6 +6,7 @@ import { getOpenAIApi, authChat } from '@/service/utils/chat'; import { openaiProxy } from '@/service/utils/tools'; import { ChatCompletionRequestMessage, ChatCompletionRequestMessageRoleEnum } from 'openai'; import { ChatItemType } from '@/types/chat'; +import { openaiError } from '@/service/errorCode'; /* 发送提示词 */ export default async function handler(req: NextApiRequest, res: NextApiResponse) { @@ -74,7 +75,10 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) httpsAgent: openaiProxy?.httpsAgent } ); - console.log('response success'); + console.log( + formatPrompts.reduce((sum, item) => sum + item.content.length, 0), + 'response success' + ); let AIResponse = ''; @@ -95,54 +99,44 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) updateTime: Date.now() }); res.write('event: done\ndata: \n\n'); - res.end(); return; } try { const json = JSON.parse(data); - const content: string = json.choices[0].delta.content || '\n'; + const content: string = json?.choices?.[0].delta.content || '\n'; // console.log('content:', content) res.write(`event: responseData\ndata: ${content.replace(/\n/g, '
')}\n\n`); AIResponse += content; - } catch (e) { - res.end(); + } catch (error) { + error; } } }; - const parser = createParser(onParse); - for await (const chunk of chatResponse.data as any) { - parser.feed(decoder.decode(chunk)); + try { + for await (const chunk of chatResponse.data as any) { + const parser = createParser(onParse); + parser.feed(decoder.decode(chunk)); + } + } catch (error) { + console.log(error, '===='); + throw new Error('错误了'); } } catch (err: any) { - let errorText = err; + // console.log('error->', err?.response, '==='); + let errorText = 'OpenAI 服务器访问超时'; if (err.code === 'ECONNRESET') { errorText = '服务器代理出错'; - } else { - switch (err?.response?.data?.error?.code) { - case 'invalid_api_key': - errorText = 'API-KEY不合法'; - break; - case 'context_length_exceeded': - errorText = '内容超长了,请重置对话'; - break; - case 'rate_limit_reached': - errorText = '同时访问用户过多,请稍后再试'; - break; - case null: - errorText = 'OpenAI 服务器访问超时'; - break; - default: - errorText = '服务器异常'; - } + } else if (err?.response?.statusText && openaiError[err.response.statusText]) { + errorText = openaiError[err.response.statusText]; } - console.error(errorText); + console.log('error->', errorText); res.write(`event: serviceError\ndata: ${errorText}\n\n`); - res.end(); // 删除最一条数据库记录, 也就是预发送的那一条 await ChatWindow.findByIdAndUpdate(windowId, { $pop: { content: 1 }, updateTime: Date.now() }); + res.end(); } } diff --git a/src/pages/api/user/tokenLogin.ts b/src/pages/api/user/tokenLogin.ts index 2c959eafd..a1ce44e86 100644 --- a/src/pages/api/user/tokenLogin.ts +++ b/src/pages/api/user/tokenLogin.ts @@ -10,7 +10,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) const { authorization } = req.headers; if (!authorization) { - throw new Error('缺少参数'); + throw new Error('缺少登录凭证'); } const userId = await authToken(authorization); diff --git a/src/pages/chat/index.tsx b/src/pages/chat/index.tsx index c9cc2941d..9c5dc6d37 100644 --- a/src/pages/chat/index.tsx +++ b/src/pages/chat/index.tsx @@ -165,13 +165,13 @@ const Chat = () => { event.addEventListener('serviceError', ({ data: err }) => { clearTimeout(timer); event.close(); - console.error(err, '==='); + console.log('error->', err, '==='); reject(typeof err === 'string' ? err : '对话出现不知名错误~'); }); event.onerror = (err) => { clearTimeout(timer); event.close(); - console.error(err); + console.log('error->', err); reject(typeof err === 'string' ? err : '对话出现不知名错误~'); }; }); diff --git a/src/pages/model/components/ModelEditForm.tsx b/src/pages/model/components/ModelEditForm.tsx index 5c432f75e..65138bbc2 100644 --- a/src/pages/model/components/ModelEditForm.tsx +++ b/src/pages/model/components/ModelEditForm.tsx @@ -34,7 +34,7 @@ const ModelEditForm = ({ model }: { model?: ModelType }) => { status: 'success' }); } catch (err) { - console.error(err); + console.log('error->', err); toast({ title: err as string, status: 'success' diff --git a/src/pages/model/components/Training.tsx b/src/pages/model/components/Training.tsx index 4a4bb1d18..dc4b5cf81 100644 --- a/src/pages/model/components/Training.tsx +++ b/src/pages/model/components/Training.tsx @@ -29,7 +29,7 @@ const Training = ({ model }: { model: ModelType }) => { const res = await getModelTrainings(id); setRecords(res); } catch (error) { - console.error(error); + console.log('error->', error); } }, []); diff --git a/src/pages/model/detail.tsx b/src/pages/model/detail.tsx index aed0f95e4..0116ed741 100644 --- a/src/pages/model/detail.tsx +++ b/src/pages/model/detail.tsx @@ -42,7 +42,7 @@ const ModelDetail = () => { res.security.expiredTime /= 60 * 60 * 1000; setModel(res); } catch (err) { - console.error(err); + console.log('error->', err); } setLoading(false); }, [modelId, setLoading]); @@ -63,7 +63,7 @@ const ModelDetail = () => { }); router.replace('/model/list'); } catch (err) { - console.error(err); + console.log('error->', err); } setLoading(false); }, [setLoading, model, router, toast]); @@ -77,7 +77,7 @@ const ModelDetail = () => { router.push(`/chat?chatId=${chatId}`); } catch (err) { - console.error(err); + console.log('error->', err); } setLoading(false); }, [setLoading, model, router]); @@ -105,7 +105,7 @@ const ModelDetail = () => { title: typeof err === 'string' ? err : '文件格式错误', status: 'error' }); - console.error(err); + console.log('error->', err); } setLoading(false); }, @@ -121,7 +121,7 @@ const ModelDetail = () => { await putModelTrainingStatus(model._id); loadModel(); } catch (error: any) { - console.error(error); + console.log('error->', error); toast({ title: error.message || '更新失败', status: 'error' diff --git a/src/pages/model/list.tsx b/src/pages/model/list.tsx index b2f801e1f..70272009a 100644 --- a/src/pages/model/list.tsx +++ b/src/pages/model/list.tsx @@ -46,7 +46,7 @@ const ModelList = () => { shallow: true }); } catch (err: any) { - console.error(err); + console.log('error->', err); toast({ title: err.message || '出现一些异常', status: 'error' diff --git a/src/service/errorCode.ts b/src/service/errorCode.ts index 0f59b90d8..690f37e3d 100644 --- a/src/service/errorCode.ts +++ b/src/service/errorCode.ts @@ -1,3 +1,6 @@ export const openaiError: Record = { - context_length_exceeded: '内容超出长度' + context_length_exceeded: '内容超长了,请重置对话', + Unauthorized: 'API-KEY 不合法', + rate_limit_reached: '同时访问用户过多,请稍后再试', + 'Bad Request': '内容太多了~' }; diff --git a/src/service/mongo.ts b/src/service/mongo.ts index 0255684a0..08d6e4599 100644 --- a/src/service/mongo.ts +++ b/src/service/mongo.ts @@ -12,12 +12,14 @@ export async function connectToDatabase(): Promise { console.log('connect mongo'); try { global.mongodb = await mongoose.connect(process.env.MONGODB_URI as string, { + bufferCommands: true, dbName: 'doc_gpt', - maxPoolSize: 10, - minPoolSize: 1 + maxPoolSize: 5, + minPoolSize: 1, + maxConnecting: 5 }); } catch (error) { - console.error('mongo connect error'); + console.log('error->', 'mongo connect error'); global.mongodb = null; } } diff --git a/src/service/response.ts b/src/service/response.ts index d733e2f14..58201b365 100644 --- a/src/service/response.ts +++ b/src/service/response.ts @@ -27,8 +27,8 @@ export const jsonRes = ( msg = openaiError[error?.response?.data?.message]; } - console.error(error); - console.error(msg); + console.log('error->', error); + console.log('error->', msg); } res.json({ diff --git a/src/service/utils/sendEmail.ts b/src/service/utils/sendEmail.ts index afca5e053..a54797cb5 100644 --- a/src/service/utils/sendEmail.ts +++ b/src/service/utils/sendEmail.ts @@ -34,7 +34,7 @@ export const sendCode = (email: string, code: string, type: `${EmailTypeEnum}`) }; mailTransport.sendMail(options, function (err, msg) { if (err) { - console.error(err); + console.log('error->', err); reject('邮箱异常'); } else { resolve(''); @@ -53,7 +53,7 @@ export const sendTrainSucceed = (email: string, modelName: string) => { }; mailTransport.sendMail(options, function (err, msg) { if (err) { - console.error(err); + console.log('error->', err); reject('邮箱异常'); } else { resolve(''); diff --git a/src/utils/tools.ts b/src/utils/tools.ts index 787651bb7..5b6ce5445 100644 --- a/src/utils/tools.ts +++ b/src/utils/tools.ts @@ -21,7 +21,7 @@ export const useCopyData = () => { duration: 1000 }); } catch (error) { - console.error(error); + console.log('error->', error); toast({ title: '复制失败', status: 'error'