mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-16 21:37:11 +00:00
feat: 建议回复
This commit is contained in:
parent
dfd1ce469d
commit
3d466f0fee
4 changed files with 30 additions and 6 deletions
17
apps/chat.js
17
apps/chat.js
|
|
@ -1,6 +1,6 @@
|
|||
import plugin from '../../../lib/plugins/plugin.js'
|
||||
import _ from 'lodash'
|
||||
import {Config, defaultOpenAIAPI, defaultOpenAIReverseProxy} from '../utils/config.js'
|
||||
import { Config, defaultOpenAIAPI, defaultOpenAIReverseProxy } from '../utils/config.js'
|
||||
import { v4 as uuid } from 'uuid'
|
||||
import delay from 'delay'
|
||||
import { ChatGPTAPI } from 'chatgpt'
|
||||
|
|
@ -613,7 +613,6 @@ export class chatgpt extends plugin {
|
|||
return false
|
||||
}
|
||||
|
||||
|
||||
let quotemessage = []
|
||||
if (chatMessage?.quote) {
|
||||
chatMessage.quote.forEach(function (item, index) {
|
||||
|
|
@ -631,6 +630,9 @@ export class chatgpt extends plugin {
|
|||
if (quotemessage.length > 0) {
|
||||
this.reply(await makeForwardMsg(this.e, quotemessage))
|
||||
}
|
||||
if (Config.enableSuggestedResponses && chatMessage.suggestedResponses) {
|
||||
this.reply(`建议的回复:\n${chatMessage.suggestedResponses}`)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
await this.reply('你没有配置转语音API或者文字太长了哦,我用文本回复你吧', e.isGroup)
|
||||
|
|
@ -638,6 +640,9 @@ export class chatgpt extends plugin {
|
|||
if (quotemessage.length > 0) {
|
||||
this.reply(await makeForwardMsg(this.e, quotemessage))
|
||||
}
|
||||
if (Config.enableSuggestedResponses && chatMessage.suggestedResponses) {
|
||||
this.reply(`建议的回复:\n${chatMessage.suggestedResponses}`)
|
||||
}
|
||||
}
|
||||
} else if (userSetting.usePicture || (Config.autoUsePicture && response.length > Config.autoUsePictureThreshold)) {
|
||||
// todo use next api of chatgpt to complete incomplete respoonse
|
||||
|
|
@ -648,11 +653,17 @@ export class chatgpt extends plugin {
|
|||
logger.error(err)
|
||||
await this.renderImage(e, use !== 'bing' ? 'content/ChatGPT/index' : 'content/Bing/index', response, prompt)
|
||||
}
|
||||
if (Config.enableSuggestedResponses && chatMessage.suggestedResponses) {
|
||||
this.reply(`建议的回复:\n${chatMessage.suggestedResponses}`)
|
||||
}
|
||||
} else {
|
||||
await this.reply(`${response}`, e.isGroup)
|
||||
if (quotemessage.length > 0) {
|
||||
this.reply(await makeForwardMsg(this.e, quotemessage))
|
||||
}
|
||||
if (Config.enableSuggestedResponses && chatMessage.suggestedResponses) {
|
||||
this.reply(`建议的回复:\n${chatMessage.suggestedResponses}`)
|
||||
}
|
||||
}
|
||||
if (use !== 'bing') {
|
||||
// 移除队列首位,释放锁
|
||||
|
|
@ -793,6 +804,7 @@ export class chatgpt extends plugin {
|
|||
})
|
||||
response.quote = response.details.adaptiveCards?.[0]?.body?.[0]?.text?.replace(/\[\^[0-9]+\^\]/g, '').replace(response.response, '').split('\n')
|
||||
}
|
||||
response.suggestedResponses = response.details.suggestedResponses?.map(s => s.text).join('\n')
|
||||
errorMessage = ''
|
||||
break
|
||||
} catch (error) {
|
||||
|
|
@ -810,6 +822,7 @@ export class chatgpt extends plugin {
|
|||
return {
|
||||
text: response.response,
|
||||
quote: response.quote,
|
||||
suggestedResponses: response.suggestedResponses,
|
||||
conversationId: response.conversationId,
|
||||
clientId: response.clientId,
|
||||
invocationId: response.invocationId,
|
||||
|
|
|
|||
|
|
@ -273,6 +273,12 @@ export function supportGuoba () {
|
|||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'enableSuggestedResponses',
|
||||
label: '是否开启建议回复',
|
||||
bottomHelpMessage: '开启了会像官网上一样,每个问题给出建议的用户问题',
|
||||
component: 'Switch'
|
||||
},
|
||||
{
|
||||
field: 'sydney',
|
||||
label: 'Sydney的设定',
|
||||
|
|
|
|||
|
|
@ -434,9 +434,9 @@ export default class SydneyAIClient {
|
|||
{
|
||||
source: 'cib',
|
||||
optionsSets: [
|
||||
'nlu_direct_response_filter',
|
||||
// 'nlu_direct_response_filter',
|
||||
'deepleo',
|
||||
'disable_emoji_spoken_text',
|
||||
// 'disable_emoji_spoken_text',
|
||||
'responsible_ai_policy_235',
|
||||
'enablemm',
|
||||
toneOption,
|
||||
|
|
@ -504,6 +504,7 @@ export default class SydneyAIClient {
|
|||
const messagePromise = new Promise((resolve, reject) => {
|
||||
let replySoFar = ''
|
||||
let adaptiveCardsSoFar = null
|
||||
let suggestedResponsesSoFar = null
|
||||
let stopTokenFound = false
|
||||
|
||||
const messageTimeout = setTimeout(() => {
|
||||
|
|
@ -584,6 +585,7 @@ export default class SydneyAIClient {
|
|||
console.log({ replySoFar, message })
|
||||
message.adaptiveCards = adaptiveCardsSoFar
|
||||
message.text = replySoFar || message.spokenText
|
||||
message.suggestedResponses = suggestedResponsesSoFar || message.suggestedResponses
|
||||
resolve({
|
||||
message,
|
||||
conversationExpiryTime: event?.item?.conversationExpiryTime
|
||||
|
|
@ -591,6 +593,7 @@ export default class SydneyAIClient {
|
|||
return
|
||||
} else {
|
||||
adaptiveCardsSoFar = message.adaptiveCards
|
||||
suggestedResponsesSoFar = message.suggestedResponses
|
||||
}
|
||||
const updatedText = messages[0].text
|
||||
if (!updatedText || updatedText === replySoFar) {
|
||||
|
|
@ -643,7 +646,8 @@ export default class SydneyAIClient {
|
|||
this.cleanupWebSocketConnection(ws)
|
||||
// message.adaptiveCards[0].body[0].text = replySoFar || message.spokenText
|
||||
message.adaptiveCards = adaptiveCardsSoFar
|
||||
message.response = replySoFar || message.spokenText
|
||||
message.text = replySoFar || message.spokenText
|
||||
message.suggestedResponses = suggestedResponsesSoFar || message.suggestedResponses
|
||||
resolve({
|
||||
message,
|
||||
conversationExpiryTime: event?.item?.conversationExpiryTime
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ const defaultConfig = {
|
|||
sydneyBrainWash: true,
|
||||
sydneyBrainWashStrength: 15,
|
||||
sydneyBrainWashName: 'Sydney',
|
||||
enableSuggestedResponses: true,
|
||||
api: defaultChatGPTAPI,
|
||||
apiBaseUrl: 'https://pimon.d201.cn/backend-api',
|
||||
apiForceUseReverse: false,
|
||||
|
|
@ -64,7 +65,7 @@ const defaultConfig = {
|
|||
initiativeChatGroups: [],
|
||||
enableDraw: true,
|
||||
helloPrompt: '写一段话让大家来找我聊天。类似于“有人找我聊天吗?"这种风格,轻松随意一点控制在20个字以内',
|
||||
version: 'v2.2.0'
|
||||
version: 'v2.2.1'
|
||||
}
|
||||
const _path = process.cwd()
|
||||
let config = {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue