feat: add support for bing(beta and WIP)

This commit is contained in:
ikechan8370 2023-02-14 11:24:09 +08:00
parent 83c058ab85
commit 3ff591d205
5 changed files with 91 additions and 19 deletions

View file

@ -23,6 +23,11 @@ export class ChatgptManagement extends plugin {
fnc: 'setAccessToken',
permission: 'master'
},
{
reg: '#chatgpt设置必应token',
fnc: 'setBingAccessToken',
permission: 'master'
},
{
reg: '^#chatgpt切换浏览器$',
fnc: 'useBrowserBasedSolution',
@ -38,6 +43,11 @@ export class ChatgptManagement extends plugin {
fnc: 'useReversedAPIBasedSolution',
permission: 'master'
},
{
reg: '^#chatgpt切换(必应|Bing)$',
fnc: 'useReversedBingSolution',
permission: 'master'
},
{
reg: '^#chatgpt模式帮助$',
fnc: 'modeHelp'
@ -68,9 +78,28 @@ export class ChatgptManagement extends plugin {
return false
}
async setBingAccessToken (e) {
this.setContext('saveBingToken')
await this.reply('请发送Bing Cookie Token.("_U" cookie from bing.com)', true)
return false
}
async saveBingToken () {
if (!this.e.msg) return
let token = this.e.msg
// todo 未知bing token是什么样的有号的可以加个校验在这
await redis.set('CHATGPT:BING_TOKEN', token)
await this.reply('Bing Token设置成功', true)
this.finish('saveBingToken')
}
async saveToken () {
if (!this.e.msg) return
let token = this.e.msg
if (!token.startsWith('ey') || token.length < 20) {
await this.reply('ChatGPT AccessToken格式错误', true)
this.finish('saveToken')
}
await redis.set('CHATGPT:TOKEN', token)
await this.reply('ChatGPT AccessToken设置成功', true)
this.finish('saveToken')
@ -91,12 +120,18 @@ export class ChatgptManagement extends plugin {
await this.reply('已切换到基于第三方Reversed API的解决方案如果已经对话过建议执行`#结束对话`避免引起404错误')
}
async useReversedBingSolution (e) {
await redis.set('CHATGPT:USE', 'bing')
await this.reply('已切换到基于第三方Reversed API的解决方案如果已经对话过务必执行`#结束对话`避免引起404错误')
}
async modeHelp () {
let mode = await redis.get('CHATGPT:USE')
const modeMap = {
browser: '浏览器',
apiReverse: 'API2',
api: 'API'
api: 'API',
bing: '必应'
}
let modeText = modeMap[mode || 'api']
let message = ` API模式和浏览器模式如何选择
@ -104,11 +139,14 @@ export class ChatgptManagement extends plugin {
// eslint-disable-next-line no-irregular-whitespace
API模式会调用OpenAI官方提供的GPT-3 LLM API只需要提供API Key一般情况下该种方式响应速度更快可配置项多且不会像chatGPT官网一样总出现不可用的现象但其聊天效果明显较官网差但注意GPT-3的API调用是收费的新用户有18美元试用金可用于支付价格为$0.0200/1K tokens.(问题和回答加起来算token)
API2模式会调用第三方提供的基于OpenAI text-davinci-002-render模型官网同款的API需要提供ChatGPT的Token效果比单纯的GPT-3 API好很多但同时将Token提供给了第三方API其中风险自行承担
API2模式会调用第三方提供的基于OpenAI text-davinci-002-render模型官网同款的API需要提供ChatGPT的Token效果比单纯的GPT-3 API好很多但同时将Token提供给了第三方API其中风险自行承担#chatgpt设置token
浏览器模式通过在本地启动Chrome等浏览器模拟用户访问ChatGPT网站使得获得和官方以及API2模式一模一样的回复质量同时保证安全性缺点是本方法对环境要求较高需要提供桌面环境和一个可用的代理能够访问ChatGPT的IP地址且响应速度不如API而且高峰期容易无法使用
您可以使用#chatgpt切换浏览器/API/API2来切换到指定模式
必应Bing将调用微软新必应接口进行对话需要在必应网页能够正常使用新必应且设置有效的Bing 登录Cookie方可使用#chatgpt设置必应token
您可以使用#chatgpt切换浏览器/API/API2/Bing来切换到指定模式
当前为${modeText}模式
`
await this.reply(message)