feat: 为必应和claude2提供读取文件能力支持

This commit is contained in:
ikechan8370 2023-10-19 20:15:49 +08:00
parent 6c171b32a1
commit 1a95c67130
7 changed files with 369 additions and 46 deletions

View file

@ -7,7 +7,7 @@ import fetch, {
import crypto from 'crypto'
import WebSocket from 'ws'
import { Config, pureSydneyInstruction } from './config.js'
import { formatDate, getMasterQQ, isCN, getUserData } from './common.js'
import { formatDate, getMasterQQ, isCN, getUserData, limitString } from './common.js'
import delay from 'delay'
import moment from 'moment'
import { getProxy } from './proxy.js'
@ -222,8 +222,8 @@ export default class SydneyAIClient {
timeout = Config.defaultTimeoutMs,
firstMessageTimeout = Config.sydneyFirstMessageTimeout,
groupId, nickname, qq, groupName, chats, botName, masterName,
messageType = 'Chat'
messageType = 'Chat',
toSummaryFileContent
} = opts
// if (messageType === 'Chat') {
// logger.warn('该Bing账户token已被限流降级至使用非搜索模式。本次对话AI将无法使用Bing搜索返回的内容')
@ -372,6 +372,10 @@ export default class SydneyAIClient {
let maxConv = Config.maxNumUserMessagesInConversation
const currentDate = moment().format('YYYY-MM-DDTHH:mm:ssZ')
const imageDate = await this.kblobImage(opts.imageUrl)
if (toSummaryFileContent?.content) {
// message = `请不要进行搜索,用户的问题是:"${message}"`
messageType = 'Chat'
}
let argument0 = {
source: 'cib',
optionsSets,
@ -415,10 +419,12 @@ export default class SydneyAIClient {
text: message,
messageType,
userIpAddress: await generateRandomIP(),
timestamp: currentDate
timestamp: currentDate,
privacy: 'Internal'
// messageType: 'SearchQuery'
},
tone: 'Creative',
privacy: 'Internal',
conversationSignature,
participant: {
id: clientId
@ -440,7 +446,7 @@ export default class SydneyAIClient {
}
// simulates document summary function on Edge's Bing sidebar
// unknown character limit, at least up to 7k
if (groupId) {
if (groupId && !toSummaryFileContent?.content) {
context += '注意你现在正在一个qq群里和人聊天现在问你问题的人是' + `${nickname}(${qq})。`
if (Config.enforceMaster && master) {
if (qq === master) {
@ -493,6 +499,17 @@ export default class SydneyAIClient {
messageType: 'Context',
messageId: 'discover-web--page-ping-mriduna-----'
})
} else if (toSummaryFileContent?.content) {
obj.arguments[0].previousMessages.push({
author: 'user',
description: limitString(toSummaryFileContent?.content, 50000, true),
contextType: 'WebPage',
messageType: 'Context',
sourceName: toSummaryFileContent?.name,
sourceUrl: 'file:///C:/Users/turing/Downloads/Documents/' + toSummaryFileContent?.name || 'file.pdf',
// locale: 'und',
// privacy: 'Internal'
})
} else {
obj.arguments[0].previousMessages.push({
author: 'user',