mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-16 13:27:08 +00:00
fix: 很多功能
This commit is contained in:
parent
a711ec13d7
commit
66905640e4
15 changed files with 242 additions and 29 deletions
117
utils/initDB.js
Normal file
117
utils/initDB.js
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
// initDB.js
|
||||
// 插件初始化的基本数据库内容
|
||||
|
||||
import { BaseClientOptions, Chaite, Channel, ProcessorDTO, SendMessageOption } from 'chaite'
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
import { md5 } from './common.js'
|
||||
|
||||
/**
|
||||
* 默认系统用户
|
||||
* @type {import('chaite').User}
|
||||
*/
|
||||
const systemUser = {
|
||||
username: 'system',
|
||||
user_id: '00000'
|
||||
}
|
||||
|
||||
/**
|
||||
* 注入内置的处理器
|
||||
* @param {string} resourcesDir
|
||||
* @param {import('chaite').ProcessorsManager} processorsManager
|
||||
* @param {'pre' | 'post'} type
|
||||
* @param {string} name
|
||||
* @param {string} description
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async function addEmbeddedProcessor (resourcesDir, processorsManager, type, name, description) {
|
||||
const codeBuf = fs.readFileSync(path.resolve(resourcesDir, name))
|
||||
let code = Buffer.from(codeBuf.toString(), 'base64').toString()
|
||||
await processorsManager.addInstance(new ProcessorDTO({
|
||||
id: md5(name),
|
||||
type,
|
||||
name,
|
||||
uploader: systemUser,
|
||||
description,
|
||||
code
|
||||
}))
|
||||
}
|
||||
|
||||
export async function migrateDatabase () {
|
||||
logger.debug('检查数据库初始化...')
|
||||
const resourcesDir = path.resolve('./plugins/chatgpt-plugin', 'resources/embedded')
|
||||
// 1. 设置初始化的预处理器
|
||||
const processorsManager = Chaite.getInstance().getProcessorsManager()
|
||||
if (!await processorsManager.getInstance('BlackPostProcessor')) {
|
||||
logger.info('初始化内置的屏蔽词前置处理器')
|
||||
await addEmbeddedProcessor(resourcesDir, processorsManager, 'pre', 'BlackPostProcessor', '内置的屏蔽词前置处理器')
|
||||
}
|
||||
if (!await processorsManager.getInstance('BlackPreProcessor')) {
|
||||
logger.info('初始化内置的屏蔽词后置处理器')
|
||||
await addEmbeddedProcessor(resourcesDir, processorsManager, 'post', 'BlackPreProcessor', '内置的屏蔽词前置处理器')
|
||||
}
|
||||
// 2. 设置默认渠道
|
||||
const channelsManager = Chaite.getInstance().getChannelsManager()
|
||||
try {
|
||||
await channelsManager.getChannelByModel('Qwen/Qwen2.5-7B-Instruct')
|
||||
} catch (err) {
|
||||
if (err.message === 'No available channels') {
|
||||
await channelsManager.addInstance(new Channel({
|
||||
id: 'free',
|
||||
name: 'free',
|
||||
models: ['Qwen/Qwen2.5-7B-Instruct'],
|
||||
adapterType: 'openai',
|
||||
type: 'openai',
|
||||
weight: 1,
|
||||
priority: 0,
|
||||
status: 'enabled',
|
||||
options: new BaseClientOptions({
|
||||
features: ['tool', 'chat'],
|
||||
baseUrl: 'https://oneapi.ikechan8370.com/v1',
|
||||
apiKey: 'sk-uIzofH2TIMVu6giK56BeCeD5E98b42EbBe695597B5FeAc68',
|
||||
postProcessorIds: [md5('BlackPreProcessor'), md5('BlackPostProcessor')]
|
||||
}),
|
||||
uploader: systemUser
|
||||
}))
|
||||
logger.info('初始化内置的免费渠道')
|
||||
}
|
||||
}
|
||||
// 3. 设置默认预设
|
||||
let chatPresetManager = Chaite.getInstance().getChatPresetManager()
|
||||
if (!await chatPresetManager.getInstance('default_local')) {
|
||||
await chatPresetManager.addInstance({
|
||||
id: 'default_local',
|
||||
local: true,
|
||||
name: '默认预设',
|
||||
prefix: 'chaite',
|
||||
sendMessageOption: new SendMessageOption({
|
||||
model: 'Qwen/Qwen2.5-7B-Instruct',
|
||||
temperature: 0.8,
|
||||
maxToken: 4096,
|
||||
systemOverride: '你是Chaite,一个在QQ群聊中活跃的AI助手。你可以与群友进行聊天,提供帮助和解答问题。'
|
||||
}),
|
||||
uploader: systemUser
|
||||
})
|
||||
logger.info('初始化内置的默认预设')
|
||||
}
|
||||
|
||||
// 4. 设置默认工具组
|
||||
let toolGroupsManager = Chaite.getInstance().getToolsGroupManager()
|
||||
if (!await toolGroupsManager.getInstance('default_local')) {
|
||||
await toolGroupsManager.addInstance({
|
||||
id: 'default_local',
|
||||
name: '默认工具组',
|
||||
description: '默认工具组仅用于占位,包括全部非禁用的工具',
|
||||
toolIds: [],
|
||||
status: 'enabled',
|
||||
isDefault: true,
|
||||
uploader: systemUser
|
||||
})
|
||||
}
|
||||
|
||||
// 5. 扫描同步工具
|
||||
const toolManager = Chaite.getInstance().getToolsManager()
|
||||
|
||||
logger.info('初始化内置的工具组')
|
||||
logger.debug('数据库初始化完成')
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue