Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
赵月辉
/
fastgpt-migrated
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Unverified
Commit
ed9e72ec
authored
Mar 10, 2023
by
Archer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
perf: logs
parent
7fb76cde
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
48 additions
and
49 deletions
+48
-49
src/api/request.ts
+2
-2
src/components/Layout/auth.tsx
+1
-1
src/pages/api/chat/chatGpt.ts
+20
-26
src/pages/api/user/tokenLogin.ts
+1
-1
src/pages/chat/index.tsx
+2
-2
src/pages/model/components/ModelEditForm.tsx
+1
-1
src/pages/model/components/Training.tsx
+1
-1
src/pages/model/detail.tsx
+5
-5
src/pages/model/list.tsx
+1
-1
src/service/errorCode.ts
+4
-1
src/service/mongo.ts
+5
-3
src/service/response.ts
+2
-2
src/service/utils/sendEmail.ts
+2
-2
src/utils/tools.ts
+1
-1
No files found.
src/api/request.ts
View file @
ed9e72ec
...
...
@@ -34,7 +34,7 @@ function responseSuccess(response: AxiosResponse<ResponseDataType>) {
*/
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
:
'未知错误'
});
...
...
src/components/Layout/auth.tsx
View file @
ed9e72ec
...
...
@@ -39,7 +39,7 @@ const Auth = ({ children }: { children: JSX.Element }) => {
}
},
onError
(
error
)
{
console
.
error
(
error
);
console
.
log
(
'error->'
,
error
);
router
.
push
(
'/login'
);
toast
();
},
...
...
src/pages/api/chat/chatGpt.ts
View file @
ed9e72ec
...
...
@@ -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
,
'<br/>'
)}
\n\n`
);
AIResponse
+=
content
;
}
catch
(
e
)
{
res
.
end
()
;
}
catch
(
e
rror
)
{
error
;
}
}
};
const
parser
=
createParser
(
onParse
);
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
();
}
}
src/pages/api/user/tokenLogin.ts
View file @
ed9e72ec
...
...
@@ -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
);
...
...
src/pages/chat/index.tsx
View file @
ed9e72ec
...
...
@@ -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
:
'对话出现不知名错误~'
);
};
});
...
...
src/pages/model/components/ModelEditForm.tsx
View file @
ed9e72ec
...
...
@@ -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'
...
...
src/pages/model/components/Training.tsx
View file @
ed9e72ec
...
...
@@ -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
);
}
},
[]);
...
...
src/pages/model/detail.tsx
View file @
ed9e72ec
...
...
@@ -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'
...
...
src/pages/model/list.tsx
View file @
ed9e72ec
...
...
@@ -46,7 +46,7 @@ const ModelList = () => {
shallow
:
true
});
}
catch
(
err
:
any
)
{
console
.
error
(
err
);
console
.
log
(
'error->'
,
err
);
toast
({
title
:
err
.
message
||
'出现一些异常'
,
status
:
'error'
...
...
src/service/errorCode.ts
View file @
ed9e72ec
export
const
openaiError
:
Record
<
string
,
string
>
=
{
context_length_exceeded
:
'内容超出长度'
context_length_exceeded
:
'内容超长了,请重置对话'
,
Unauthorized
:
'API-KEY 不合法'
,
rate_limit_reached
:
'同时访问用户过多,请稍后再试'
,
'Bad Request'
:
'内容太多了~'
};
src/service/mongo.ts
View file @
ed9e72ec
...
...
@@ -12,12 +12,14 @@ export async function connectToDatabase(): Promise<void> {
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
;
}
}
...
...
src/service/response.ts
View file @
ed9e72ec
...
...
@@ -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
({
...
...
src/service/utils/sendEmail.ts
View file @
ed9e72ec
...
...
@@ -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
(
''
);
...
...
src/utils/tools.ts
View file @
ed9e72ec
...
...
@@ -21,7 +21,7 @@ export const useCopyData = () => {
duration
:
1000
});
}
catch
(
error
)
{
console
.
error
(
error
);
console
.
log
(
'error->'
,
error
);
toast
({
title
:
'复制失败'
,
status
:
'error'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment