mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-16 13:27:08 +00:00
feat: 遇到风控直接返回
This commit is contained in:
parent
9377d66b47
commit
211ccba00a
2 changed files with 29 additions and 5 deletions
|
|
@ -136,6 +136,9 @@ export default class SydneyAIClient {
|
|||
} catch (err) {
|
||||
logger.warn(err)
|
||||
retryTimes--
|
||||
if (retryTimes === 0) {
|
||||
throw new Error(err)
|
||||
}
|
||||
}
|
||||
} while (retryTimes > 0)
|
||||
ws.on('error', console.error)
|
||||
|
|
@ -288,7 +291,9 @@ export default class SydneyAIClient {
|
|||
conversation.messages.push(userMessage)
|
||||
|
||||
const ws = await this.createWebSocketConnection()
|
||||
|
||||
if (Config.debug) {
|
||||
logger.mark('sydney websocket constructed successful')
|
||||
}
|
||||
const obj = {
|
||||
arguments: [
|
||||
{
|
||||
|
|
@ -369,7 +374,7 @@ export default class SydneyAIClient {
|
|||
reject('Request aborted')
|
||||
}
|
||||
})
|
||||
|
||||
let apology = false
|
||||
ws.on('message', (data) => {
|
||||
const objects = data.toString().split('')
|
||||
const events = objects.map((object) => {
|
||||
|
|
@ -385,13 +390,28 @@ export default class SydneyAIClient {
|
|||
const event = events[0]
|
||||
switch (event.type) {
|
||||
case 1: {
|
||||
if (stopTokenFound) {
|
||||
if (stopTokenFound || apology) {
|
||||
return
|
||||
}
|
||||
const messages = event?.arguments?.[0]?.messages
|
||||
if (!messages?.length || messages[0].author !== 'bot') {
|
||||
return
|
||||
}
|
||||
const message = messages.length ? messages[messages.length - 1] : null
|
||||
if (messages[0].contentOrigin === 'Apology') {
|
||||
console.log('Apology found')
|
||||
stopTokenFound = true
|
||||
clearTimeout(messageTimeout)
|
||||
clearTimeout(firstTimeout)
|
||||
this.cleanupWebSocketConnection(ws)
|
||||
message.adaptiveCards[0].body[0].text = replySoFar
|
||||
message.text = replySoFar
|
||||
resolve({
|
||||
message,
|
||||
conversationExpiryTime: event?.item?.conversationExpiryTime
|
||||
})
|
||||
return
|
||||
}
|
||||
const updatedText = messages[0].text
|
||||
if (!updatedText || updatedText === replySoFar) {
|
||||
return
|
||||
|
|
@ -400,7 +420,7 @@ export default class SydneyAIClient {
|
|||
const difference = updatedText.substring(replySoFar.length)
|
||||
onProgress(difference)
|
||||
if (updatedText.trim().endsWith(stopToken)) {
|
||||
stopTokenFound = true
|
||||
apology = true
|
||||
// remove stop token from updated text
|
||||
replySoFar = updatedText.replace(stopToken, '').trim()
|
||||
return
|
||||
|
|
@ -409,7 +429,11 @@ export default class SydneyAIClient {
|
|||
return
|
||||
}
|
||||
case 2: {
|
||||
if (apology) {
|
||||
return
|
||||
}
|
||||
clearTimeout(messageTimeout)
|
||||
clearTimeout(firstTimeout)
|
||||
this.cleanupWebSocketConnection(ws)
|
||||
if (event.item?.result?.value === 'InvalidSession') {
|
||||
reject(`${event.item.result.value}: ${event.item.result.message}`)
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ const defaultConfig = {
|
|||
noiseScaleW: 0.668,
|
||||
lengthScale: 1.2,
|
||||
initiativeChatGroups: [],
|
||||
version: 'v2.1.1'
|
||||
version: 'v2.1.2'
|
||||
}
|
||||
const _path = process.cwd()
|
||||
let config = {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue